標(biāo)題: 求助 51單片機(jī) 中斷 [打印本頁]

作者: danpianji258    時間: 2015-4-5 21:56
標(biāo)題: 求助 51單片機(jī) 中斷
論壇的各位前輩,請求指點(diǎn)
我本人喜歡單片機(jī),也是自學(xué)的,基礎(chǔ)不好!學(xué)習(xí)單片機(jī)已經(jīng)困在定時中斷這里很久了,看了很多書,也不理解,心里實(shí)在是矛盾,請求有耐心的前輩指點(diǎn)一二
請各位前輩指點(diǎn);
第一:這里對于中斷我想弄清楚以下:
1.裝載初始值:例如我晶振為11.0592
機(jī)器周期=12/11.0592=1.085us  我需要讓它50ms中斷一次  50000/1.09=45872   
初始值就是 TH0=(65536-45872)/256=應(yīng)該是76 ,那么這個76,裝載到高八位是裝換成16進(jìn)制嗎?還是二進(jìn)制
                   TL0=(65536-45872)%256=應(yīng)該是8125 這個裝載到低八位中 又是什么樣子的!可能問的問題都不對,大家別笑話,我看書上面講的比較籠統(tǒng),不明白其中的意思!

2.所謂中斷溢出,書上就是說 TH0 和TL0 都滿后,那么如何才是 低八位滿后向高八位進(jìn)1?不理解。也沒有老師教,自己之前也不是學(xué)這些課程的!

郭天祥老師里面的
void main()
{
     TMOD=0X01;
     TH0=(65536-45872)/256;//這個數(shù)得出來 76
      TL0=(65536-45872)%256;//這個數(shù)得出來8125 就不不懂這個地方 所謂的高八位和低八位的概念
      EA=1;
      ET0=1;
      TR0=1;
      while(1)
     {
      if(num==20)
           {
             num=0;
             led=~led;
            }
      }

}


另外我自己寫了個小程序,就是按鍵 然后LED從第一個到最后一個一次點(diǎn)亮 按鍵1加 按鍵2減
里面也有個小問題,請前輩們看看

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
uchar num;
uchar num0;
void delayms(uint);
sbit key_jia=P3^4;
sbit key_jian=P3^5;

void led()  //LED子函數(shù)
{
P1=table[num];
}

void keyscan()
{

if(key_jia==0)
{
  delayms(10);
  if(key_jia==0)
  {
   num++;
   if(num==9)  //如果這個地方是if(num==8)的話,當(dāng)我按鍵到第8次的時候應(yīng)該是全部亮吧,但是按第八次的時候全部滅了,只亮了前面7顆LED燈這個                        //是為什么
    num=0;     //非得改成if(num==9)才行,按第八次的時候才會全部亮
     while(!key_jian);//此處的while語句不要 加延時時間長一點(diǎn)是不是也一樣,一定要加這個釋放按鍵的語句嗎,如果不加的話一直按鍵LED是從一顆到全                                 //部亮,而加了則需要一次一次按鍵   
   delayms(200);

  }

}
if(key_jian==0)
{
  delayms(10);
  if(key_jian==0)
  {

   if(num==0)
    num=9;
       num--;
   while(!key_jian);
  }
}
}

void main()  //主函數(shù)
{
while(1)
{
keyscan();
  led();
}
}

void delayms(uint xms)//延時函數(shù)
{
uint j,l;
for(j=xms;j>0;j--)
  for(l=110;l>0;l--);
}



最后一個問題,我想做一個用定時器產(chǎn)生一個1KHZ的可調(diào)PWM波形
用兩個按鍵實(shí)現(xiàn) 0-100%  和100-0%的調(diào)整
我想了很久,因為上面的中斷沒有學(xué)會不理解,所以糾結(jié)了很久
我說下我的思路,請前輩指點(diǎn)一下
利用定時器的中斷 100us  為1KHZ的PWM波
應(yīng)該來說當(dāng)是100US的時候 應(yīng)該是最大占空比了
但是如何去固定頻率,去調(diào)整它的通段時間呢?這里是不是要用到兩個定時器呀?
有那個前輩給個思路
謝謝大家!



