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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3212|回復(fù): 6
收起左側(cè)

新手弄的單片機(jī)定時(shí)器延時(shí)代碼

[復(fù)制鏈接]
ID:260656 發(fā)表于 2022-10-29 11:33 | 顯示全部樓層 |閱讀模式
新手弄的定時(shí)器延時(shí)代碼歡迎高手指點(diǎn)

         #include <reg52.h>                        //頭文件                        
         #include <intrins.h>

         #define uchar unsigned char // 數(shù)據(jù)類型簡(jiǎn)化-起別名
        #define uint unsigned int        // 數(shù)據(jù)類型簡(jiǎn)化-起別名
        uint n,i,j,m;


          //定時(shí)1ms ***************************************************
        {
           TMOD |= 0x01;                //定時(shí)器0,工作方式1,16位
            TH0 = 0xfc;                //初值高8位
            TL0 =0x66;                 //初值低8位
                TF0 =0;                  //溢出清0
            TR0 = 1;                          //打開(kāi)定時(shí)器T0
                  EA=0;                                  //關(guān)閉總中斷
                ET0=0;                                  //關(guān)閉T0中斷
                while(TF0 ==0);              //溢出等待
                TR0 = 0;                          //暫停定時(shí)器T0
           }
//*************************************************************************
          //定時(shí)10ms ***************************************************
        {
           TMOD |= 0x01;                //定時(shí)器0,工作方式1,16位
            TH0 = 0xdc;                //初值高8位
            TL0 =0x00;                 //初值低8位
                TF0 =0;                  //溢出清0
            TR0 = 1;                          //打開(kāi)定時(shí)器T0
                  EA=0;                                  //關(guān)閉總中斷
                ET0=0;                                  //關(guān)閉T0中斷
                while(TF0 ==0);              //溢出等待
                TR0 = 0;                          //暫停定時(shí)器T0
           }
//*************************************************************************
          //定時(shí)20ms ***************************************************
        {
           TMOD |= 0x01;                //定時(shí)器0,工作方式1,16位
            TH0 = 0xb8;                //初值高8位
            TL0 =0x00;                 //初值低8位
                TF0 =0;                  //溢出清0
            TR0 = 1;                          //打開(kāi)定時(shí)器T0
                  EA=0;                                  //關(guān)閉總中斷
                ET0=0;                                  //關(guān)閉T0中斷
                while(TF0 ==0);              //溢出等待
                TR0 = 0;                          //暫停定時(shí)器T0
           }
//*************************************************************************
          //定時(shí)30ms ***************************************************
        {
           TMOD |= 0x01;                //定時(shí)器0,工作方式1,16位
            TH0 = 0x94;                //初值高8位
            TL0 =0x00;                 //初值低8位
                TF0 =0;                  //溢出清0
            TR0 = 1;                          //打開(kāi)定時(shí)器T0
                  EA=0;                                  //關(guān)閉總中斷
                ET0=0;                                  //關(guān)閉T0中斷
                while(TF0 ==0);              //溢出等待
                TR0 = 0;                          //暫停定時(shí)器T0
           }
//*************************************************************************
          //定時(shí)40ms ***************************************************
        {
           TMOD |= 0x01;                //定時(shí)器0,工作方式1,16位
            TH0 = 0x70;                //初值高8位
            TL0 =0x00;                 //初值低8位
                TF0 =0;                  //溢出清0
            TR0 = 1;                          //打開(kāi)定時(shí)器T0
                  EA=0;                                  //關(guān)閉總中斷
                ET0=0;                                  //關(guān)閉T0中斷
                while(TF0 ==0);              //溢出等待
                TR0 = 0;                          //暫停定時(shí)器T0
           }
//*************************************************************************
//定時(shí)50ms ***************************************************
        {
           TMOD |= 0x01;                //定時(shí)器0,工作方式1,16位
            TH0 = 0x4c;                //初值高8位
            TL0 =0x00;                 //初值低8位
                TF0 =0;                  //溢出清0
            TR0 = 1;                          //打開(kāi)定時(shí)器T0
                  EA=0;                                  //關(guān)閉總中斷
                ET0=0;                                  //關(guān)閉T0中斷
                while(TF0 ==0);              //溢出等待
                TR0 = 0;                          //暫停定時(shí)器T0
           }
//*************************************************************************
//定時(shí)60ms ***************************************************
        {
           TMOD |= 0x01;                //定時(shí)器0,工作方式1,16位
            TH0 = 0x28;                //初值高8位
            TL0 =0x00;                 //初值低8位
                TF0 =0;                  //溢出清0
            TR0 = 1;                          //打開(kāi)定時(shí)器T0
                  EA=0;                                  //關(guān)閉總中斷
                ET0=0;                                  //關(guān)閉T0中斷
                while(TF0 ==0);              //溢出等待
                TR0 = 0;                          //暫停定時(shí)器T0
           }
