赚钱做任务的网站/韩国比分预测
1.启动时,两个LED灯熄灭,1秒钟后(定时器实现),LED自动点亮;
2.按键1按下后,通过中断int0把两个LED熄灭5s时间,int0优先级设置为最高(优先级必须设置,设置后才能嵌套,否则即使它是int0,也不能嵌套进int1中)。
3.按键2被按下后,LED闪烁5次,间隔1秒;LED1熄灭。
4.最后效果是,当开始两个LED灯熄灭,一秒后,led点亮。我们按下按键2,LED闪烁,LED1熄灭。此时,按下按键1,LED1和LED2全部熄灭并保持一段时间后,LED1继续未完成的闪烁,直至完成后两个LED灯依旧点亮。
#include"reg52.h"
#define uchar unsigned char //定义字符类型
#define uint unsigned int
sbit led=P2^0; //定义IO口P2.0为led
sbit led1=P2^1;
uchar flag; //定义flag类型void delay(){ //延时程序
int i,j;for(i=500;i>0;i--)for(j=100;j>0;j--);
}
void init()//初始化,即打开各中断开关
{TMOD=0x01;TH0=(65536-50000)/256; //定时器0装初值TL0=(65536-50000)%256; //同上IT0=1;//外部中断0为跳变沿触发方式IT1=1;//外部中断1为跳变沿触发方式EA=1;//开总中断EX0=1;//打开外部中断0EX1=1;//打开外部中断1ET0=1;//打开定时器0中断开关TR0=1;//打开定时器0运行开关IP=0x01;//设置int0优先级为高,与PX0=1;等效
}
/*按键1*/
void int0() interrupt 0 using 0//外部中断0的执行程序。
{ //interrupt 0指外部中断0 using 0指第0组寄存器 led=1; //熄灭LED灯led1=1;delay();//延时delay();delay();
}
void t0() interrupt 1 using 1 //定时器
{ TH0=(65536-50000)/256; //定时器0装初值TL0=(65536-50000)%256; //同上flag++; //记录定时器经过的时间if(flag==20){ //定时1秒后执行,flag=20时约一秒led=0; //点亮LED灯led1=0;flag=0; //重置定时,达到每一秒点亮一次的目的}
}
/*按键2*/
void int1() interrupt 2 using 2//外部中断1的执行程序。
{unsigned char i;led1=1; for(i=0;i<10;i++)//实现led闪烁五次。{led=~led;delay();}
}
void main()//主函数
{init(); //初始化led=1; //指定LED灯开始的时候是熄灭状态led1=1;while(1);
}