|
内容:通过不同按键,激活不同的外部中断,以调节P1.7上LED发光二极管的闪烁频率- #include "reg52.h"
- sbit Led1Pin =P1^7; //定义LED所在的引脚
- #define LEDON (0) //使LED亮的电平
- #define LEDOFF (1) //使LED灭的电平
- #define LEDFLASHSPEED1 (200) //速度1时的延时值
- #define LEDFLASHSPEED2 (2000) //速度2时的延时值
- unsigned int LedFlashSpeed; //用于存放选择的速度
- bit Led1OutValue; //与LED灯对应的输出变量,用于刷新到Led1Pin
- //延时函数
- //x为延时时间,范围1~65536
- void xDelay(unsigned int x)
- {
- unsigned char y; //声明局部变量
- for(;x>0;x--) //外层循环
- for(y=110;y>0;y--); //内层循环
- }
- //延时函数
- void Init(void)
- {
- Led1OutValue=LEDOFF; //输出变量赋初值
- LedFlashSpeed=LEDFLASHSPEED1; //设置默认速度
- IT0=1; //设置外部中断为边沿触发方式
- IT1=1;
- EX0=1; //使能外部中断
- EX1=1;
- EA=1; //使能所有中断
- }
- //主函数
- void main(void)
- {
- Init(); //调用初始化函数
- while(1){
- Led1OutValue^=1; //输出变量状态取反
- Led1Pin=Led1OutValue; //将输出变量的值刷新到对应引脚
- xDelay(LedFlashSpeed); //延时一会
- }
- }
- //外部中断0的中断服务函数
- void ExInt0(void) interrupt 0
- {
- EX0=0; //失能外部中断0
- LedFlashSpeed=LEDFLASHSPEED1; //设置速度
- EX0=1; //使能外部中断0
- }
- //外部中断1的中断服务函数
- void ExInt1(void) interrupt 2
- {
- EX1=0; //失能外部中断1
- LedFlashSpeed=LEDFLASHSPEED2;
- EX1=1; //使能外部中断1
- }
复制代码
|
|