找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2764|回复: 3
打印 上一主题 下一主题
收起左侧

单片机中断程序求帮忙

[复制链接]
跳转到指定楼层
楼主
ID:145536 发表于 2016-11-2 12:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10黑币
通过键盘控制外部中断01,键盘1按下,进入外部中断0,红灯向白灯循环闪烁;键盘2按下,进入外部中断,白灯向红灯循环闪烁。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123732 发表于 2016-11-2 14:57 | 只看该作者
白灯向红灯闪烁?请描述的再详细一点可好?
回复

使用道具 举报

板凳
ID:145536 发表于 2016-11-2 16:15 | 只看该作者
刘海龙 发表于 2016-11-2 14:57
白灯向红灯闪烁?请描述的再详细一点可好?

就是理解为一个控制从左往右,一个控制从右往左
回复

使用道具 举报

地板
ID:123732 发表于 2016-11-3 13:37 | 只看该作者
  1. /*********************************************************************************************
  2. 编写:刘海龙
  3. 程序名:外部中断控制流水方向
  4. 硬件支持:LED负极接P1口
  5. 2016.11.3
  6. /*********************************************************************************************/
  7. #include <reg52.H> //单片机头文件
  8. #include <intrins.h>
  9. unsigned char aa,MENU=0;
  10. /**********************************************************************************************/
  11. void delayms (unsigned int a) // 1ms延时程序
  12. {       
  13.         unsigned int i;
  14.         while( --a != 0)
  15.         {
  16.                 for(i = 0; i < 125; i++);//STC单片机在外部晶振为12MHz时i值上限为600  
  17.         }                                                       //AT89C51单片机在外部晶振为12MHz时i值上限为125
  18. }
  19. /*********************************************************************************************
  20. 函数名:外部中断INT初始化函数
  21. 调  用:INT_init();
  22. 参  数:无
  23. 返回值:无
  24. 结  果:启动外部中断INT1、INT0中断,设置中断方式
  25. 备  注:
  26. /**********************************************************************************************/
  27. void INT_init (void){
  28.         EA = 1;        //中断总开关
  29.         EX1 = 1; //允许外部中断1中断   
  30.         EX0 = 1; //禁止外部中断0中断
  31.         IT1 = 1; //1:下沿触发  0:低电平触发
  32.         IT0 = 1; //1:下沿触发  0:低电平触发
  33.          
  34. }
  35. /*********************************************************************************************
  36. 函数名:外部中断INT0中断处理程序
  37. 调  用:[外部引脚INT0中断处理]
  38. /**********************************************************************************************/
  39. //中断0服务程序
  40. void exint0() interrupt 0       //INT0中断入口
  41. {
  42.       aa=0xfe;
  43.           MENU=1; //
  44. }

  45. //中断1服务程序
  46. void exint1() interrupt 2       //INT1中断入口
  47. {
  48.      aa=0x7f;
  49.          MENU=2; //
  50. }
  51. /*********************************************************************************************
  52. 函数名:主函数
  53. /**********************************************************************************************/
  54. void main (void){
  55.        
  56.         INT_init();//中断初始化
  57.         while(1){
  58.                         if(MENU==1)
  59.                         {
  60.                                 P1=aa;
  61.                                 delayms(500);
  62.                                 aa=_crol_(aa,1);
  63.                         }
  64.                         if(MENU==2)
  65.                         {
  66.                                 P1=aa;
  67.                                 delayms(500);
  68.                                 aa=_cror_(aa,1);
  69.                         }
  70.         }
  71. }

  72. /**********************************************************************************************/
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表