目录
1、新建工程
2、关闭蜂鸣器继电器等
3、点亮LED
与51单片机开发时一样,建立一个工程文件。
这里建议可以吸取学习stm32时,原子哥的方式新建工程。
如上图所示,将工程文件和main.c放在USER文件夹中,然后编译所产生的文件均在OBJ文件夹中,其余外设单独创建C文件,并且在HARDWARE中新建文件夹单独存放,SYSTEM中存放sys.c,用于定义引脚以及一些系统程序。
这样一来,一切变得尽然有序。
首先,在我们拿到题目的时候都会让我们先关闭蜂鸣器,继电器等无关外设。
我们可以看原理图,LED、数码管、以及驱动芯片2003所控制的外设均由P25、P26、P27三个I/O口连接标号为U24的74LS138控制,74LS138译码之后经过一个标号为U25的74HC02或非门控制,74HC02的输出连接四个74LS573的输入使能端。或非门的一端连接标号为J13的排针,我在这里使用的是IO模式,所以就是或非门的一端接GND,为低电平。而74LS573的输入使能端为高有效。每个外设的数据输入为P0口控制。
所以关闭外设就是打开每一个外设的片选74LS573,使其输入使能端为高电平,然后写入无效数据。
根据74HC02的真值表
74HC138的真值表
所以打开每个74LS573就是74HC138的相应输出端输出低电平。
再看每个外设,LED是单片机给出低电平时点亮,数码管是共阳的,所以也是给出低电平点亮。由于2003是反向输出,所以蜂鸣器和继电器是单片机给出高电平工作。
在这里进行位操作要方便很多。
注意:置0用与&,置1用或|
如下列代码所示:
void All_Init(void)
{
P2 = (P2 & 0x1f) | 0x80; //打开Y4C(LED)
P0 = 0xff; //关闭LED
P2 = (P2 & 0x1f) | 0xe0; //打开Y7C(数码管)
P0 = 0xff; //关闭数码管
P2 = (P2 & 0x1f) | 0xa0; //打开Y5C
P0 = 0x00; //关闭蜂鸣器、继电器
}
以上就是上电外设初始化的全部内容。
根据上述内容分析
点亮LED仅需再次打开Y4C,然后P0输入信号,使得LED点亮。
点亮L1
//点亮LED
void Led_illume(uchar dat)
{
P2 = (P2 & 0x1f) | 0x80; //打开Y4C(LED)
P0 = dat; //关闭LED
}
下载程序时,需要勾选STC-ISP上几个选项
设置内部R/C震荡时钟
取消复位脚作为I/O口