久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 51單片機(jī)入門(mén)經(jīng)驗(yàn)分享4-定時(shí)器的使用 [打印本頁(yè)]

作者: dabing89    時(shí)間: 2018-10-13 08:48
標(biāo)題: 51單片機(jī)入門(mén)經(jīng)驗(yàn)分享4-定時(shí)器的使用
本帖最后由 dabing89 于 2018-10-14 18:56 編輯

                                                    定時(shí)器的使用 ---20181013


好,繼續(xù)更新這個(gè)帖子,前邊我們點(diǎn)亮了流水燈,然而定時(shí)是用DELAY實(shí)現(xiàn)的,實(shí)際上在實(shí)際的項(xiàng)目中,DELAY基本上不會(huì)用,如果一個(gè)程序中,主循環(huán)有大量的DELAY出現(xiàn),那么就不合理了,所以必須要用定時(shí)器 ,保證程序的實(shí)時(shí)性,這一貼,我們寫(xiě)一個(gè)程序,用定時(shí)器0來(lái)實(shí)現(xiàn)LED間隔500MS閃爍的效果   ,代碼如下:   
  1. /*******************************************************************
  2. * 文件名  LED0 500MS閃爍
  3. * 描述:        點(diǎn)亮LED---用定時(shí)器的辦法
  4. * 2018-09-19 調(diào)試通過(guò)
  5. * 功能  入門(mén)模板
  6. * 作者: 大核桃
  7. * 版本號(hào):V1.00(2018.09.19)
  8. ********************************************************************/
  9. #include "config.h"
  10. #include "intrins.h"


  11. /*******************************************************************
  12. * 文件名 變量重新定義區(qū)域
  13. * 描述:        
  14. * 功 能
  15. * 作者:大核桃
  16. * 版本號(hào):V1.00(2018.09.17)
  17. ********************************************************************/

  18. typedef unsigned char uint8;//無(wú)符號(hào)字符型
  19. typedef unsigned int  uint16;//無(wú)符號(hào)整型
  20. typedef unsigned long uint32;//無(wú)符號(hào)長(zhǎng)整型


  21. /*******************************************************************
  22. * 文件名:位重新定義區(qū)域 函數(shù)前置聲明
  23. * 描述:        
  24. * 功 能
  25. * 作者:大核桃
  26. * 版本號(hào):V1.00(2018.09.17)
  27. ********************************************************************/
  28. void Delay500ms();                //@11.0592MHz
  29. void MCU_Port_Init(void);
  30. void Bsp_Tim0_Init(void);

  31. sbit LED0 = P1^0;
  32. sbit LED1 = P1^1;
  33. sbit LED2 = P1^2;
  34. sbit LED3 = P1^3;
  35. sbit LED4 = P1^4;
  36. sbit LED5 = P3^2;
  37. sbit LED6 = P0^0;
  38. sbit LED7 = P0^1;

  39. bit flag500ms = 0;//500ms定時(shí)標(biāo)志位


  40. /*******************************************************************
  41. * 文件名 main函數(shù)入口
  42. * 描述:        
  43. * 功 能
  44. * 作者:大核桃
  45. * 版本號(hào):V1.00(2018.09.17)
  46. ********************************************************************/
  47. void main(void)
  48. {
  49.         MCU_Port_Init();//端口模式初始化函數(shù)
  50.         Bsp_Tim0_Init();//定時(shí)器0初始化函數(shù)


  51.         while(1)
  52.         {           
  53.                 if(flag500ms)
  54.                 {
  55.                         P2 = 0XFE;//1111_1110;
  56.                 }
  57.                 else
  58.                 {
  59.                    P2 = 0XFF;//1111_1111;        
  60.                 }

  61.         }
  62. }

  63. /*******************************************************************
  64. * 文件名:void MCU_Port_Init(void)
  65. * 描述:        MCU端口上電初始化函數(shù)
  66. * 功 能
  67. * 作者:大核桃
  68. * 版本號(hào):V1.00(2018.09.17)
  69. ********************************************************************/
  70. void MCU_Port_Init(void)
  71. {
  72.         //第0 和1位配置推完輸出模式,大電流
  73.         P0M1 = 0XFC; //        1111_1100
  74.         P0M0 = 0X03; // 0000_0011

  75.         //第01234位配置推完輸出模式,大電流,567配置高阻輸入,用于ADC
  76.         P1M1 = 0XE0; //1110_0000        
  77.         P1M0 = 0X1F; //0001_1111

  78.         //P2配置位準(zhǔn)雙向口
  79.         P2M1 = 0X00; //0000_0000        
  80.         P2M0 = 0X00; //0000_0000

  81.         P2 = 0XFF;//P2口初始化為1

  82.         //P5配置位準(zhǔn)雙向口
  83.         P5M1 = 0X00; //0000_0000        
  84.         P5M0 = 0X00; //0000_0000

  85.         P5 = 0XFF;//P5口初始化為1

  86.         //P3 23467推完輸出
  87.         P3M1 = 0X00; //0000_0000        
  88.         P3M0 = 0XFC; //1101_1100

  89.         P3 = 0X23;  //0010_0011


  90.         //上電IO默認(rèn)是0
  91.         LED0 = 1;//輸出1
  92.         LED1 = 0;
  93.         LED2 = 0;
  94.         LED3 = 0;
  95.         LED4 = 0;
  96.         LED5 = 0;
  97.         LED6 = 0;
  98.         LED7 = 0;//
  99.                
  100. }

  101. /*******************************************************************
  102. * 文件名:void Bsp_Tim0_Init(void)
  103. * 描述:        定時(shí)器0初始化函數(shù)
  104. * 功 能
  105. * 作者:大核桃
  106. * 版本號(hào):V1.00(2018.09.19)
  107. ********************************************************************/
  108. void Bsp_Tim0_Init(void)                //1000微秒@11.0592MHz
  109. {
  110.         AUXR |= 0x80;                //定時(shí)器時(shí)鐘1T模式
  111.         TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
  112.         TMOD |= 0X01;      
  113.         TH0 = 0xD4;                    //設(shè)置定時(shí)初值
  114.         TL0 = 0xCD;                    //設(shè)置定時(shí)初值
  115.         TR0 = 1;                    //定時(shí)器0開(kāi)始計(jì)時(shí)
  116.         ET0 = 1;            //使能定時(shí)器0的中斷
  117.         EA = 1;             //打開(kāi)總中斷
  118. }

  119. /*******************************************************************
  120. * 文件名:TIM0_IRQ_Handler
  121. * 描  述:中斷服務(wù)函數(shù)        
  122. * 功  能 中斷服務(wù)標(biāo)號(hào) INT0 ET0 INT1 ET1 UART1 ADC LVD TIME2
  123. * 優(yōu)先級(jí):                      0            1    2         3          4           5   6    12
  124. * 版本號(hào):V1.00(2018.09.19)
  125. ********************************************************************/
  126. void TIM0_IRQ_Handler(void) interrupt 1
  127. {
  128.     static uint16 tmr500ms = 0;

  129.         TH0 = 0xD4;                    //設(shè)置定時(shí)初值
  130.         TL0 = 0xCD;                    //設(shè)置定時(shí)初值

  131.         tmr500ms++;
  132.         if(tmr500ms >= 500)
  133.         {
  134.                 tmr500ms = 0;

  135.                 flag500ms = !flag500ms;        //500MS閃爍
  136.         }
  137.         
  138.                
  139. }