作者: danpianji258    時間: 2015-4-5 21:59
另外如果那個有經(jīng)驗有耐心的前輩能指點(diǎn)的話,帶我學(xué)習(xí)51的話,本人有償答謝!
作者: 888zhjzhj    時間: 2015-4-6 19:22
樓主, while(!key_jian);//此處的while語句不要 加延時時間長一點(diǎn)是不是也一樣,------這里應(yīng)是while(!key_jia);,uchar num0;---這沒用。num==9是對的,也就是num=0,八個燈加全滅不是九次嗎
作者: danpianji258    時間: 2015-4-6 20:17
888zhjzhj 發(fā)表于 2015-4-6 19:22
樓主, while(!key_jian);//此處的while語句不要 加延時時間長一點(diǎn)是不是也一樣,------這里應(yīng)是while(!key ...

謝謝您的回復(fù),很感激,我看了基本沒有人會這么耐心的講解的
恩 uchar num0;只定義了,沒有用  說明您是真心的看過我這個小程序,謝謝
num==9是對的,是我理解錯誤了,你這樣一說,反過來一想,就對了 呵呵
對于無極調(diào)光的程序 您有什么好的思路嗎,能否指點(diǎn)一下!
作者: 888zhjzhj    時間: 2015-4-6 22:18
樓主,這是我編寫小程序,八個燈的無極變光,第一個燈從不亮到最亮,最亮到不亮,接著第二個又是這樣。
你可以參考一下,我也不太懂的。
#include <reg52.h>
unsigned int  cycle=1000;
unsigned int   high;
unsigned int   low;
unsigned char cnt = 0;
unsigned char array[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f };

void delay(unsigned int t)
{
        while(t--);
}

void configPWM( unsigned char cnt )

             {
                     for(high=1;high<=cycle;high++)
                 {
                         P0=array[cnt];
                        delay(high);
                         P0=0xff;
                        low=cycle-high;
                        delay(low);
                }
                           for(high=1;high<=cycle;high++)
                {
                        P0=0xff;
                        delay(high);
                        P0=array[cnt];
                        low=cycle-high;
                        delay(low);
                }
              }

void main()
            {       
               for(cnt=0;cnt<8;cnt++)
                   {
                      configPWM( unsigned char cnt );

                   }
             }
作者: 888zhjzhj    時間: 2015-4-6 22:25
cycle=1000,可能長的,可改成600
作者: danpianji258    時間: 2015-4-7 20:18
888zhjzhj 發(fā)表于 2015-4-6 22:25
cycle=1000,可能長的,可改成600

謝謝你,用延時函數(shù)寫的,很好哦
最后的cofigPWM();括號里面不要帶形參了!
用來做精準(zhǔn)PWM調(diào)光肯定是不行的!大家一起討論一起學(xué)習(xí)吧!謝謝你
作者: dingmingzhou    時間: 2015-4-8 20:33
我來試著解答你的前兩個問題。其實(shí)應(yīng)該先說第二個問題即溢出。TH0和TL0是兩個8位寄存器,TL0溢出一次TH0加1,8位寄存器寄存的的數(shù)最大是256,這樣可以認(rèn)為,低8位的TL0獲得256個數(shù)后,打個包,記做1包,把這個1存在TH0,同時TL0自身清零,以此類推直到TH0收到第256包時也告?zhèn)}滿,你可知這時這兩個寄存器共存儲了65536個數(shù),再多一個就全部溢出,所謂溢出就是自身清零向高位進(jìn)一,這個一,就代表自身進(jìn)位前的全部內(nèi)容。
好第一個問題----先說那個45872,被從65536中減去的這個數(shù),正是想讓單片機(jī)計量的數(shù),其余的空間填上初值,這個初值是不讓單片機(jī)計量而直接從此基礎(chǔ)上累加45872個數(shù),再多一個溢出。至于TH0中的76就是十進(jìn)制意義上的76,它代表76個256,取余的結(jié)果并不是8125,而是可以理解為0.8125,是不足256(即1包)的部分,你算一下0.8125個256應(yīng)當(dāng)是208,這個數(shù)就是TL0的初值。至于數(shù)制,并不重要,在KEIL中可以混用,當(dāng)然在單片機(jī)中肯定是二進(jìn)制了。
作者: danpianji258    時間: 2015-4-9 14:39
dingmingzhou 發(fā)表于 2015-4-8 20:33
我來試著解答你的前兩個問題。其實(shí)應(yīng)該先說第二個問題即溢出。TH0和TL0是兩個8位寄存器,TL0溢出一次TH0加1 ...

