找回密码
 立即注册

QQ登录

只需一步,快速开始

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

外部中断计数,源码

[复制链接]
跳转到指定楼层
楼主
ID:159576 发表于 2017-1-3 13:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是做的外部中断计数,用了好几天终于完成,谢谢指教
  1. #include < reg51.h >
  2. #include <intrins.h>

  3. sbit LS138A=P2^2;  
  4. sbit LS138B=P2^3;
  5. sbit LS138C=P2^4;

  6. unsigned int LedNumVal_1,LedNumVal_2,LedOut[8];

  7. //此表为 LED 的字模, 共阴数码管 0-9  -
  8. unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};


  9. void delay(unsigned int i)
  10. {
  11.     char j;
  12.     for(i; i > 0; i--)
  13.         for(j = 200; j > 0; j--);
  14. }


  15. void main(void)
  16. {  unsigned char i;

  17.    P0=0xff;
  18.    P1=0xff;
  19.    P2=0xff;


  20. // IT0=0;       //低电平触发
  21.    IT0=1;       //下降沿触发
  22.    EX0=1;


  23.    
  24. // IT1=0;       //低电平触发
  25.    IT1=1;       //下降沿触发
  26.    EX1=1;
  27.    EA=1;


  28.    while(1)
  29.    {   
  30.      LedOut[0]=Disp_Tab[LedNumVal_1%10000/1000];
  31.      LedOut[1]=Disp_Tab[LedNumVal_1%1000/100]|0x80;          //0x7f小数点
  32.      LedOut[2]=Disp_Tab[LedNumVal_1%100/10];
  33.      LedOut[3]=Disp_Tab[LedNumVal_1%10];

  34.          LedOut[4]=Disp_Tab[LedNumVal_2%10000/1000];
  35.      LedOut[5]=Disp_Tab[LedNumVal_2%1000/100];
  36.      LedOut[6]=Disp_Tab[LedNumVal_2%100/10];
  37.      LedOut[7]=Disp_Tab[LedNumVal_2%10];


  38.          for( i=0; i<8; i++)
  39.          {         P0 = LedOut[i];
  40.                        
  41.           switch(i)                                          
  42.              {            
  43.                         case 0:LS138A=0; LS138B=0; LS138C=0; break;         
  44.                 case 1:LS138A=1; LS138B=0; LS138C=0; break;                    
  45.                 case 2:LS138A=0; LS138B=1; LS138C=0; break;
  46.                 case 3:LS138A=1; LS138B=1; LS138C=0; break;
  47.                         case 4:LS138A=0; LS138B=0; LS138C=1; break;
  48.                         case 5:LS138A=1; LS138B=0; LS138C=1; break;
  49.                         case 6:LS138A=0; LS138B=1; LS138C=1; break;
  50.                         case 7:LS138A=1; LS138B=1; LS138C=1; break;
  51.                        
  52.              }

  53.                 delay(5);
  54.          }


  55.    }

  56. }



  57. /********************************************************
  58. * INT0中断函数                                          *
  59. ********************************************************/
  60. void  counter0(void) interrupt 0  using 1
  61. {
  62.   
  63.    EX0=0;  
  64.    LedNumVal_1++;
  65.    EX0=1;
  66. }
  67. /********************************************************
  68. * INT1中断函数                                          *
  69. ********************************************************/
  70. void  counter1(void) interrupt 2 using 2
  71. {
  72.    
  73.    EX1=0;
  74.    LedNumVal_2++;
  75.    EX1=1;
  76. }
  77. /********************************************************/


复制代码


3 外部中断计数.rar

17.58 KB, 下载次数: 20, 下载积分: 黑币 -5

外部中断计数

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

使用道具 举报

沙发
ID:192361 发表于 2017-4-22 15:32 | 只看该作者
有没有计高电平的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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