復(fù)制代碼


因?yàn)樵趯?shí)際使用中,定時(shí)器和中斷都是在一起配合使用,所以這兒我們就不分開(kāi),但是要說(shuō)的是,定時(shí)器是硬件,是單片機(jī)內(nèi)部存在的一個(gè)模塊,而中斷僅僅是一種處理問(wèn)題的機(jī)制,上面這個(gè)d代碼看著不多,但是消息量很大,我們一點(diǎn)一點(diǎn)解剖,理解了定時(shí)器的的原理,等你上手STM32的時(shí)候,定時(shí)器原理可以直接不看,直接拿來(lái)用就好了。
    先從STC89C52RC的開(kāi)始說(shuō)起,我們知道,STC89C52RC是標(biāo)準(zhǔn)51內(nèi)核,在標(biāo)準(zhǔn)51的體系下,12個(gè)時(shí)鐘周期是一個(gè)機(jī)器周期,啥意思呢?比如你的外部晶振是11.0592MHZ,那么11059200的倒數(shù),也就是周期了,這個(gè)倒數(shù)叫做時(shí)鐘周期,也叫震蕩周期,算一下時(shí)間,1/11059200 = 0.0904US,這就是STC89C52的時(shí)鐘周期,那么51單片機(jī)就規(guī)定,12個(gè)這樣的時(shí)鐘周期為一個(gè)機(jī)器周期,所以在乘以12,那么一個(gè)機(jī)器周期的數(shù)值是1.085US,注意這是在11.0592MHZ下,如果是在12MHZ下,那么一個(gè)機(jī)器周期就是1US,這就是定時(shí)器的時(shí)間基準(zhǔn)。我們?cè)賮?lái)看下,如果我們用STC89C52來(lái)做一個(gè)500MS的定時(shí)器該怎么做呢?配置如下即可實(shí)現(xiàn):
  1. /*******************************************************************
  2. * 文件名:void Bsp_Tim0_Init(void)
  3. * 描述:        定時(shí)器0初始化函數(shù)
  4. * 功 能
  5. * 作者:大核桃
  6. * 版本號(hào):V1.00(2018.09.19)
  7. ********************************************************************/
  8. void Bsp_Tim0_Init(void)                //1000微秒@11.0592MHz
  9. {
  10.         TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
  11.         TMOD |= 0X01;      
  12.         TH0 = 0xFC;                    //設(shè)置定時(shí)初值
  13.         TL0 = 0x66;                    //設(shè)置定時(shí)初值
  14.         TR0 = 1;                    //定時(shí)器0開(kāi)始計(jì)時(shí)
  15.         ET0 = 1;            //使能定時(shí)器0的中斷
  16.         EA = 1;             //打開(kāi)總中斷

  17. }

  18. /*******************************************************************
  19. * 文件名:TIM0_IRQ_Handler
  20. * 描  述:中斷服務(wù)函數(shù)        
  21. * 功  能 中斷服務(wù)標(biāo)號(hào) INT0 ET0 INT1 ET1 UART1 ADC LVD TIME2
  22. * 優(yōu)先級(jí):                      0            1    2         3          4           5   6    12
  23. * 版本號(hào):V1.00(2018.09.19)
  24. ********************************************************************/
  25. void TIM0_IRQ_Handler(void) interrupt 1
  26. {
  27.     static uint16 tmr500ms = 0;

  28.         TH0 = 0xFC;                    //設(shè)置定時(shí)初值
  29.         TL0 = 0x66;                    //設(shè)置定時(shí)初值

  30.         tmr500ms++;
  31.         if(tmr500ms >= 500)
  32.         {
  33.                 tmr500ms = 0;

  34.                 flag500ms = !flag500ms;        //500MS閃爍
  35.         }
  36.         
  37.                
  38. }
