单片机中断实验2(按下松开后开始)
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar Led[] = {0xfa,0xf5,0xaf,0x5f,0xaa,0x55,0x00,0xff};
uchar temp;
uchar k;
void main(){
uchar i;
k = 0;
temp = 0;
TMOD = 0x01;
//计数模式为1时间为65535,0x10是256
TH0 = (65535-50000)/256;
TL0 = (65535-50000)%256;
EA = 1;//总中断
EX0 = 1;//外部中断
while(1){
if(temp == 1){
for(i=0;i<8;i++){
P1 = Led[i];
while(k<20);//20*50ms
k=0;
}
}
}
}
void wbdd()interrupt 0{
while(IE0 == 1);//松开后退出循环
temp = 1;
ET0 = 1;//定时器溢出中断
TR0 = 1;//开始计时
}
void int0() interrupt 1{
TH0 = (65535-50000)/256;//高8位初始化时间
TL0 = (65535-50000)%256;//低8位初始化时间
k++;
}
浙公网安备 33010602011771号