在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)的定時(shí)器中斷0

            單片機(jī)的定時(shí)器中斷0

            作者: 時(shí)間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
            定時(shí)器工作的流程可以按照這個(gè)順序(以51為例用定時(shí)器0方式一產(chǎn)生50毫秒的定時(shí))
            1、確定使用哪個(gè)定時(shí)器,使用哪種方式,這一步通過TMOD設(shè)置,TMOD的低四位是設(shè)置定時(shí)器0的,高四位是用來設(shè)置定時(shí)器1的,其中的M0,M1是用來設(shè)置定時(shí)器工作在哪種方式,GATE一般用不要設(shè)置,C/T是選擇計(jì)數(shù)模式還是定時(shí)模式的,如:TMOD = 0X01,就說明定時(shí)器0工作在方式1。
            2、接下來就要設(shè)置定時(shí)的時(shí)間,用定時(shí)器定時(shí)50毫秒,可以用這種方式TH0 = (65535 - 50000) / 256,TL0 = (65535 - 50000) % 256;可以這樣理解:因?yàn)檫@是定時(shí)器的初值,也就是說計(jì)數(shù)脈沖就是在這個(gè)數(shù)的基礎(chǔ)上向上遞增,到達(dá)65535后就溢出產(chǎn)生中斷
            3、第三步就要打開中斷了,使用IE寄存器,我一般是對各個(gè)位進(jìn)行單獨(dú)設(shè)置,這樣看起來感覺更好,首先打開總中斷EA = 1,這一步是所有中斷所必須的,然后打開定時(shí)器0中斷,ET0 =1;
            4、這時(shí)準(zhǔn)備工作都準(zhǔn)備好了就要開始啟動定時(shí)器了,使用TCON寄存器,TR0 = 1,到現(xiàn)在為止就實(shí)現(xiàn)了一個(gè)50毫秒的定時(shí)了;
            總結(jié)一下:TMOD = 0X01; TH0 = (65535 - 5000) / 256; TL0 = (65535 - 50000) % 256; EA = 1; ET0 = 1; TR0 = 1,至于那個(gè)中斷函數(shù)我就不寫了,要注意的是方式0 ,1, 3是不能自動重裝的,所以得在中斷函數(shù)中重新對TH0 ,TL0賦初值

            TMOD


            TMOD:定時(shí)器/計(jì)數(shù)器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER)
            定時(shí)器/計(jì)數(shù)器模式控制寄存器TMOD是一個(gè)逐位定義的8位寄存器,但只能使用字節(jié)尋址,其字節(jié)地址為89H。
            其格式為:

            工作原理

            其中低四位(即D0 ~ D3)定義定時(shí)器/計(jì)數(shù)器T0,高四位(即D4 ~ D7)定義定時(shí)器/計(jì)數(shù)器T1。

            Ⅰ,GATE——門控制。

            ●GATE=1時(shí),“與門”的輸出信號K由INTx輸入電平和TRx位的狀態(tài)一起決定(即此時(shí)K=TRx·INTx),當(dāng)且僅當(dāng)TRx=1,INTx=1(高電平)時(shí),計(jì)數(shù)啟動;否則,計(jì)數(shù)停止。
            當(dāng)INT0引腳為高電平時(shí)且TR0置位,TR0=1;啟動定時(shí)器T0;
            當(dāng)INT1引腳為高電平時(shí)且TR1置位,TR1=1;啟動定時(shí)器T1。
            ●GATE=0時(shí),“或門”輸出恒為1,“與門”的輸出信號K由TRx決定(即此時(shí)K=TRx),定時(shí)器不受INTx輸入電平的影響,由TRx直接控制定時(shí)器的啟動和停止。
            當(dāng)TR0=1,啟動定時(shí)器T0。
            當(dāng)TR1=1,啟動定時(shí)器T1。

            Ⅱ,C/T——功能選擇位

            C/T=0時(shí)為定時(shí)功能: 加1計(jì)數(shù)器對脈沖f進(jìn)行計(jì)數(shù),每來一個(gè)脈沖,計(jì)數(shù)器加1,直到計(jì)時(shí)器TFx滿溢出;
            C/T=1時(shí)為計(jì)數(shù)功能: 加1計(jì)數(shù)器對來自輸入引腳T0(P3.4)和T1(P3.5)的外信號脈沖進(jìn)行計(jì)數(shù),每來一個(gè)脈沖,計(jì)數(shù)器加1,直到計(jì)時(shí)器TFx滿溢出;

            Ⅲ,M0、M1——方式選擇功能

            MCS-51的定時(shí)器T0有4種工作方式:方式0,方式1,方式2,方式3。
            MCS-51的定時(shí)器T1有3種工作方式:方式0,方式1,方式2。
            M1
            M0
            工作方式
            功能說明
            0
            0
            方式0
            13位定時(shí)器/計(jì)數(shù)器
            0
            1
            方式1
            16位定時(shí)器/計(jì)數(shù)器
            1
            0
            方式2
            自動重載8位定時(shí)器/計(jì)數(shù)器
            1
            1
            方式3
            T0分為2個(gè)8位獨(dú)立計(jì)數(shù)器,T1停止計(jì)數(shù)

            #include
            #include
            #define uint unsigned int
            #define uchar unsigned char
            sbit D1=P2^0;
            uchar num,time;
            uchar wnum=0x00;
            uchar code dbit[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段選,選擇要顯示的數(shù)字
            //uchar code wnum[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};//八位數(shù)碼管
            void delay(uint z)
            {
            uint x,y;
            for(x=z;x>0;x--)
            {
            for(y=0;y<113;y++)
            {
            }
            }
            }
            void main()
            {
            P1=wnum;
            time=0;
            num=0;
            TMOD=0x01;//設(shè)置定時(shí)器0為工作方式1
            TH0=(65536-50000)/256;
            TL0=(65536-50000)%256;
            EA=1;//打開中斷總開關(guān)
            ET0=1;//開定時(shí)器0中斷
            TR0=1;//啟動定時(shí)器0
            while(1)
            {
            if(time==20)
            {
            D1=~D1;
            time=0;
            num++;
            num=num%10;
            if(num==10)
            {
            num=0;
            }
            P0=dbit[num];
            }
            }
            }
            void duan() interrupt 1
            {
            TH0=(65536-50000)/256;
            TL0=(65536-50000)%256;
            time++;
            }


            評論


            技術(shù)專區(qū)

            關(guān)閉