復(fù)制代碼



還是來(lái)解釋下,首先定時(shí)器的配置步驟是這樣的:
1.先設(shè)置TMOD這個(gè)寄存器,選擇定時(shí)器0的模式寄存器,配置定時(shí)器0為16位不可重裝載模式

2.設(shè)置定時(shí)器的定時(shí)初值,高八位和低八位
3.打開(kāi)定時(shí)器的運(yùn)行標(biāo)志位,因?yàn)門(mén)CON是一個(gè)可位尋址的寄存器,所以直接TR0 = 1;就好。
4.使能定時(shí)器0的中斷ET0
5.打開(kāi)總中斷EA
OK,這樣就配置好了寄存器,定時(shí)器也可以工作了,然而我們了解定時(shí)器是怎么運(yùn)行的了嗎?沒(méi)有!!!很多人不知道為啥是這個(gè)數(shù)值,而且定時(shí)器的的初值還有好幾種寫(xiě)法,如果有人用了不一樣的而寫(xiě)法,你一定要知道是等價(jià)的寫(xiě)法。


  關(guān)于初值的計(jì)算
   我們知道定時(shí)器0是一個(gè)16位的定時(shí)器,最大計(jì)數(shù)65536(0-65535)分為高八位和低八位,TH0存儲(chǔ)的是高八位的數(shù)據(jù),TL0存儲(chǔ)的是低八位的數(shù)據(jù),0XFC是一個(gè)16進(jìn)制數(shù)值,換算10進(jìn)制是252,0X66是102,我們知道低八位最大計(jì)數(shù)到255,TH0就變成1,然后進(jìn)位,清零,又開(kāi)始從0計(jì)數(shù),那么我們可以算算這個(gè)初值是多少?252*256 +102 = 64614,而64614的16進(jìn)制表示形式就是0XFC66,這樣我們就搞清楚定時(shí)器的計(jì)時(shí)原理了,如下所示,初值代碼可以改寫(xiě)成這樣:
  1. TH0 = (65535 - 921) / 256;                    //設(shè)置定時(shí)初值
  2.         TL0 = (65535 - 921) % 256;                    //設(shè)置定時(shí)初值