謝謝!
你這種通俗的講解好容易理解,跟陳老師講解一樣,對于我們沒有基礎(chǔ)的人來說很好理解
其實(shí)就是將65536個數(shù)分成了高低8位兩個寄存器,低位滿后,向高位進(jìn)1,依次類推,當(dāng)高位滿后,低位自身滿256個數(shù)后 再多加1位 相當(dāng)于高地位都溢出,就表示 這兩個寄存器已經(jīng)滿 且溢出了
初始值就像類似于水桶里面已經(jīng)有一半水了,只需要再原來的基礎(chǔ)上再往桶里裝水,原來的水加上你需要的水剛剛好就滿,是這樣吧 就像你說的 TH0=76 TL0=0.8125  TL0加滿256后 TH0變成77  一直這樣,當(dāng)TH0=256 TL0=256  剛好是65536個數(shù) TL0再加1的話就產(chǎn)生了溢出!是這樣吧,謝謝你,這樣算是理解了(高位TH0的初始值是76  低位TL0的初始值 是0.8125)
作者: dingmingzhou    時間: 2015-4-9 22:58
對頭,是這樣的。
作者: dingmingzhou    時間: 2015-4-9 23:36
樓主,看了你的回復(fù),大部分是對的,但那個TL0=0.8125,是不對的,應(yīng)當(dāng)是0.8125*256=208才對,你說呢?
作者: danpianji258    時間: 2015-4-10 10:15
dingmingzhou 發(fā)表于 2015-4-9 23:36
樓主,看了你的回復(fù),大部分是對的,但那個TL0=0.8125,是不對的,應(yīng)當(dāng)是0.8125*256=208才對,你說呢?

嗯,您這樣一說,您的意思是說這個是16位定時器數(shù)據(jù) 每一位為8個字節(jié) 就是16*8*256=32768 低八位裝載其實(shí)是32768  高八位也一樣  32768*2=65536 是這樣嗎?


作者: panzishi123456    時間: 2015-4-10 11:50
算TH0和TL0不用那么麻煩,用windows自帶的計算器算出65536-45872=19664后,直接轉(zhuǎn)換16進(jìn)制4CD0,TH0就是4C,TL0為D0,分開轉(zhuǎn)回去4C就是76,D0就是208
作者: panzishi123456    時間: 2015-4-10 11:54
直接將TH0和TL0合起來看作16位數(shù)據(jù),總數(shù)65536,預(yù)存19664數(shù)據(jù),加45872后溢出
作者: danpianji258    時間: 2015-4-10 13:40
panzishi123456 發(fā)表于 2015-4-10 11:54
直接將TH0和TL0合起來看作16位數(shù)據(jù),總數(shù)65536,預(yù)存19664數(shù)據(jù),加45872后溢出

是的,現(xiàn)在知道了 就以后會這樣做的!呵呵
昨天剛才STC那邊買了一些STC15W402AS STC15F104W  不知道STC15W402AS中的3路PWM怎么用
正在努力學(xué)習(xí)
作者: danpianji258    時間: 2015-4-10 13:43
panzishi123456 發(fā)表于 2015-4-10 11:54
直接將TH0和TL0合起來看作16位數(shù)據(jù),總數(shù)65536,預(yù)存19664數(shù)據(jù),加45872后溢出

好的,現(xiàn)在知道了,我是想知道是如何演變而來的,現(xiàn)在知道是這么一回事,我以后就直接用就好了!呵呵
您會用15W402AS這個片子嗎?
作者: panzishi123456    時間: 2015-4-10 14:40
danpianji258 發(fā)表于 2015-4-10 13:43
好的,現(xiàn)在知道了,我是想知道是如何演變而來的,現(xiàn)在知道是這么一回事,我以后就直接用就好了!呵呵
您 ...

