注释#include<reg52.h> #define uchar unsigned char #define uint unsigned int unsigned char code table[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delay(unsigned int z) { unsigned int i,j; for(i=0;i<z;i++) for(j=0;j<1000;j++); } void main() { uint a; while(1) { EA=1; EX0=1; EX1=1; IT0=1; IT1=1; PX0=0; PX1=1; for(a=0;a<8;a++) { P1=table[a]; delay(50); } } } void int0_isr(void) interrupt 0 using 0 { uint b; for(b=0;b<3;b++) { P1=0xff; delay(50); P1=0x00; delay(50); } EX0=0; } void int1_isr(void) interrupt 2 using 1 { uint c; for(c=0;c<3;c++) { P1=0x0f; delay(100); P1=0xf0; delay(100); } EX1=0; }
时间: 2023-10-14 15:06:06 浏览: 482
这段代码是针对 8051 单片机的程序,下面是对其中每个部分的注释:
```c
#include<reg52.h> // 引入 8051 开发板的头文件
#define uchar unsigned char // 定义 uchar 为 unsigned char 类型
#define uint unsigned int // 定义 uint 为 unsigned int 类型
unsigned char code table[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; // 定义一个包含 8 个元素的常量数组,表示 LED 灯阵列的显示状态
void delay(unsigned int z) { // 延时函数,参数 z 表示延时的时间
unsigned int i,j;
for(i=0;i<z;i++) // 嵌套两个循环,实现延时
for(j=0;j<1000;j++);
}
void main() { // 主函数
uint a;
while(1) { // 无限循环
EA=1; // 开启总中断
EX0=1; // 开启外部中断 0
EX1=1; // 开启外部中断 1
IT0=1; // 设置外部中断 0 的触发方式为下降沿触发
IT1=1; // 设置外部中断 1 的触发方式为下降沿触发
PX0=0; // 设置外部中断 0 的优先级为低
PX1=1; // 设置外部中断 1 的优先级为高
for(a=0;a<8;a++) { // 循环显示 LED 灯阵列
P1=table[a];
delay(50);
}
}
}
void int0_isr(void) interrupt 0 using 0 { // 外部中断 0 的中断处理函数
uint b;
for(b=0;b<3;b++) { // 循环显示闪烁的白色十字
P1=0xff;
delay(50);
P1=0x00;
delay(50);
}
EX0=0; // 关闭外部中断 0
}
void int1_isr(void) interrupt 2 using 1 { // 外部中断 1 的中断处理函数
uint c;
for(c=0;c<3;c++) { // 循环显示闪烁的蓝色十字
P1=0x0f;
delay(100);
P1=0xf0;
delay(100);
}
EX1=0; // 关闭外部中断 1
}
```
总体来说,这个程序是在单片机上实现了一个 LED 灯阵列的显示程序,并且通过外部中断实现了触发闪烁的白色和蓝色十字的功能。
阅读全文