復(fù)制代碼
也就是說(shuō),我們讓單片機(jī)從64614開(kāi)始計(jì)數(shù),到65535溢出,總共計(jì)數(shù)921個(gè),而我們又知道1個(gè)機(jī)器周期是1.085US,那么921個(gè)機(jī)器周期是多少呢?921*1.085 = 1000US,正好是1MS的定時(shí),我們?cè)诔绦蛑凶屍湟绯?00次,那么不就是500MS了嗎?就是這樣來(lái)的,原理一定要搞清楚。不管什么STM32,64,128都是這樣的原理{:lol:}。關(guān)于中斷使用的時(shí)候,打開(kāi)使能就好了,EA是總中斷使能位,如果這個(gè)不打開(kāi),ET0單獨(dú)打開(kāi)是沒(méi)用的,這才是一把手。
   關(guān)于STC15W系列的定時(shí)器
好了,既然我們搞清楚了,STC89C52的定時(shí)器的原理了,我們來(lái)看下,STC15W的定時(shí)器配置,因?yàn)槲覀兌际嵌〞r(shí)1MS,那么,為啥初值不一樣呢?我們來(lái)算下STC15W的這個(gè)初值對(duì)應(yīng)的10進(jìn)制數(shù)值是多少?是54477,好陌生的數(shù)字,怎么來(lái)的呢?65536-54477 = 11059,也就是說(shuō)在STC15W的內(nèi)核下,我們只要計(jì)數(shù)11059個(gè),就可以達(dá)到1MS的定時(shí),我們知道,STC15W是單周期的時(shí)鐘,也就是說(shuō)我們不12分頻,我們直接就是一個(gè)時(shí)鐘周期就是一個(gè)機(jī)器周期,(1/11059200)*11059 = 1ms,明白了吧?所以,本節(jié)的程序代碼,也可以這樣寫(xiě),是一樣的作用的。
  1. /*******************************************************************
  2. * 文件名:void Bsp_Tim0_Init(void)
  3. * 描述:        定時(shí)器0初始化函數(shù)
  4. * 功 能
  5. * 作者:大核桃
  6. * 版本號(hào):V1.00(2018.09.19)
  7. ********************************************************************/
  8. void Bsp_Tim0_Init(void)                //1000微秒@11.0592MHz
  9. {
  10.         AUXR |= 0x80;                //定時(shí)器時(shí)鐘1T模式
  11.         TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
  12.         TMOD |= 0X01;      
  13. //        TH0 = 0xD4;                    //設(shè)置定時(shí)初值
  14. //        TL0 = 0xCD;                    //設(shè)置定時(shí)初值
  15.         TH0 = (65535 - 11059) / 256;//設(shè)置定時(shí)初值
  16.         TL0 = (65535 - 11059) % 256;//設(shè)置定時(shí)初值
  17.         TR0 = 1;                    //定時(shí)器0開(kāi)始計(jì)時(shí)
  18.         ET0 = 1;            //使能定時(shí)器0的中斷
  19.         EA = 1;             //打開(kāi)總中斷

  20. }