沒有用過,用的現(xiàn)代的芯片,之前用的匯編,現(xiàn)在剛開始學(xué)C
作者: dingmingzhou    時間: 2015-4-10 16:55
本帖最后由 dingmingzhou 于 2015-4-10 17:58 編輯

       樓主,您好。13樓14樓在計算上是沒錯的,用的時候就是那么計算。但是在理解上我覺不是你說的這樣“16位定時器數(shù)據(jù) 每一位為8個字節(jié) 就是16*8*256=32768 低八位裝載其實(shí)是32768  高八位也一樣  32768*2=65536 “,這樣理解是錯誤的,也理解不了13樓14樓的做法。       應(yīng)當(dāng)這樣理解:TH0,TL0都是8位寄存器,在內(nèi)存中都是這個樣子:”****   ****“(*號代表要么是1,要么是 0)。一個8位的寄存器最大存儲的數(shù)字是256(包括0),只不過這兩個寄存器,在單片機(jī)計數(shù)過程中,先從TL0的最低位存起,滿一個256,就自身清零,同時向TH0進(jìn)1(TH0=B0000 0001),滿兩個進(jìn)兩個1(TH0=B0000 0010),所以TH0是存儲了多少個從低位送來的256.這就是叫做高8位、低8位的道理。一個8位寄存器是存不了32768的。32768在內(nèi)存中是這個樣子(1000 0000 0000 0000)。65535是這個樣子(1111 1111 1111  1111),65536是這個樣子(0000 0000 0000 0000)。這就是你可能看到有些人在計算初值時寫作(-*****)/256、(-***)%256;不寫65536,而只寫一個(-),因為65536,在內(nèi)存中表示為零。
      但這種0和從0起步的0,在意義上可能有些不同,你說呢?當(dāng)在65536那個樣子時,65536這一大包存到哪里去了?存到中斷標(biāo)志去了!(從0開始的0是沒有這能耐的),但是中斷標(biāo)志似乎是個死腦筋,傻呼呼地只會告訴你一個字---1   !好在用中斷服務(wù)程序時,定時器的中斷標(biāo)志是由硬件清零,而用查詢時,它則更傻B了,連兩個數(shù)也記不住,還要軟件去清零,不過不要緊,記錄這個 1出現(xiàn)的次數(shù),就知道溢出幾次。



作者: dingmingzhou    時間: 2015-4-10 17:14
本帖最后由 dingmingzhou 于 2015-4-10 17:42 編輯

11111111111111111111111
作者: danpianji258    時間: 2015-4-11 09:47
dingmingzhou 發(fā)表于 2015-4-10 16:55
樓主,您好。13樓14樓在計算上是沒錯的,用的時候就是那么計算。但是在理解上我覺不是你說的這樣“16 ...

好的,知道了,謝謝你耐心講解!
作者: yesonjob    時間: 2015-4-11 11:58
我也是自學(xué),剛弄懂這個定時器不久,裝初值是這樣理解的。
設(shè)置為定時器模式后,你這個程序是定時器方式1,16位的二進(jìn)制數(shù),初始狀態(tài)就是16個0,假如加滿了就變成了16個1,就是65536了,65536的來由就是2的16次方。每來一個機(jī)器周期,就往里面加1;你的晶振一個機(jī)器周期就是1.085us,那么想要得到50ms就是要45872個機(jī)器周期,就是說首先往定時器里面裝一個數(shù),然后讓它自己加,再加45872次就滿了產(chǎn)生中斷了,那既然它加了45872次是不是也就是說到了50ms呢。后面就很簡單了,初值要裝什么數(shù)呢,45872+初值=65536滿了,那么初值就是65536-45872啊。
其實(shí)里面還有很多其他知識的,不能一一說出來,可以跟帖繼續(xù)解答。
作者: danpianji258    時間: 2015-4-11 13:37
#include <reg52.h>                                                                                       
#define uint unsigned int
#define uchar unsigned char
sbit pwm=P1^0;                       
sbit pwm_up=P3^6;               
sbit pwm_dn=P3^7;                 
uint i;                                         
char j,k=5;                                  
void timer_init()        
{
        TMOD=0X02;                     
        TH0=56;                             
        TL0=56;                                  
        IE=0X82;                          
        TR0=1;                             
}
void delayms(uint xms)
{
        uint j,k;                       
        for(j=xms;j>0;j--)
                for(k=110;j>0;j--);
}
void timer0()interrupt 1  
{
        i++;                                 
        if(i==5000)                          
        {
         i=0;                                  
         j++;                                  
         j=j%10;                          

        }
       if(j<k)                         
           {
                   pwm=1;                          
           }
                        else                  
                        pwm=0;                 
}

