51单片机 INT0中断3位计数+Proteus仿真
51单片机 INT0中断3位计数+Proteus仿真
- ✨Proteus仿真演示

📝功能说明
📑通过利用51单片机的外部中断功能,进行计数操作,然后通过数码管进行显示。
🚩实例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| /\* \*INT0中断计数\* \*/ #include <reg51.h> typedef unsigned char uint8; typedef unsigned int uint16;
sbit K2 = P3^5;
void delay(uint16 x) { uint16 i,j; for(i = x; i > 0; i --) for(j = 114; j > 0; j --); }
code uint8 LED_CODE[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF};
uint8 Buffer_Counts[]={0,0,0};
uint16 Count=0;
void Show\_Counts() { uint8 i; Buffer_Counts[2] = Count / 100; Buffer_Counts[1] = Count % 100 /10; Buffer_Counts[0] = Count % 10; if(Buffer_Counts[2] == 0) { Buffer_Counts[2] = 10; if(Buffer_Counts[1] == 0) Buffer_Counts[1] = 10; } for(i = 0;i < 3;i ++) { P0 = 0xFF; P2 = 0x80 >> i; P0 = LED_CODE[Buffer_Counts[i]]; delay(2); } }
void main() { IP = 0x01; IT0 = 1; IE = 0x81; while(1) { if(K2 == 0) Count = 0; Show\_Counts(); } }
void ISR0() interrupt 0 { Count++; }
|
📚程序源码和仿真文件
1 2 3
| 链接:https://pan.baidu.com/s/15EsZArM3p19O9BCzpSaLBA 提取码:v21i
|
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!