找回密码
 立即注册

QQ登录

只需一步,快速开始

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

把软件延时改成定时中断延时的问题

[复制链接]
跳转到指定楼层
楼主
ID:262 发表于 2016-3-11 23:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想把以下的程序改成用定时器方法延时可是6一直不可以求大神解答
原程序
不知那里出问题了,灯和数码管一直亮第一个
  1. void led1()                  
  2. {

  3.         unsigned int i;

  4.         led=0xfe;

  5.         P0=table[i];

  6.         Delay10ms(50);

  7.         while(1)

  8.         {

  9.                 for(i=0;i<7;i++)                                                

  10.                 {

  11.                         led=_crol_(led,1);

  12.                         P0=table[i+1];

  13.                         Delay10ms(50);                                                         

  14.                 }

  15.                 for(i=7;i>0;i--)                                                        

  16.                 {

  17.                         led=_cror_(led,1);

  18.                         P0=table[i-1];

  19.                         Delay10ms(50);                                                        

  20.                 }                  

  21.         }        

  22. }
  23. 改成了
  24. void led1()                  

  25. {

  26.         unsigned int i;

  27.         EA=1;            

  28.         TMOD=0x01;         

  29.         ET0=1;              

  30.         TR0=1;         

  31.         TH0=(65536-50000)/256;

  32.         TL0=(65536-50000)%256;

  33.         led=0xfe;

  34.         P0=table[i];

  35.          while(1);

  36. }



  37.         void timer0() interrupt 1   

  38. { int i;

  39.         TR0=0;   

  40.         TH0=(65536-50000)/256;

  41.         TL0=(65536-50000)%256;

  42.         tt++;

  43.          if(tt==10)

  44.                 for(i=0;i<7;i++)                                                

  45.                 {

  46.                         led=_crol_(led,1);

  47.                         P0=table[i+1];

  48.                 }

  49.                 if(tt==20)

  50.                 for(i=7;i>0;i--)                                                        

  51.                 {        tt=0;

  52.                         led=_cror_(led,1);

  53.                         P0=table[i-1];                                                

  54.                 }                  

  55.         }        
复制代码


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

使用道具 举报

沙发
ID:262 发表于 2016-3-11 23:17 | 只看该作者
换的程序大概知道为什么错了,还是不理解定时延时的写法,程序的注意目的是完成八个0.5秒的流水灯的左右位移再加上数码管对应数字切换,求大神帮忙写个!!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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