void key_pwm()                         
{
        if(pwm_up==0)                 
        {
                delayms(5);                  
                if(pwm_up==0)         
                {
                         k++;                  
                        if(k>=10)               
                        {
                                k=10;               
                        }
                        while(!pwm_up);
                }                                       

        }
        if(pwm_dn==0)                       
        {
                 delayms(5);                       
                if(pwm_dn==0)               
                {
                        k--;                       
                        if(k<=0)               
                        {
                                k=0;       
                        }
                         while(!pwm_dn);
                }
        }

}

  void main()                               
  {
   timer_init();               
   for(;;)                               
           {
                key_pwm();
        }
  }

  
作者: danpianji258    時間: 2015-4-11 13:40
上面這個程序,也是從網(wǎng)絡(luò)上半抄半寫的
如果我將K的值變成122級
將中斷的時間再改短,
這樣看起來等還會閃嗎
因為在公司 沒有帶開發(fā)板來公司 暫時不知道!


作者: danpianji258    時間: 2015-4-11 14:03
yesonjob 發(fā)表于 2015-4-11 11:58
我也是自學(xué),剛弄懂這個定時器不久,裝初值是這樣理解的。
設(shè)置為定時器模式后,你這個程序是定時器方式1, ...

如果定時器的時間太短,中斷的頻率很高是不是會容易產(chǎn)生問題啊
例如我用定時器中斷產(chǎn)生一個5KHZ的占空比50%方波
如果在中斷的時間內(nèi),我在其他程序里面占用的時間大于中斷的時間,是不是程序就亂套了,第一次中斷還沒有處理完畢,第二中斷又來了
應(yīng)該如何去評估這個中斷中 其它程序運(yùn)行需要的時間呢
作者: danpianji258    時間: 2015-4-11 14:19
本帖最后由 danpianji258 于 2015-4-11 14:27 編輯
yesonjob 發(fā)表于 2015-4-11 11:58
我也是自學(xué),剛弄懂這個定時器不久,裝初值是這樣理解的。
設(shè)置為定時器模式后,你這個程序是定時器方式1, ...

#include <reg52.h>                                                                                       
#define uchar unsigned char
sbit pwm=P1^0;        
uchar num;               

void main()
{
        while(1)
        {
        void init();
        void pwmss();
        }

}
void init()
{
  TMOD=0X01;
  TH0=(65536-200)/256;
  TL0=(65536-200)%256;
  EA=1;
  ET0=1;
  TR0=1;
}
void time()interrupt 1
{
  TH0=(65536-200)/256;
  TL0=(65536-200)%256;
  num++;
}
void pwmss()
{
         if(num=2)
        {        
                num=0;
                 pwm=1 ;
        }
                 else
                {
                 pwm=0;
                }
}

你看這個程序是不是產(chǎn)生一個5KHZ的標(biāo)準(zhǔn)的50%的PWM波形?
作者: panzishi123456    時間: 2015-4-11 14:45
danpianji258 發(fā)表于 2015-4-11 14:19
#include                                                                                         
...

if(num=2)這個應(yīng)該是 if(num==2)吧。 想學(xué)51C,買套學(xué)習(xí)板,但QQ留言和打電話都沒有反應(yīng),想知道如何購買本網(wǎng)站的學(xué)習(xí)板,如果知道告訴一下,謝謝
作者: panzishi123456    時間: 2015-4-11 14:53
danpianji258 發(fā)表于 2015-4-11 14:19
#include                                                                                         
...

5kHz周期為200us,半周期為100us,半周期翻轉(zhuǎn)一次,所以65536應(yīng)該要-100
作者: danpianji258    時間: 2015-4-11 15:02
panzishi123456 發(fā)表于 2015-4-11 14:53
5kHz周期為200us,半周期為100us,半周期翻轉(zhuǎn)一次,所以65536應(yīng)該要-100

嗯 是的 你比我厲害多了
書寫確實(shí)是大意了
寫程序真的不能大意
學(xué)習(xí)板我買的是天詳?shù)?br /> 這個程序剛運(yùn)行下還是沒有方波出來  還有兩個警告
作者: panzishi123456    時間: 2015-4-11 15:18
void init();中斷初始化放while循環(huán)上面,我也不是很厲害,要學(xué)的東西很多,你的天詳學(xué)習(xí)板跟這個網(wǎng)站的是不是一樣的,有沒有鏈接,我看一下
作者: danpianji258    時間: 2015-4-11 15:30
panzishi123456 發(fā)表于 2015-4-11 15:18
void init();中斷初始化放while循環(huán)上面,我也不是很厲害,要學(xué)的東西很多,你的天詳學(xué)習(xí)板跟這個網(wǎng)站的是 ...

