以下是一个使用 C51 语言实现上述功能的示例代码: ```c #include <reg51.h> #define uchar unsigned char #define uint unsigned int // 延时函数 void delay_ms(uint ms) { uint i, j; for (i = 0; i < ms; i++) for (j = 0; j < 110; j++); } void int1_isr() interrupt 2 { uchar temp; temp = P1; P2 = temp; uchar i; for (i = 0; i < 8; i++) { if ((temp & (0x01 << i))!= 0) { P2 ^= (0x01 << i); delay_ms(500); P2 ^= (0x01 << i); delay_ms(500); P2 ^= (0x01 << i); delay_ms(500); P2 ^= (0x01 << i); delay_ms(500); P2 ^= (0x01 << i); delay_ms(500); } } } void main() { P2 = 0x00; IT1 = 1; // 外部中断 1 下降沿触发 EX1 = 1; // 使能外部中断 1 EA = 1; // 开总中断 while (1); } ``` 在上述代码中,`int1_isr` 是外部中断 1 的服务函数,用于处理中断请求。在主函数中,进行了中断的初始化设置,并进入一个无限循环等待中断的发生。 [2024-11-11 12:43:19 | AI写代码神器 | 421点数解答]