復(fù)制代碼




關(guān)于在單片機(jī)中大量存在的& |運(yùn)算的詳細(xì)說(shuō)明
    其實(shí)這個(gè),不太想說(shuō),但無(wú)奈上網(wǎng)看到好多初學(xué)者根本不知道& |的作用,還是詳細(xì)的說(shuō)明下比較好,以定時(shí)器0的配置為例。
    AUXR |= 0x80; AUXR是一個(gè)輔助寄存器,這不需要多說(shuō),|= 0x80有什么講究呢?|(或),是讓某一位置1的意思,讓那一位置一呢?很明顯,讓是1的那一位置一,0X80不就是最高位是1嗎?那就是讓最高位置一好了,有人說(shuō),這有啥用呢?本來(lái)不就是1嗎?人家還有后半句,而其他位保持不變,其他位?啥位?等于0的那些對(duì)吧?也就是低7位不變了。這樣操作有啥好處呢?我們知道ET0 = 1;TR0 = 1;之所以可以這樣操作,是因?yàn)樗麄兛梢员晃粚ぶ罚梢赃M(jìn)行單獨(dú)的位操作,而AUXR是不可以進(jìn)行位尋址的,因此一次操作必須操作8個(gè)位,你想想看,AUXR這個(gè)寄存器的功能如下圖:

   你能保證直接讓AUXR = 0X80,不對(duì)其他位造成影響嗎?現(xiàn)在大家的編程還比較簡(jiǎn)單,只有一個(gè)定時(shí)器,要是用到3個(gè),4個(gè)定時(shí)器呢?這樣不就互相干擾了嗎?扯淡么?所以 & |的重要性也就凸現(xiàn)出來(lái)了。
   再來(lái)看后面這2句,很明顯TMOD是不可以位尋址的,按照我們剛才的分析,|是讓某一位置一,那么&,自然就是讓某一位清零了,來(lái)看下0XF0,二進(jìn)制是1111_0000,也就是低4位置0,高4位不要管,因?yàn)?amp;是乘法運(yùn)算啊,只要都是1,那么就是1,很明顯讓低4位清零,下一句是0000_0001,讓最低為置一啊,對(duì)吧,要注意,這里的2句是連續(xù)操作的,不是單獨(dú)的的操作,什么意思?前者的運(yùn)算結(jié)果,又給了后者,所以我們總體來(lái)看這2句代碼,先讓低四位清零,高四位不變,然后將這個(gè)結(jié)果進(jìn)行或運(yùn)算,讓最低位置一,而高7位都不變,因?yàn)槿魏螖?shù)|還是任何數(shù)啊,對(duì)吧,這就達(dá)到了一個(gè)互不干擾的目的,這樣的代碼在STM32上好多好多的,都是起到一個(gè)互不干擾的作用。這樣的做法可以確保定時(shí)器0和定時(shí)器1是獨(dú)立的,如果我們不這樣做,你看看是工作在啥模式?除了定時(shí)器配置在16位不可重裝模式在,定時(shí)器1被配置在了16位自動(dòng)重裝定時(shí)器,我們沒(méi)有使用定時(shí)器1,萬(wàn)一出錯(cuò)怎么辦?這就不好了。
  

關(guān)于自動(dòng)重裝載和不可自動(dòng)重裝模式
  其實(shí),沒(méi)啥太大的區(qū)別,如果是自動(dòng)重裝,那么在中斷服務(wù)函數(shù)中,TH0 TL0就不需要去再去重新賦值了,直接刪掉就好,如果不是自動(dòng)重裝,則必須要加。還差點(diǎn)忘了一個(gè)事,你怎么確定你的定時(shí)是500MS呢?答案不能靠眼睛看把,看看示波器觀察的結(jié)果,嗯,是對(duì)的。如下圖,1S 1HZ的方波信號(hào)

好了,今天就到這里吧,代碼上傳 004 定時(shí)器的使用.rar (30.68 KB, 下載次數(shù): 92)







