欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 12M的晶振,定時器定了一秒鐘,為什么那么快,高手給我看看啊,謝謝了 [打印本頁]

作者: 董亞偉    時間: 2014-12-19 10:07
標題: 12M的晶振,定時器定了一秒鐘,為什么那么快,高手給我看看啊,謝謝了
  1. #include<reg52.h>
  2. sbit a_138=P2^2;
  3. sbit b_138=P2^3;
  4. sbit c_138=P2^4;                                                                       
  5. unsigned char code Digitron []=
  6. {
  7.         0x3f,0x06,0x5b,0x4f,0x66,
  8.         0x6d,0x7d,0x07,0x7f,0x6f,
  9.         0x77,0x7c,0x39,0x5e,0x79,
  10.         0x71
  11. };

  12. void main()
  13. {
  14.         unsigned int n,u;
  15.         TMOD = 0x01;
  16.         TH0 = 0x3Cb0;
  17.         TL0 = 0x00;
  18.         TR0 = 1;
  19.        
  20.         a_138=0;
  21.         b_138=0;
  22.         c_138=0;
  23.        
  24.         while(1)
  25.         {
  26.                 if(TF0 == 1)
  27.                 {
  28.                         TF0 = 0;
  29.                         TH0 = 0x3Cb0;
  30.                         TL0 = 0x00;
  31.                         u++;
  32.                         if(u>=20)
  33.                         {
  34.                                 P0=Digitron[n];       
  35.                                 n++;
  36.                         }
  37.                                                
  38.                 }
  39.         }

  40. }

  41.        
復制代碼


作者: 忠信1314    時間: 2014-12-19 11:34
TH0=0X3C;
TL0=0XB0;

你那個u》=20     不需要重置(u=0)值嗎    會跑飛的
作者: mqwu    時間: 2014-12-19 11:34
TH0 = 0x3C;
TL0 = 0xb0;

   if(u>=20)
                        {
                                 u=0;
                                P0=Digitron[n];        
                                n++;
                                if (n>=15)n=0;
                        }
作者: 董亞偉    時間: 2014-12-19 21:23
mqwu 發表于 2014-12-19 11:34
TH0 = 0x3C;
TL0 = 0xb0;

這里U為什么要等賦0
作者: xueyunmicheng    時間: 2014-12-19 21:55
定時器0 不是自動從裝的嗎 不需要這樣寫吧 一般的定時器使用的時候 寫法和你的不一樣哦

#include <reg51.h>

sbit a_138=P2^2;

sbit b_138=P2^3;

sbit c_138=P2^4;

unsigned int u;

unsigned char code Digitron []=

{

        0x3f,0x06,0x5b,0x4f,0x66,

        0x6d,0x7d,0x07,0x7f,0x6f,

        0x77,0x7c,0x39,0x5e,0x79,

        0x71

};


//*****************定時器初始化********************//
void InitTimer0(void)
{
    TMOD = 0x01;
    TH0 = 0x0FF;
    TL0 = 0x9C;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}
//***************定時器函數**********************
void Timer0Interrupt(void) interrupt 1
{
    TH0 = 0x0FF;
    TL0 = 0x9C;
    u++;
}

void main(void)
{
    unsigned int n;
        InitTimer0();
        a_138=0;
        b_138=0;
        c_138=0;
        while(1)
        {
                if(u>=20)        //經過20個50ms 的時間后
                {
                        u=0;        //這一句必須有 定時器定時50ms  沒50ms u自加一次 當加到20次后是一秒鐘 此時u需要置零 進行下一個循環 就像秒鐘走到59 下一次 就是00了
                        P0=Digitron[n];        
                        n++;
                }
        }
}
作者: 來自火星的蝸牛    時間: 2014-12-20 11:27
        TMOD = 0x01;
        TH0 = 0x3C;
        TL0 = 0xB0;
        TR0 = 1;
        
        a_138=0;
        b_138=0;
        c_138=0;
        
        while(1)
        {
                if(TF0 == 1)
                {
                        TF0 = 0;
                        TH0 = 0x3C;
                        TL0 = 0xB0;
                        u++;
                        if(u==20)
                        {
                                P0=Digitron[n];        
                                n++;
                                u=0;
                        }

作者: qazxcvbnmklp    時間: 2014-12-22 18:06

作者: felixno1    時間: 2015-1-21 11:16

作者: 磨嘰磨嘰    時間: 2015-1-22 22:38
用匯編算了吧
作者: woaidpj    時間: 2015-1-22 22:48
好像還不能直接定時1秒鐘那么長時間吧,得定個50毫秒再判斷進入20次即為1秒。
作者: weijoyer    時間: 2021-10-26 22:13
定時器初始化有問題,可以去STC提供的ISP下載軟件上面看看例程
作者: npn    時間: 2021-10-26 23:01
12Mhz晶振定時器定一次最長65536微秒。
作者: dzc3458    時間: 2021-11-1 16:22
不對吧,定時器就算最長時間也只有65535us,也就是0.065535s,不能定到1s的




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1