C51 编程实现按键控制流水灯状态切换
#include <REGX51.H>
char i=100; char count=0; //按键计数器 char led_state=0; //流水灯状态
void main () { TMOD=0x01; TH0=0xee; TL0=0x00; P1=0x00; P3=0xff; //P3.5设置为输入 EA=1; ET0=1; IT0=1; //P3.5设置为外部中断触发方式为下降沿 TR0=1; while(1); { ; } }
void timer0() interrupt 1 { TH0=0xee; TL0=0x00; i--; if(i<=0) { switch(led_state) { case 0: P1=0x01; break; case 1: P1=0x02; break; case 2: P1=0x04; break; case 3: P1=0x08; break; case 4: P1=0x10; break; case 5: P1=0x20; break; case 6: P1=0x40; break; case 7: P1=0x80; break; } led_state++; if(led_state>=8) { led_state=0; } i=100; } }
void external_interrupt() interrupt 0 { count++; if(count>=5) //按键按下5次 { count=0; led_state++; if(led_state>=8) { led_state=0; } } }
原文地址: https://www.cveoy.top/t/topic/oegh 著作权归作者所有。请勿转载和采集!