标题: 单片机中断程序求帮忙 [打印本页]
作者: 841953693 时间: 2016-11-2 12:45
标题: 单片机中断程序求帮忙
通过键盘控制外部中断0和1,键盘1按下,进入外部中断0,红灯向白灯循环闪烁;键盘2按下,进入外部中断,白灯向红灯循环闪烁。
作者: 刘海龙 时间: 2016-11-2 14:57
白灯向红灯闪烁?请描述的再详细一点可好?
作者: 841953693 时间: 2016-11-2 16:15
就是理解为一个控制从左往右,一个控制从右往左
作者: 刘海龙 时间: 2016-11-3 13:37
- /*********************************************************************************************
- 编写:刘海龙
- 程序名:外部中断控制流水方向
- 硬件支持:LED负极接P1口
- 2016.11.3
- /*********************************************************************************************/
- #include <reg52.H> //单片机头文件
- #include <intrins.h>
- unsigned char aa,MENU=0;
- /**********************************************************************************************/
- void delayms (unsigned int a) // 1ms延时程序
- {
- unsigned int i;
- while( --a != 0)
- {
- for(i = 0; i < 125; i++);//STC单片机在外部晶振为12MHz时i值上限为600
- } //AT89C51单片机在外部晶振为12MHz时i值上限为125
- }
- /*********************************************************************************************
- 函数名:外部中断INT初始化函数
- 调 用:INT_init();
- 参 数:无
- 返回值:无
- 结 果:启动外部中断INT1、INT0中断,设置中断方式
- 备 注:
- /**********************************************************************************************/
- void INT_init (void){
- EA = 1; //中断总开关
- EX1 = 1; //允许外部中断1中断
- EX0 = 1; //禁止外部中断0中断
- IT1 = 1; //1:下沿触发 0:低电平触发
- IT0 = 1; //1:下沿触发 0:低电平触发
-
- }
- /*********************************************************************************************
- 函数名:外部中断INT0中断处理程序
- 调 用:[外部引脚INT0中断处理]
- /**********************************************************************************************/
- //中断0服务程序
- void exint0() interrupt 0 //INT0中断入口
- {
- aa=0xfe;
- MENU=1; //
- }
- //中断1服务程序
- void exint1() interrupt 2 //INT1中断入口
- {
- aa=0x7f;
- MENU=2; //
- }
- /*********************************************************************************************
- 函数名:主函数
- /**********************************************************************************************/
- void main (void){
-
- INT_init();//中断初始化
- while(1){
- if(MENU==1)
- {
- P1=aa;
- delayms(500);
- aa=_crol_(aa,1);
- }
- if(MENU==2)
- {
- P1=aa;
- delayms(500);
- aa=_cror_(aa,1);
- }
- }
- }
- /**********************************************************************************************/
复制代码
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |