找回密码
 立即注册

QQ登录

只需一步,快速开始

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

外中断计数2位数码管显示

[复制链接]
跳转到指定楼层
楼主
ID:71259 发表于 2014-12-30 01:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg52.h>
  2. unsigned char code Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段码表
  3. unsigned char x;

  4. sbit P34=P3^4; //T0控制管脚

  5. void delay1ms(unsigned int n)  //1ms基准延时
  6. {
  7. unsigned char i;
  8. while(n--)
  9.   for(i=0;i<125;i++);
  10. }

  11. void display(unsigned char x)  //显示函数
  12. {
  13. P2=0xbf;
  14. P0=Tab[x/10];    //显示十位
  15. delay1ms(1);
  16. P2=0x7f;
  17. P0=Tab[x%10];     //显示个位
  18. delay1ms(1);

  19. }

  20. void main()
  21. {

  22. x=0;
  23.     TMOD=0x06;     //T0的计数器工作模式2 0000 0110 C/T'=1为计数器
  24. EA=1;       //开放总中断
  25. EX0=1;      //允许INT0中断
  26. ET0=1;       //允许T0中断

  27. IT0=1;      //INT0为负跳变触发中断
  28. TR0=1;        //将T0的高,低位赋值255,只要按键一次就溢出,触发中断
  29. TH0=TL0=255;
  30. while(1)       //无限循环等待中断
  31.   display(x);
  32.   

  33. }

  34. void int0() interrupt 1   //T0的中断编号为1
  35. {
  36. if(P34==0){
  37.   delay1ms(20);      //消陡
  38.   if(P34==0){
  39.    x=(x+1)%100;
  40.   }
  41. }
  42. }

  43. void clear0()  interrupt 0   //INT0的中断编号为0
  44. {
  45. x=0;
  46. }
复制代码


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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