标题:
单片机实验 外部中断的应用实验
[打印本页]
作者:
xuelongxl
时间:
2016-11-5 20:52
标题:
单片机实验 外部中断的应用实验
内容:通过不同按键,激活不同的外部中断,以调节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
}
复制代码
02实验二 外部中断.zip
2016-11-5 20:52 上传
点击文件名下载附件
下载积分: 黑币 -5
18.62 KB, 下载次数: 6, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1