打印
[STC单片机]

关于计时器的问题咨询

[复制链接]
1158|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mokedeng|  楼主 | 2013-9-3 21:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h> //头文件
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

unsigned char temp[8];
unsigned char dispcount;
unsigned char T0count;
unsigned char timecount;
bit flag;
unsigned long x;


unsigned char TempBuffer[10];



sbit lcde=P2^7;          //使能端
sbit lcdrs=P2^6;   //复位端
sbit lcdrw=P2^5; //写数据端

void IntToStr(unsigned int t, unsigned char *str, unsigned char n)
{
        unsigned char a[5]; char i, j;                                         
        a[0]=(t/10000)%10;         //取得整数值到数组                 
        a[1]=(t/1000)%10;                                             
        a[2]=(t/100)%10;                                             
        a[3]=(t/10)%10;                                               
        a[4]=(t/1)%10;                                                

        for(i=0; i<5; i++)         //转成ASCII码                     
                a=a+'0';                                            
        for(i=0; a=='0' && i<=3; i++);                             
        for(j=5-n; j<i; j++)       //填充空格                        
                { *str=' ';  str++; }                                    
        for(; i<5; i++)                                               
                { *str=a; str++; }  //加入有效的数字                  
        *str='\0';
}



/*******************************************************************/
/*                                                                                                                                  */
/* 延时子程序                                                                                                                  */
/*                                                                                                                                  */
/*******************************************************************/
void delay(uint z)
{
        uint a,y;
        for(a=z;a>0;a--)
                for(y=110;y>0;y--);
}


main()
{
        unsigned char i;
        init();

        while(1)
         {
             if(flag==1)
               {
                 flag=0;
                 x=T0count*65536+TH0*256+TL0;
                 IntToStr(x, &TempBuffer[0], 5);


                         while(TempBuffer != '\0')
                         {
                                  write_date(TempBuffer);
                                i++;
                                delay(300);
                         }
                         write_com(0x01);

                 timecount=0;
                 T0count=0;
                 TH0=0;
                 TL0=0;
                 TR0=1;
                         TR1=1;
                         i = 0;
               }
           }
               
}




这个是我在网上找到的一个计数器程序,里面我有两个地方没有看懂,我用红色的标注出来了的
for(i=0; i<5; i++)         //转成ASCII码                     
                a=a+'0';          他这里是写出计数的位 ,后面加一个 '0'是干什么的呢                                    
        for(i=0; a=='0' && i<=3; i++);                             
        for(j=5-n; j<i; j++)       //填充空格                        
                { *str=' ';  str++; }            这个语句我没有看懂,         *str函数不怎么明白                    
        for(; i<5; i++)                                               
                { *str=a; str++; }  //加入有效的数字                  
        *str='\0';

第二个地方
x=T0count*65536+TH0*256+TL0;        这个X是表示计数值的大小,那怎么等式为什么要T0count*65536+TH0*256+TL0
                 IntToStr(x, &TempBuffer[0], 5);   &TempBuffer[0]是什么意思呢


                         while(TempBuffer != '\0')
                         {
                                  write_date(TempBuffer);

就这些地方不怎么明白,麻烦帮我解释一下   不胜感激。。。

相关帖子

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

本版积分规则

20

主题

38

帖子

0

粉丝