作业帮 > 综合 > 作业

一个中断开关控制led不同的循环时间

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/18 02:22:14
一个中断开关控制led不同的循环时间
采用定时器T0的方式1的定时中断方式初始状态使P1口外接的8只led每0.5s循环依次闪亮,p3.3外接一个中断开关,按下第一次以2s循环闪亮,再按一次5s,再按0.5s,以此规律循环
有点意思
卡在一个地方,调了很久.不然昨晚 就放上来了.
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar temp,time,flag1;
bit flag;
void init()
{
EA=1;
EX0=1;
ET0=1;
TR0=1;
IT0=1;
TMOD=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void main()
{
init();
temp=0xfe;
while(1)
{
switch(flag1)
{
case 0:if(time==10){flag=1;time=0;};break;
case 1:if(time==40){flag=1;time=0;};break;
case 2:if(time==100){flag=1;time=0;};break;
default:break;
}
if(flag)
{
P1=temp;
flag=0;
temp=_crol_(temp,1);
}
}
}
void t0int() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
time++;
}
void ex0int() interrupt 0
{
flag1++;
time=0;//少了这条,按下按键,要过很长时间才会切换.
if(flag1==3)
flag1=0;
}