解释一下这段代码void main() { unsigned char i=0; EA=1; EX1=1; IT1=1; while(1) { if(key==1) { DataPort=WM[i]; LATCH2=1; LATCH2=0; DataPort=ziMa[i]; LATCH1=1; LATCH1=0; Delay(20); i++; if(8==i)i=0; } if(key==0) { DataPort=WM[i]; LATCH2=1; LATCH2=0; DataPort=DuanMa[i]; LATCH1=1; LATCH1=0; Delay(20); i++; if(8==i)i=0; } } }
时间: 2024-04-28 17:20:48 浏览: 17
这段代码是8051单片机的程序,主要实现的是控制数码管显示。具体解释如下:
1. 首先定义了一个无符号字符型变量i,并初始化为0。
2. 打开全局中断开关EA,开启外部中断1的中断响应EX1,设置外部中断1为下降沿触发模式IT1。
3. 进入一个无限循环while(1)。
4. 如果按键key被按下(即key==1),就执行以下操作:
- 将WM[i]的值输出到DataPort口上;
- 先将LATCH2置1,然后再置0,以产生锁存时序信号,控制锁存器将DataPort口上的数据锁存;
- 将ziMa[i]的值输出到DataPort口上;
- 先将LATCH1置1,然后再置0,以产生锁存时序信号,控制锁存器将DataPort口上的数据锁存;
- 延时20ms;
- i自增1,如果i已经等于8,则将i重新赋值为0。
5. 如果按键key未被按下(即key==0),就执行以下操作:
- 将WM[i]的值输出到DataPort口上;
- 先将LATCH2置1,然后再置0,以产生锁存时序信号,控制锁存器将DataPort口上的数据锁存;
- 将DuanMa[i]的值输出到DataPort口上;
- 先将LATCH1置1,然后再置0,以产生锁存时序信号,控制锁存器将DataPort口上的数据锁存;
- 延时20ms;
- i自增1,如果i已经等于8,则将i重新赋值为0。
6. 循环执行以上步骤,实现数码管的动态显示。
注:其中的WM数组和ziMa数组分别存放了数码管的位码和字码,DuanMa数组存放了数码管的段码。LATCH1和LATCH2是控制锁存器的控制信号,DataPort则是数码管的数据口。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)