作者: 哈哈我哈哈    時(shí)間: 2018-10-14 14:51
我不明白為啥這么好的分享瀏覽量這么低呢,樓主加油
作者: dabing89    時(shí)間: 2018-10-14 15:28
哈哈我哈哈 發(fā)表于 2018-10-14 14:51
我不明白為啥這么好的分享瀏覽量這么低呢,樓主加油

謝謝支持
作者: djz_1688    時(shí)間: 2018-10-26 09:53
樓主厲害
作者: qq76832893    時(shí)間: 2018-10-27 16:29
感謝分享,正在學(xué)習(xí)單片機(jī),
作者: XMJ.    時(shí)間: 2018-10-27 22:41
感謝分享
作者: vectorxu    時(shí)間: 2018-10-29 14:15

感謝分享,正在學(xué)習(xí)單片機(jī),
作者: y352715553    時(shí)間: 2018-10-29 22:45
真的好實(shí)用,正好解決了我的疑惑,力贊!!!!!
作者: enchidianzi    時(shí)間: 2018-11-2 06:55
挺不錯(cuò)的資料
作者: 打雜的    時(shí)間: 2018-11-15 18:25
咋沒(méi)有專(zhuān)門(mén)寫(xiě)匯編語(yǔ)言的內(nèi)容?
作者: 紫色的云    時(shí)間: 2018-11-20 08:49
謝謝樓主的分享,很詳細(xì)的講解
作者: jake-119001234    時(shí)間: 2018-11-20 11:33
好東東,下載學(xué)習(xí)下!!1
作者: 陳臣?jí)m    時(shí)間: 2018-11-21 01:22
樓主,我有個(gè)地方不懂,從第二次溢出開(kāi)始,進(jìn)入中斷后tmr500ms不是都會(huì)重新賦值為零嗎,這樣子不是不會(huì)大于或等于500嗎,那怎么執(zhí)行if函數(shù)
作者: dabing89    時(shí)間: 2018-11-21 15:40
陳臣?jí)m 發(fā)表于 2018-11-21 01:22
樓主,我有個(gè)地方不懂,從第二次溢出開(kāi)始,進(jìn)入中斷后tmr500ms不是都會(huì)重新賦值為零嗎,這樣子不是不會(huì)大于 ...