是的 我已經(jīng)換上去了 結(jié)果還是一樣的!你先聯(lián)系一下管理員 它應(yīng)該賣的!
作者: danpianji258    時間: 2015-4-11 15:37
管理員回復(fù)你帖子了 你看看 聯(lián)系他看看
作者: panzishi123456    時間: 2015-4-11 15:52
danpianji258 發(fā)表于 2015-4-11 15:37
管理員回復(fù)你帖子了 你看看 聯(lián)系他看看

多謝了,剛上這論壇沒多久,不知道他移走我貼子,還以為不見了
作者: panzishi123456    時間: 2015-4-11 15:52
danpianji258 發(fā)表于 2015-4-11 15:37
管理員回復(fù)你帖子了 你看看 聯(lián)系他看看

多謝了,剛上這論壇沒多久,不知道他移走我貼子,還以為不見了
作者: danpianji258    時間: 2015-4-11 16:14
panzishi123456 發(fā)表于 2015-4-11 15:52
多謝了,剛上這論壇沒多久,不知道他移走我貼子,還以為不見了

是不是這個R52C的IO口跟不上。∮檬静ㄆ骺 根本就沒有方波出來。。!
作者: panzishi123456    時間: 2015-4-11 16:30
danpianji258 發(fā)表于 2015-4-11 16:14
是不是這個R52C的IO口跟不上!用示波器看 根本就沒有方波出來。。。

才5KHZ,不可能跟不上啊
作者: panzishi123456    時間: 2015-4-11 16:30
danpianji258 發(fā)表于 2015-4-11 16:14
是不是這個R52C的IO口跟不上!用示波器看 根本就沒有方波出來!。!

才5KHZ,不可能跟不上啊
作者: danpianji258    時間: 2015-4-11 16:34
panzishi123456 發(fā)表于 2015-4-11 16:30
才5KHZ,不可能跟不上啊

你買到板子沒有,如果沒有買到的話 你說聲 我將天詳?shù)牡刂方o你 另外 我們加個QQ吧!呵呵  跟你學(xué)習(xí)學(xué)習(xí)
作者: panzishi123456    時間: 2015-4-11 16:36
danpianji258 發(fā)表于 2015-4-11 16:14
是不是這個R52C的IO口跟不上啊!用示波器看 根本就沒有方波出來。。!

你不用定時器,直接主程序那里將P0口取反看看
作者: panzishi123456    時間: 2015-4-11 16:36
說錯了,主函數(shù)
作者: panzishi123456    時間: 2015-4-11 16:39
danpianji258 發(fā)表于 2015-4-11 16:34
你買到板子沒有,如果沒有買到的話 你說聲 我將天詳?shù)牡刂方o你 另外 我們加個QQ吧!呵呵  跟你學(xué)習(xí)學(xué)習(xí)

還沒有,我QQ48325047,互相學(xué)習(xí)
作者: yesonjob    時間: 2015-4-11 22:36
danpianji258 發(fā)表于 2015-4-11 14:19
#include                                                                                         
...

初始化函數(shù)init()應(yīng)該放在while(1)外面。
程序可以優(yōu)化一下,把pwm的變化直接寫在中斷函數(shù)里面,那樣中斷產(chǎn)生后波形變化后再回主函數(shù),就不會有你所說的亂套發(fā)生。但這仍然有誤差,因為進(jìn)入中斷函數(shù)后要重裝初值,單片機(jī)執(zhí)行這動作要一定時間,會影響波形。
其實(shí)最好用定期器方式2,8位自動重裝的。時間到后就直接改變波形,不用重裝初值后再改變波形。
以上只是個人水平所能理解的,要待大神判斷是否正確啊。
看你寫程序的風(fēng)格是學(xué)郭老師的吧,我也在學(xué),一起加油啊,我學(xué)到1602液晶顯示這一章了。
作者: panzishi123456    時間: 2015-4-12 07:27
突然想到51中斷標(biāo)志TF0要軟件清零,在重裝初值那里,加一名TF0=0
作者: panzishi123456    時間: 2015-4-12 09:12
回頭看了資料,是不用軟件清中斷標(biāo)志,記錯了




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