//*************************************************************************

//定時(shí)70ms ***************************************************
        {
           TMOD |= 0x01;                //定時(shí)器0,工作方式1,16位
            TH0 = 0x04;                //初值高8位
            TL0 =0x00;                 //初值低8位
                TF0 =0;                  //溢出清0
            TR0 = 1;                          //打開(kāi)定時(shí)器T0
                  EA=0;                                  //關(guān)閉總中斷
                ET0=0;                                  //關(guān)閉T0中斷
                while(TF0 ==0);              //溢出等待
                TR0 = 0;                          //暫停定時(shí)器T0
           }
//*************************************************************************
void delay(n)           //定時(shí)1ms的n(n<10)倍數(shù)  ***************************
          {
           for(i=0;i<n;i++)                  
           {
            TMOD |= 0x01;                //定時(shí)器0,工作方式1,16位
            TH0 = 0xfc;                //初值高8位
            TL0 =0x66;                 //初值低8位
                TF0 =0;                  //溢出清0
            TR0 = 1;                          //打開(kāi)定時(shí)器T0
                  EA=0;                                  //關(guān)閉總中斷
                ET0=0;                                  //關(guān)閉T0中斷
                while(TF0 ==0);              //溢出等待
                TR0 = 0;                          //暫停定時(shí)器T0
           }
          }
//*************************************************************************
void delay(m)           //定時(shí)50ms的m(m<=20)倍數(shù)  **************************
          {
           for(j=0;j<m;j++)                  
           {
            TMOD |= 0x01;                //定時(shí)器0,工作方式1,16位
            TH0 = 0x4c;                //初值高8位
            TL0 =0x00;                 //初值低8位
                TF0 =0;                  //溢出清0
            TR0 = 1;                          //打開(kāi)定時(shí)器T0
                  EA=0;                                  //關(guān)閉總中斷
                ET0=0;                                  //關(guān)閉T0中斷
                while(TF0 ==0);              //溢出等待
                TR0 = 0;                          //暫停定時(shí)器T0
           }
          }
//*************************************************************************



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:1044091 發(fā)表于 2022-10-29 21:35 | 顯示全部樓層
STC-ISP 軟件里也有一個(gè)定時(shí)器計(jì)算器,直接復(fù)制代碼就行。

捕獲.JPG

回復(fù)

使用道具 舉報(bào)

ID:496636 發(fā)表于 2022-10-29 21:46 | 顯示全部樓層
定時(shí)1毫秒,如果單片機(jī)的頻率是11059200HZ,這個(gè)就是單片機(jī)的時(shí)鐘頻率,而機(jī)器工作頻率則為時(shí)鐘頻率的12分之一,即921600HZ,我們關(guān)注的計(jì)數(shù)頻率就是機(jī)器工作頻率,意味著每1秒鐘它可以數(shù)數(shù)921600,如果要定時(shí)1毫秒,那么在這1毫秒時(shí)間內(nèi),可以數(shù)數(shù)921.6。算它是922。而二個(gè)字節(jié)的最大數(shù)是65535,再加1就是65536(十六進(jìn)制數(shù)就是0XFFFF,再加1就是0X10000)所以要讓計(jì)數(shù)器數(shù)數(shù)922下,能產(chǎn)生溢出那么這個(gè)數(shù)就是65536-922=64614,轉(zhuǎn)成十六進(jìn)制數(shù)為FC66,其實(shí)要想讓它精確點(diǎn),應(yīng)該比這個(gè)值大點(diǎn),如是FC67,使定時(shí)微小于1毫秒,因?yàn)楫a(chǎn)生中斷后,重載定時(shí)器等操作都需要額外的時(shí)間,如果前頭定時(shí)剛好1毫秒,那么加上額外的時(shí)間,就會(huì)超過(guò)1毫秒了。
定時(shí)器的初始化,開(kāi)總中斷,還是開(kāi)定時(shí)中斷,還是開(kāi)啟定時(shí)器都是在main函數(shù)的除while(1)以前的語(yǔ)句執(zhí)行的,這樣之前的語(yǔ)句只執(zhí)行一次,然后while(1)一直執(zhí)行,在while(1)的循環(huán)體里,對(duì)TF溢出標(biāo)志不斷判斷,來(lái)確定定時(shí)時(shí)間是否已到。

//定時(shí)1ms ***************************************************
        
           TMOD |= 0x01;                //定時(shí)器0,工作方式1,16位
            TH0 = 0xfc;                //初值高8位
            TL0 =0x66;                 //初值低8位
            EA=1;                        //開(kāi)總中斷
            ET0=1;                          //開(kāi)定時(shí)器中斷
            TR0 = 1;                          //打開(kāi)定時(shí)器T0
            while(1)
        {
                 if(TF0==1)                    //判斷定時(shí)器1是否溢出         
                {
                   TF0=0;                //復(fù)位定時(shí)器0中斷標(biāo)志位
                   執(zhí)行你要執(zhí)行的語(yǔ)句,如計(jì)時(shí),如某個(gè)變量加1

                }                                 
               
               
           }
