打印

显示与定时器问题

[复制链接]
1917|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fdsfdsa|  楼主 | 2009-10-17 10:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我看到如下程序:
#include <reg52.h>
#include <absacc.h>
#include stdio.h>
#include <math.h>

//定义字位和字形口地址
#define DIGPORT XBYTE[0x8000]         
#define WORDPORT XBYTE[0x4000]
#define uchar unsigned char

uchar code TABLE[] = {ox3f, 0x06.......}//定义字形
//数码管显示个位
uchar digit;
uchar disp;
uchar delay;
void main(){
  TMOD = 0x60;
   TH0 = 0;
   TL0 = 0;
   EA = 1; ET1 = 0; TR1 = 1;
   for(;;){

          digit = 0x08;      //数码管显示低位
          disp = TL0 %10;
          DIGPORT = digit;
          WORDPORT = TABLE[disp];
          for(delay = 0;delay <= 200;delay++);
          //....显示其他位的数据。
    }

}
目的是动态显示1234
其中, 有个地方不明白,请各位指点指点。
  在整个过程中,TL0在不断的变化,为何用TL0%10就行到了要显示的数据。

相关帖子

沙发
awmc_m| | 2009-10-17 11:23 | 只看该作者
程序看得不是很明白,定时器不是常规用法,未发挥它的作用。
disp = TL0 %10;应该0-9都有可能,而且什么时候是什么数字不可控,要看运行到这句时tl0的值。
既然用了定时器,就将他的定时功能用起来,显示时也不需要for(delay = 0;delay <= 200;delay++);这样的死延时了。

使用特权

评论回复
板凳
fdsfdsa|  楼主 | 2009-10-17 20:11 | 只看该作者
上面的程序是我在书上看到的,我也是觉得它要显示1234的话,用tl0去 给disp赋值的话,我也觉得在不断的变化。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

757

帖子

2

粉丝