void TIM0_IRQ_Handler(void) interrupt 1
{
    static uint16 tmr500ms = 0;

        TH0 = 0xFC;                    //設(shè)置定時(shí)初值
        TL0 = 0x66;                    //設(shè)置定時(shí)初值

        tmr500ms++;//這個(gè)你應(yīng)該沒(méi)有看到
作者: 時(shí)光倒影    時(shí)間: 2018-12-13 11:39
謝謝樓主分享
作者: cjh060594766    時(shí)間: 2018-12-24 14:33
學(xué)習(xí) 學(xué)習(xí)
作者: 2019keil    時(shí)間: 2019-1-23 11:46
感謝分享
作者: dianzifashaoyou    時(shí)間: 2019-3-23 21:42
謝謝分享好好學(xué)習(xí)。
作者: duan子    時(shí)間: 2019-4-14 14:46
謝謝分享好好學(xué)習(xí)

作者: qiaohw519    時(shí)間: 2019-4-14 16:34
這個(gè)文章真是太接地氣了,基本上把定時(shí)掰開(kāi)了講清楚了
說(shuō)的非常好,初學(xué)者都能夠看懂,
受益良多
作者: he992790757    時(shí)間: 2019-6-15 14:24
感謝分享!!!
作者: yfpc2006    時(shí)間: 2019-7-28 18:23
很適合初學(xué)者,或者這方面理解不清的朋友!
講的非常好,樓主加油~~~~~
作者: 小黑屋525    時(shí)間: 2019-7-28 18:37
這是真的好貼,加油!
作者: mengbook    時(shí)間: 2019-8-15 08:31
樓主 是怎么自學(xué)的
作者: baiwj2004    時(shí)間: 2020-2-11 07:21


感謝分享,正在學(xué)習(xí)單片機(jī),
作者: sklx24503    時(shí)間: 2020-6-16 15:12
謝謝樓主的分享,很詳細(xì)的講解
作者: shineben    時(shí)間: 2020-9-2 16:36
樓主,還有后續(xù)經(jīng)驗(yàn)分享嗎??
作者: maozj    時(shí)間: 2020-9-15 22:38
講解的很清楚,謝謝!
作者: seethrufxl    時(shí)間: 2021-1-12 16:38
樓主高手,謝謝了!
作者: 51mcu學(xué)習(xí)    時(shí)間: 2021-1-23 20:14
感謝分享,正在學(xué)習(xí)單片機(jī)!
作者: 山外天驚天外山    時(shí)間: 2021-2-10 20:52
http://www.zg4o1577.cn/bbs/dpj-202537-1.html
作者: lsh04    時(shí)間: 2021-3-2 08:50
感謝分享,正在學(xué)習(xí)單片機(jī)
作者: lsg0280    時(shí)間: 2021-7-9 17:57
溫習(xí)定時(shí)器的使用,多看看有啟發(fā)。
作者: andygo    時(shí)間: 2022-3-7 09:43
對(duì)初學(xué)者很友發(fā),值得多看幾次
作者: mcuhui    時(shí)間: 2022-4-9 18:53
這樣的C教材還是第一次拜讀,比那些所謂名校的教材更加通俗易懂
作者: yaofuming    時(shí)間: 2022-5-1 20:34
別的不服,就服樓主。&、|、TH0、TL0講得非常非常清楚!
作者: 人生涅槃    時(shí)間: 2022-6-22 17:28
謝謝樓主我會(huì)來(lái)學(xué)習(xí)的
作者: zzzzz8840    時(shí)間: 2022-10-19 10:44
就是定時(shí)器搞不懂,這文章太好了,萬(wàn)分感謝!
作者: wyl138    時(shí)間: 2022-10-31 20:19
聽(tīng)君一席話,勝讀十年書(shū),拜謝!
作者: Olivialivia    時(shí)間: 2022-12-29 16:44
說(shuō)實(shí)話,這是我看過(guò)講定時(shí)器講的最清楚的了,點(diǎn)贊
作者: 51老鷹    時(shí)間: 2023-2-1 10:09
終于知道為什么要這樣了,感謝樓主。
作者: chengchun    時(shí)間: 2023-3-26 16:40
寫(xiě)得太好了,剛接觸51單片機(jī),簡(jiǎn)單的點(diǎn)亮LED和花樣流水燈都會(huì)了,開(kāi)始學(xué)習(xí)更深的知識(shí),謝謝
作者: Q__Q    時(shí)間: 2023-5-13 15:01
謝謝樓主 這篇我看懂了來(lái)龍去脈了 終于對(duì)定時(shí)器明白了一些 收藏學(xué)習(xí)




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 一级毛片视频 | 一区二区三 | 久草视频在线播放 | 久久国产精品无码网站 | 亚洲精选久久 | 亚州精品天堂中文字幕 | 久久久久久久久久性 | www.婷婷| 国产成在线观看免费视频 | 国产精品精品视频一区二区三区 | 精品久久久久国产 | 成人在线观看欧美 | 国产精品亚洲第一区在线暖暖韩国 | 永久免费av | 亚洲 欧美 另类 日韩 | 日韩视频精品在线 | 伊人网站在线 | 欧美一级免费看 | 日本网站免费在线观看 | 国产福利资源 | 亚洲色图图片 | 水蜜桃久久夜色精品一区 | 99色综合 | 欧美xxxx网站 | 91久久综合亚洲鲁鲁五月天 | 亚洲免费高清 | 日日干综合 | 国产成人91视频 | 99精品视频在线 | 日韩成人免费在线视频 | 国产亚洲成av人在线观看导航 | 国产一区二区三区四区在线观看 | 国产日韩精品一区二区三区 | 欧美一区二区三区一在线观看 | 欧美在线色视频 | 国产成人99久久亚洲综合精品 | 国产91丝袜在线18 | 国产精品日韩在线观看一区二区 | 国产亚洲一区二区三区在线 | 99国产在线 | 激情综合五月 |