注释下面代码#include <REGX52.H> sbit wx = P2^7; sbit dx = P2^6; sbit LED0 = P1^0; unsigned char code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; void delay(unsigned int i) { unsigned int j,k; for(j=i; j>0; j--) for(k=114; k>0; k--); } void SMG_Display(unsigned char c) { P0 = table[c]; dx = 1; dx = 0; P0 = 0x7F; wx = 1; wx = 0; } void main() { IT0=0; EX0=1; IT1=0; EX1=1; EA=1; while(1) P3=0x0F; } void INT0_Key() interrupt 0 { unsigned char key,temp; EA=0; P3 = 0xFB; temp = P3; if(temp != 0xFB) { delay(50); temp = P3; if(temp != 0xFB) { switch(temp) { case 0xEB: key = 8; break; case 0xDB: key = 9; break; case 0xBB: key = 10; break; case 0x7B: key = 11; break; } SMG_Display(key); } } P3=0x0F; EA=1; } void INT1_Key() interrupt 2 { unsigned char key,temp; EA=0; P3 = 0xF7; temp = P3; if(temp != 0xF7) { delay(50); if(temp != 0xF7) { temp = P3; switch(temp) { case 0xE7: key = 12; break; case 0xD7: key = 13; break; case 0xB7: key = 14; break; case 0x77: key = 15; break; } SMG_Display(key); } } P3=0x0F; EA=1; }
时间: 2024-04-27 19:23:19 浏览: 200
单片机reg52.h
4星 · 用户满意度95%
这段代码是8051单片机的程序,主要实现了一个简单的数码管显示数字的功能,同时实现了对外部中断0和中断1的响应。其中,sbit关键字表示声明一个单片机的引脚,LED0表示P1口的第0个引脚,wx和dx分别表示P2口的第7和第6个引脚。code关键字表示声明一个常量数组,table数组存储了数码管显示0~F的编码。delay函数实现延时,SMG_Display函数实现了数码管的显示,INT0_Key和INT1_Key函数分别响应了外部中断0和中断1,实现了按键的检测和数字的显示。整个程序的执行流程是在主函数while循环中,不断读取P3口的值,等待外部中断的触发。
阅读全文