功能说明: 利用中断按键,每按1次亮1个LED灯,8次后全亮,第9次全灭,第10次又从第1个LED灯开始亮,周而复始循环点亮。
单片机源程序: - #include<reg51.h>
- #include<intrins.h>
- #define ledP1
- sbit key =P3^2;
- int i,a=0;
- chartable[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
- voiddelay_ms(unsigned int xms) //延时函数
- {
- unsigned int i,j;
- for(i=xms;i>0;i--)
- {
- for(j=124;j>0;j--);
- }
- }
- voidmain() //主函数
- {
- EA = 1;
- EX0 = 1;
- TCON = 0x01;
- while(1)
- {
- if(i<=8)
- {
- i=a;
- led=table;
- delay_ms(500); //延时0.5s
- }
- }
- }
- voidExternal_Interrupt_0() interrupt 0
- {
- if(key==0)
- {
- delay_ms(50); //延时50ms,消抖
- if(key==0) //再判断是否按下
- {
- while(!key); //松手检测
- a++;
- if(a==9)
- { a=0; }
- }
- }
- }
复制代码
|