回復(fù)

使用道具 舉報(bào)

ID:496636 發(fā)表于 2022-10-29 22:00 | 顯示全部樓層
在西門(mén)子S7-200PLC中,有系統(tǒng)特殊寄存器,如SM0.1和SM0.0還是SM0.5,都是特殊意義,SM0.1就是PLC開(kāi)機(jī)首次掃描執(zhí)行一次,然后就不執(zhí)行了,它是起到初始化的作用,在單片機(jī)里實(shí)現(xiàn),你可以在單片機(jī)開(kāi)頭書(shū)寫(xiě),然后加個(gè)while(1)循環(huán)體,while(1)之前就是初始化,while(1)之后就是循環(huán)體內(nèi)一直執(zhí)行下去,它是不斷往復(fù)執(zhí)行下去。在PLC中編程,我一條語(yǔ)句只要開(kāi)機(jī)執(zhí)行一次,那只要在繪制梯形圖時(shí),在其能流左端加上sm0.1的常開(kāi)觸點(diǎn)即可。
而SM0.5,就是半秒ON(1),半秒OFF(0)的布爾變量,用它就能得到秒計(jì)數(shù)器,用它來(lái)使能一個(gè)計(jì)數(shù)器,就能得到一個(gè)秒表。
學(xué)習(xí)知識(shí)要懂得融匯貫通。
回復(fù)

使用道具 舉報(bào)

ID:496636 發(fā)表于 2022-10-29 22:13 | 顯示全部樓層
漏了二條語(yǔ)句
定時(shí)1毫秒,如果單片機(jī)的頻率是11059200HZ,這個(gè)就是單片機(jī)的時(shí)鐘頻率,而機(jī)器工作頻率則為時(shí)鐘頻率的12分之一,即921600HZ,我們關(guān)注的計(jì)數(shù)頻率就是機(jī)器工作頻率,意味著每1秒鐘它可以數(shù)數(shù)921600,如果要定時(shí)1毫秒,那么在這1毫秒時(shí)間內(nèi),可以數(shù)數(shù)921.6。算它是922。而二個(gè)字節(jié)的最大數(shù)是65535,再加1就是65536(十六進(jìn)制數(shù)就是0XFFFF,再加1就是0X10000)所以要讓計(jì)數(shù)器數(shù)數(shù)922下,能產(chǎn)生溢出那么這個(gè)數(shù)就是65536-922=64614,轉(zhuǎn)成十六進(jìn)制數(shù)為FC66,其實(shí)要想讓它精確點(diǎn),應(yīng)該比這個(gè)值大點(diǎn),如是FC67,使定時(shí)微小于1毫秒,因?yàn)楫a(chǎn)生中斷后,重載定時(shí)器等操作都需要額外的時(shí)間,如果前頭定時(shí)剛好1毫秒,那么加上額外的時(shí)間,就會(huì)超過(guò)1毫秒了。
定時(shí)器的初始化,開(kāi)總中斷,還是開(kāi)定時(shí)中斷,還是開(kāi)啟定時(shí)器都是在main函數(shù)的除while(1)以前的語(yǔ)句執(zhí)行的,這樣之前的語(yǔ)句只執(zhí)行一次,然后while(1)一直執(zhí)行,在while(1)的循環(huán)體里,對(duì)TF溢出標(biāo)志不斷判斷,來(lái)確定定時(shí)時(shí)間是否已到。

//定時(shí)1ms ***************************************************
        
           TMOD |= 0x01;                //定時(shí)器0,工作方式1,16位
            TH0 = 0xfc;                //初值高8位
            TL0 =0x66;                 //初值低8位
            EA=1;                        //開(kāi)總中斷
            ET0=1;                          //開(kāi)定時(shí)器中斷
            TR0 = 1;                          //打開(kāi)定時(shí)器T0
            while(1)
        {
                 if(TF0==1)                    //判斷定時(shí)器1是否溢出         
                {
                   TF0=0;
                TH0 = 0xfc;                //初值高8位
                    TL0 =0x66;                 //初值低8位
                //復(fù)位定時(shí)器0中斷標(biāo)志位
                   執(zhí)行你要執(zhí)行的語(yǔ)句,如計(jì)時(shí),如某個(gè)變量加1

                }                                 
               
               
           }

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:260656 發(fā)表于 2022-10-30 16:01 | 顯示全部樓層
ningsy 發(fā)表于 2022-10-29 21:35
STC-ISP 軟件里也有一個(gè)定時(shí)器計(jì)算器,直接復(fù)制代碼就行。

看了一下,真的有啊,才知道
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2022-11-1 16:38 | 顯示全部樓層
寫(xiě)出公式,做個(gè)EXCEL表貼出來(lái)就行了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表