




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1/50中國石油大學(xué)生理學(xué)院第第7 7章章 定時定時/ /計數(shù)器計數(shù)器 2/50中國石油大學(xué)生理學(xué)院在計算機控制中可供選擇的定時方法在計算機控制中可供選擇的定時方法 (1 1)軟件定時)軟件定時 執(zhí)行一個循環(huán)程序來實現(xiàn)。執(zhí)行一個循環(huán)程序來實現(xiàn)。 (2 2)硬件定時)硬件定時 定時全部由硬件電路完成,不占用定時全部由硬件電路完成,不占用CPUCPU時間,但需要通過改變電路時間,但需要通過改變電路的元件參數(shù)來調(diào)節(jié)定時時間,在使用控制上不夠方便,同時增加了開的元件參數(shù)來調(diào)節(jié)定時時間,在使用控制上不夠方便,同時增加了開發(fā)成本。發(fā)成本。 (3 3)可編程定時器定時)可編程定時器定時 由單片機內(nèi)部的定時模
2、塊單元完成。由單片機內(nèi)部的定時模塊單元完成。 STC12C5A60S2單片機內(nèi)部有單片機內(nèi)部有: 1)兩個)兩個16位的定時位的定時/計數(shù)器,不僅可以方便地用于定時控制,而計數(shù)器,不僅可以方便地用于定時控制,而且還可以用作分頻器和用于事件記錄;且還可以用作分頻器和用于事件記錄; 2)可編程時鐘輸出功能,可用于給外部器件提供時鐘;)可編程時鐘輸出功能,可用于給外部器件提供時鐘; 3)兩路可編程計數(shù)器陣列()兩路可編程計數(shù)器陣列(Programmable Counter Array,PCA)??捎糜谲浖〞r器、外部脈沖的捕捉、高速輸出以及脈寬調(diào))??捎糜谲浖〞r器、外部脈沖的捕捉、高速輸出以及脈寬
3、調(diào)制(制(Pulse Width Modulation ,PWM)輸出。)輸出。3/50中國石油大學(xué)生理學(xué)院7.1 STC12C5A60S27.1 STC12C5A60S2單片機的定時單片機的定時/ /計數(shù)器計數(shù)器 7.1.1 7.1.1 定時定時/ /計數(shù)器的結(jié)構(gòu)及工作原理計數(shù)器的結(jié)構(gòu)及工作原理 OSC12分頻或不分頻TX端C/T=0C/T=1控制信號加1計數(shù)器TFX中斷 定時定時/計數(shù)器的核心是一個加計數(shù)器的核心是一個加1計數(shù)器,加計數(shù)器,加1計數(shù)器的脈沖有兩計數(shù)器的脈沖有兩個來源,一個是外部脈沖源,另一個是系統(tǒng)的時鐘振蕩器。計數(shù)個來源,一個是外部脈沖源,另一個是系統(tǒng)的時鐘振蕩器。計數(shù)器對
4、兩個脈沖源之一進行輸入計數(shù),每輸入一個脈沖,計數(shù)值加器對兩個脈沖源之一進行輸入計數(shù),每輸入一個脈沖,計數(shù)值加1。當計數(shù)到計數(shù)器為全。當計數(shù)到計數(shù)器為全1時,再輸入一個脈沖就使計數(shù)值回零,同時,再輸入一個脈沖就使計數(shù)值回零,同時從最高位溢出一個脈沖使特殊功能寄存器時從最高位溢出一個脈沖使特殊功能寄存器TCON(定時器控制(定時器控制寄存器)的某一位寄存器)的某一位TF0或或TF1置置1,作為計數(shù)器的溢出中斷標志。,作為計數(shù)器的溢出中斷標志。 4/50中國石油大學(xué)生理學(xué)院 單片機中的微處理器、寄存器單片機中的微處理器、寄存器TCONTCON和和TMODTMOD與定時與定時/ /計數(shù)器計數(shù)器T0T0
5、、T1T1之間的關(guān)系之間的關(guān)系 CPU內(nèi)部總線TH1TL1TH0TL0TMODTCON07070707P3.4P3.5AUXR5/50中國石油大學(xué)生理學(xué)院7.1.2 7.1.2 定時定時/ /計數(shù)器計數(shù)器的相關(guān)的相關(guān)寄存器寄存器1 1、定時器工作方式控制寄存器、定時器工作方式控制寄存器TMODTMOD(地址為(地址為89H,復(fù)位值為,復(fù)位值為00H) M0M1C/ TGATEM0M1C/ TGATE定時器定時器0定時器定時器1定時器定時器D0D1D2D3D4D5D6D7位號位號M1 M0工作方式工作方式功能說明功能說明0 0013位計數(shù)器位計數(shù)器0 1116位計數(shù)器位計數(shù)器1 02可自動裝入的
6、可自動裝入的8位計數(shù)器位計數(shù)器1 13定時器定時器0:分成兩個:分成兩個8位計數(shù)器位計數(shù)器定時器定時器1:停止計數(shù):停止計數(shù)1)M1和和M0:方式選擇控制位。:方式選擇控制位。 T2)C/:功能選擇位。:功能選擇位。用于用于“計數(shù)器計數(shù)器”或或“定時器定時器”功能的選擇。功能的選擇。3)GATE:門控位。:門控位。GATE用于選通控制。用于選通控制。位名稱位名稱6/50中國石油大學(xué)生理學(xué)院2、定時器控制寄存器、定時器控制寄存器 TCON(地址為(地址為88H,復(fù)位值為,復(fù)位值為00H)1)TF1:定時器:定時器/計數(shù)器計數(shù)器1溢出標志位。溢出標志位。 2)TR1:定時器:定時器T1的運行控制位
7、。的運行控制位。 3)TF0:定時器:定時器/計數(shù)器計數(shù)器0溢出標志位。溢出標志位。 4)TR0:定時器:定時器T0的的運行運行控制位??刂莆?。TCON的的03位與外部中斷有關(guān)。位與外部中斷有關(guān)。IT0IE0IT1IE1TR0TF0TR1TF1位名稱位名稱D0D1D2D3D4D5D6D7位號位號7/50中國石油大學(xué)生理學(xué)院3、AUXR:輔助寄存器(地址為:輔助寄存器(地址為8EH,復(fù)位值為,復(fù)位值為00H)-ELVDIESPIEADCIUART_M0 x6UART_M0 x6T1x12T1x12T0 x12位名稱位名稱D0D1D2D3D4D5D6D7位號位號 與定時器速度相關(guān)的控制位有:與定時
8、器速度相關(guān)的控制位有: 1)T0 x12:定時器:定時器0速度控制位。速度控制位。 0:定時器:定時器0的速度是傳統(tǒng)的速度是傳統(tǒng)8051單片機定時器的速度,即單片機定時器的速度,即12分頻。分頻。 1:定時器:定時器0的速度是傳統(tǒng)的速度是傳統(tǒng)8051單片機定時器速度的單片機定時器速度的12倍,即不分頻。倍,即不分頻。 2)T1x12:定時器:定時器1速度控制位。速度控制位。 0:定時器:定時器1的速度是傳統(tǒng)的速度是傳統(tǒng)8051單片機定時器的速度,即單片機定時器的速度,即12分頻。分頻。 1:定時器:定時器1的速度是傳統(tǒng)的速度是傳統(tǒng)8051單片機定時器速度的單片機定時器速度的12倍,即不分頻。倍
9、,即不分頻。 如果如果UART串口用串口用T1作為波特率發(fā)生器,作為波特率發(fā)生器,T1x12位決定位決定UART串口是串口是12T 還是還是1T。 UART_M0 x6、BRTR、S2SMOD、BRTx12和和S1BRS用于控制用于控制UART串口的速串口的速度。度。EXTRAM用于設(shè)置是否允許使用內(nèi)部用于設(shè)置是否允許使用內(nèi)部1024字節(jié)的擴展字節(jié)的擴展RAM。8/50中國石油大學(xué)生理學(xué)院7.1.3 7.1.3 定時定時/ /計數(shù)器的工作方式計數(shù)器的工作方式 方式方式0 和方式和方式112分頻OSC/12不分頻OSC計數(shù)源P3.4/P3.5外部中斷INT0/INT1TR0/TR1OSCGATE
10、T0 x12/T1x1201C/T1CLKTF0/TF1047TL0/TL1方式0方式107TH0/TH1INT串口(只對T1有效)09/50中國石油大學(xué)生理學(xué)院方式方式2 CLKTF0/TF107TL0/TL1INT07TH0/TH1重載12分頻OSC/12不分頻OSC計數(shù)源P3.4/P3.5外部中斷INT0/INT1TR0/TR1OSCGATET0 x12/T1x1201C/T1010/50中國石油大學(xué)生理學(xué)院方式方式3OSC12分頻OSC/12T0 x12 01不分頻OSC/1OSC12分頻OSC/12T0 x12 01不分頻OSC/1TF0TL0(8位)C/T=0C/T=1T0(P3.
11、4)TR0GATEINT0(P3.2)TF1TH0(8位)TR1中斷中斷11/50中國石油大學(xué)生理學(xué)院當工作于定時狀態(tài)時,定時當工作于定時狀態(tài)時,定時/計數(shù)器是對時鐘周期進行計數(shù),若對時鐘計數(shù)器是對時鐘周期進行計數(shù),若對時鐘進行進行12分頻,則對每分頻,則對每12個時鐘周期計數(shù)。當晶振頻率為個時鐘周期計數(shù)。當晶振頻率為6MHz,采用,采用12分分頻時,計數(shù)的單位時間間隔為頻時,計數(shù)的單位時間間隔為單位時間間隔單位時間間隔Tu=定時時間為:定時時間為:TC=XTu。其中,。其中,Tu為單位時間間隔,為單位時間間隔,TC為定時時間。為定時時間。7.1.4 定時定時/計數(shù)器量程的擴展計數(shù)器量程的擴展
12、 STC12C5A60S2 STC12C5A60S2單片機中提供的定時單片機中提供的定時/ /計數(shù)器可以使用戶很方便地實現(xiàn)定計數(shù)器可以使用戶很方便地實現(xiàn)定時和對外部事件計數(shù)。但是在實際應(yīng)用中,需要的定時時間或計數(shù)值可能超時和對外部事件計數(shù)。但是在實際應(yīng)用中,需要的定時時間或計數(shù)值可能超過定時過定時/ /計數(shù)器的定時或計數(shù)能力,特別是當單片機的系統(tǒng)時鐘頻率較高時,計數(shù)器的定時或計數(shù)能力,特別是當單片機的系統(tǒng)時鐘頻率較高時,定時能力就更為有限。為了滿足需要,有時需要對單片機的定時計數(shù)能力進定時能力就更為有限。為了滿足需要,有時需要對單片機的定時計數(shù)能力進行擴展。定時能力和計數(shù)能力擴展的方法相同,在
13、此主要對定時能力的擴展行擴展。定時能力和計數(shù)能力擴展的方法相同,在此主要對定時能力的擴展進行討論,計數(shù)能力的擴展可參考定時能力擴展的方法進行。進行討論,計數(shù)能力的擴展可參考定時能力擴展的方法進行。晶振頻率12600000012s=2s STC12C5A60S2單片機的定時器單片機的定時器/計數(shù)器計數(shù)器0或或1是對脈沖進行不斷加是對脈沖進行不斷加1進行計數(shù)的,因此,不能直接將實際的計數(shù)值作為計數(shù)初值送入計數(shù)寄進行計數(shù)的,因此,不能直接將實際的計數(shù)值作為計數(shù)初值送入計數(shù)寄存器存器THX、TLX中,而必須將實際計數(shù)值以中,而必須將實際計數(shù)值以28、213、216為模求補,以補為模求補,以補碼作為計數(shù)
14、初值設(shè)置碼作為計數(shù)初值設(shè)置THX和和TLX。即應(yīng)裝入計數(shù)。即應(yīng)裝入計數(shù)/定時器的初值為:定時器的初值為: TcN2Tunn=8,13或16=12/50中國石油大學(xué)生理學(xué)院系統(tǒng)時鐘頻率為系統(tǒng)時鐘頻率為6MHz,6MHz,進行進行12分頻分頻時時, ,定時器的最大定時能力定時器的最大定時能力 T(216 0)2s131072s131.072ms16T(213 0)2s16384s16.384ms13T(28 0)2s512s8最大定時能力最大定時能力位數(shù)位數(shù)擴展方法:擴展方法:(1 1)軟件擴展方法)軟件擴展方法 擴展方法是在定時器中斷服務(wù)程序中對定時器中斷請求進行擴展方法是在定時器中斷服務(wù)程序中
15、對定時器中斷請求進行計數(shù),當中斷請求的次數(shù)達到要求的值時才進行相應(yīng)的處理。計數(shù),當中斷請求的次數(shù)達到要求的值時才進行相應(yīng)的處理。例例如,某事件的處理周期為如,某事件的處理周期為1s,但由于受到最大定時時間的限制,但由于受到最大定時時間的限制,無法一次完成定時,此時可以將定時器的定時時間設(shè)為以無法一次完成定時,此時可以將定時器的定時時間設(shè)為以10ms為一個單位,啟動定時器后的每一次定時器溢出中斷產(chǎn)生為一個單位,啟動定時器后的每一次定時器溢出中斷產(chǎn)生10ms的定時,進入中斷服務(wù)程序后,對定時器的中斷次數(shù)進行統(tǒng)計,的定時,進入中斷服務(wù)程序后,對定時器的中斷次數(shù)進行統(tǒng)計,每每100次定時器溢出中斷進行
16、一次事件的處理,然后再以同樣的次定時器溢出中斷進行一次事件的處理,然后再以同樣的方式進入下一個周期的事件處理。方式進入下一個周期的事件處理。 13/50中國石油大學(xué)生理學(xué)院(2 2)硬件擴展方法)硬件擴展方法 硬件擴展方法可以使用外接通用定時器芯片對單片機的定時硬件擴展方法可以使用外接通用定時器芯片對單片機的定時能力進行擴展,如使用定時能力進行擴展,如使用定時/ /計數(shù)器芯片計數(shù)器芯片82538253,也可以利用單片,也可以利用單片機自身的資源對定時能力進行擴展。機自身的資源對定時能力進行擴展。 由于單片機的定時器沒有對外輸出引腳,所以兩個由于單片機的定時器沒有對外輸出引腳,所以兩個16位的定
17、位的定時時/計數(shù)器不能直接連在一起,可以通過單片機的端口計數(shù)器不能直接連在一起,可以通過單片機的端口P0P3實實現(xiàn)連接。下圖給出了一種具體的連接方法?,F(xiàn)連接。下圖給出了一種具體的連接方法。 T0定時器方式 P1.0T1計數(shù)器方式T1(P3.5) 1)T0設(shè)置為設(shè)置為16位定時器方式,當位定時器方式,當T0溢出時,執(zhí)行溢出時,執(zhí)行T0的中斷服務(wù)的中斷服務(wù)程序。在程序。在T0的中斷服務(wù)程序中將的中斷服務(wù)程序中將P1.0取反。這樣在取反。這樣在P1.0將輸出一個方將輸出一個方波,其周期為波,其周期為T0定時時間的定時時間的2倍。設(shè)倍。設(shè)T0的定時時間為的定時時間為TIME,則由,則由P1.0輸出的方
18、波的周期為輸出的方波的周期為2TIME。 2)T1設(shè)置為設(shè)置為16位計數(shù)器方式,將位計數(shù)器方式,將P1.0輸出的方波接到輸出的方波接到T1的定時的定時器外部輸入端器外部輸入端T1(P3.5),作為定時),作為定時/計數(shù)器計數(shù)器1的外部計數(shù)脈沖,其每個的外部計數(shù)脈沖,其每個周期的下降沿使周期的下降沿使T1加加1。設(shè)計數(shù)器。設(shè)計數(shù)器T1的計數(shù)脈沖數(shù)為的計數(shù)脈沖數(shù)為COUNT,則當,則當T1溢出時,總定時時間溢出時,總定時時間T為:為:T = 2TIMECOUNT。 14/50中國石油大學(xué)生理學(xué)院7.1.5 定時定時/計數(shù)器編程舉例計數(shù)器編程舉例 定時定時/計數(shù)器的應(yīng)用編程主要有兩點:一是能正確初始
19、化,包計數(shù)器的應(yīng)用編程主要有兩點:一是能正確初始化,包括寫入控制字,進行時間常數(shù)的計算并裝入;二是中斷服務(wù)程序的括寫入控制字,進行時間常數(shù)的計算并裝入;二是中斷服務(wù)程序的編寫,即在中斷服務(wù)程序中編寫實現(xiàn)定時完成的任務(wù)代碼。一般情編寫,即在中斷服務(wù)程序中編寫實現(xiàn)定時完成的任務(wù)代碼。一般情況下,定時況下,定時/計數(shù)器初始化部分的步驟大致如下:計數(shù)器初始化部分的步驟大致如下: (1)設(shè)置工作方式,將控制字寫入)設(shè)置工作方式,將控制字寫入TMOD寄存器。寄存器。 (2)設(shè)置分頻方式,將控制字寫入)設(shè)置分頻方式,將控制字寫入AUXR寄存器。默認的情寄存器。默認的情況是況是12分頻(兼容傳統(tǒng)分頻(兼容傳統(tǒng)
20、8051單片機),因此,如果使用傳統(tǒng)單片機),因此,如果使用傳統(tǒng)8051單片機模式,可以不進行設(shè)置。單片機模式,可以不進行設(shè)置。 (3)把定時)把定時/計數(shù)初值裝入計數(shù)初值裝入TLX、THX寄存器。寄存器。 (4)置位)置位ETX允許定時允許定時/計數(shù)器中斷(如果需要)。計數(shù)器中斷(如果需要)。 (5)置位)置位EA使使CPU開放中斷。開放中斷。 (6)置位)置位TRX以啟動定時以啟動定時/計數(shù)。計數(shù)。15/50中國石油大學(xué)生理學(xué)院 【例例7-17-1】 設(shè)系統(tǒng)時鐘頻率為設(shè)系統(tǒng)時鐘頻率為6MHz6MHz,利用定時器,利用定時器T0T0定時,每隔定時,每隔1s1s將將P2.0P2.0的狀態(tài)取反。
21、的狀態(tài)取反。 思路:思路:將定時器的定時時間設(shè)為將定時器的定時時間設(shè)為50ms50ms,在中斷服務(wù)程序中對定時器,在中斷服務(wù)程序中對定時器溢溢出中斷請求進行計數(shù),當計夠出中斷請求進行計數(shù),當計夠2020次時,將次時,將P2.0P2.0的狀態(tài)取反,否則直接的狀態(tài)取反,否則直接返回主程序。返回主程序。 選擇定時器選擇定時器T0T0的工作方式:軟件啟動、定時方式、的工作方式:軟件啟動、定時方式、1616位定時器,位定時器,方式字為方式字為01H01H。由于系統(tǒng)時鐘頻率為。由于系統(tǒng)時鐘頻率為6MHz6MHz,1212分頻時,計數(shù)單位為分頻時,計數(shù)單位為2s2s。定時器。定時器T0T0的裝入初值為的裝入
22、初值為9E58H2500065536)10)/(21050(2TpTcMX631616/50中國石油大學(xué)生理學(xué)院匯編語言程序代碼如下:匯編語言程序代碼如下:$INCLUDE (STC12C5A.INC) ;包含包含STC12C5A60S2寄存器定義文件寄存器定義文件ORG0000HLJMP MAIN ;轉(zhuǎn)主程序轉(zhuǎn)主程序ORG000BH;T0中斷服務(wù)程序入口地址中斷服務(wù)程序入口地址LJMPT0_ISRORG 0100HMAIN: MOV SP,#60H ;設(shè)置堆棧指針設(shè)置堆棧指針 MOV TMOD,#01H ;T0初始化初始化MOV TL0,#58HMOV TH0,#9EHMOV A,#20 ;
23、累加器累加器A置置20SETB ET0 ;允外允外T0中斷中斷SETB EA;CPU開中斷開中斷SETB TR0 ;啟動啟動T0計數(shù)計數(shù)SJMP $ ;等待等待T0_ISR:MOV TL0,#58H MOV TH0,#9EH ;重新裝入時間常數(shù)重新裝入時間常數(shù)DEC A ; 累加器累加器A內(nèi)容減內(nèi)容減1JNZEXITCPL P2.0MOV A,#20 ;累加器累加器A重載重載20EXIT:RETIEND17/50中國石油大學(xué)生理學(xué)院對應(yīng)的對應(yīng)的C C語言程序如下:語言程序如下:#include “stc12c5a.h”/包含包含STC12C5A60S2的寄存器定義文件的寄存器定義文件sbit
24、P20=P20;/聲明聲明P2.0的引腳位變量的引腳位變量unsigned char i;/聲明計數(shù)變量。在聲明計數(shù)變量。在C語言程序中,盡量不要使用語言程序中,盡量不要使用ACCvoid main (void) /SP=0 x60;/使用使用C語言設(shè)計程序時,可以不設(shè)置堆棧指針語言設(shè)計程序時,可以不設(shè)置堆棧指針 TMOD=0 x01; TL0=0 x58; TH0=0 x9E; i=20;/計數(shù)變量賦初值計數(shù)變量賦初值ET0=1;/允許允許T0中斷中斷 EA = 1;/開放總的中斷開放總的中斷TR0=1;/啟動啟動T0計數(shù)計數(shù) while(1); /等待中斷等待中斷void T0_ISR (
25、void) interrupt 1 /定時器定時器T0中斷函數(shù)中斷函數(shù)TL0=0 x58;/重新裝入時間常數(shù)重新裝入時間常數(shù) TH0=0 x9E;i-;/計數(shù)變量減計數(shù)變量減1if(i=0) /若減到若減到0,則將,則將P2.0取反取反 P20 = !P20; /將將P2.0取反取反 i = 20;/重新給計數(shù)變量賦值重新給計數(shù)變量賦值18/50中國石油大學(xué)生理學(xué)院 解:以解:以T0T0為例,下面列出實現(xiàn)這一方法的關(guān)鍵代碼,完整的程序,請讀者為例,下面列出實現(xiàn)這一方法的關(guān)鍵代碼,完整的程序,請讀者自行編寫。自行編寫。 MOV TMOD,#09H ; T0MOV TMOD,#09H ; T0初始
26、化,初始化,T0T0工作于方式工作于方式1 1、定時、定時、GATEGATE置置1 1 MOV TL0,#00H MOV TL0,#00H MOV TH0,#00H MOV TH0,#00H JNB P3.2,$ ; JNB P3.2,$ ;等待升高等待升高 SETB TR0 SETB TR0 JB P3.2,$ ; JB P3.2,$ ;等待下降等待下降 CLR TR0 ; CLR TR0 ;關(guān)關(guān)T0T0 MOV A,TL0 ;T0 MOV A,TL0 ;T0內(nèi)容高內(nèi)容高8 8位送位送B B,低,低8 8位送位送A A MOV B,TH0 MOV B,TH0 ; ;計算脈寬或送顯示器顯示計算
27、脈寬或送顯示器顯示 對T0初始化編程,GATE=1T0從0開始計數(shù)T0停止計數(shù),讀T0值 【例例7-27-2】利用定時器的門控方式可以實現(xiàn)正脈沖的脈寬測量。利用定時器的門控方式可以實現(xiàn)正脈沖的脈寬測量。當當GATE=1GATE=1,TRX=1TRX=1,只有只有/INTX/INTX引腳輸入高電平時,引腳輸入高電平時,TXTX才被允許計數(shù),利用這一特點,可測量才被允許計數(shù),利用這一特點,可測量/INTX/INTX引腳上正脈引腳上正脈沖的寬度,如下圖所示。沖的寬度,如下圖所示。注意教材上的思考問題!19/50中國石油大學(xué)生理學(xué)院定時定時/計數(shù)器應(yīng)用中應(yīng)注意的問題計數(shù)器應(yīng)用中應(yīng)注意的問題 (1)定時
28、定時/計數(shù)器的實時性計數(shù)器的實時性 大多數(shù)應(yīng)用場合可忽略不計,但對某些要求實時性大多數(shù)應(yīng)用場合可忽略不計,但對某些要求實時性苛刻的場合,應(yīng)采用補償措施??量痰膱龊希瑧?yīng)采用補償措施。 (2)動態(tài)讀取運行中的計數(shù)值動態(tài)讀取運行中的計數(shù)值 在動態(tài)讀取運行中的定時在動態(tài)讀取運行中的定時/計數(shù)器的計數(shù)值時,如計數(shù)器的計數(shù)值時,如果不加注意,就可能出錯。這是因為不可能在同一時刻果不加注意,就可能出錯。這是因為不可能在同一時刻同時讀取同時讀取THX和和TLX中的計數(shù)值。中的計數(shù)值。一種可避免讀錯的方法是:先讀一種可避免讀錯的方法是:先讀THX,后讀,后讀TLX,重讀,重讀THX,將兩次讀得的,將兩次讀得的T
29、HX進行比較;若兩次讀得的值相進行比較;若兩次讀得的值相等,則可確定讀的值是正確的,否則重復(fù)上述過程,重等,則可確定讀的值是正確的,否則重復(fù)上述過程,重復(fù)讀得的值一般不會再錯。復(fù)讀得的值一般不會再錯。20/50中國石油大學(xué)生理學(xué)院7.2 7.2 STC12C5A60S2單片機的可編程時鐘輸出單片機的可編程時鐘輸出STC12C5A60S2單片機提供了單片機提供了3路可編程時鐘輸出功能。路可編程時鐘輸出功能。7.2.1 可編程時鐘輸出的相關(guān)寄存器可編程時鐘輸出的相關(guān)寄存器1、掉電喚醒寄存器、掉電喚醒寄存器WAKE_CLKO(地址為(地址為8FH,復(fù)位值為,復(fù)位值為00000000B) T0CLKO
30、T1CLKOBRTCLKOLVD_WAKET1_PIN_IET1_PIN_IERXD_PIN_IEPCAWAKEUP位名稱D0D1D2D3D4D5D6D7位號1)BRTCLKO:是否允許:是否允許P1.0(CLKOUT2)腳輸出時鐘。)腳輸出時鐘。 0:不允許:不允許BRT在在P1.0(CLKOUT2)腳輸出時鐘。)腳輸出時鐘。1:允許:允許P1.0(CLKOUT2)腳輸出時鐘,輸出時鐘頻率)腳輸出時鐘,輸出時鐘頻率=BRT溢出率溢出率/22)T1CLKO:是否允許:是否允許T1(P3.5)腳輸出溢出脈沖。)腳輸出溢出脈沖。0:不允許:不允許T1(P3.5)腳輸出溢出脈沖。)腳輸出溢出脈沖。1
31、:允許:允許T1(P3.5)腳輸出溢出脈沖,輸出時鐘頻率)腳輸出溢出脈沖,輸出時鐘頻率 = T1溢出率溢出率/23)T0CLKO:是否允許:是否允許T0(P3.4)腳輸出溢出脈沖。)腳輸出溢出脈沖。0:不允許:不允許T0(P3.4)腳輸出溢出脈沖。)腳輸出溢出脈沖。1:允許:允許T0(P3.4)腳輸出溢出脈沖,輸出時鐘頻率)腳輸出溢出脈沖,輸出時鐘頻率 = T0溢出率溢出率/2 21/50中國石油大學(xué)生理學(xué)院2、輔助寄存器、輔助寄存器AUXR(地址為(地址為8EH,復(fù)位值為,復(fù)位值為00H)S1BRSEXTRAMBRTx12S2SMODBRTRUART_M0 x6T1x12T0 x12位名稱D
32、0D1D2D3D4D5D6D7位號其中,與其中,與CLKOUT2/P1.0時鐘輸出有關(guān)的位有:時鐘輸出有關(guān)的位有:1)BRTx12:CLKOUT2/P1.0的時鐘輸出頻率控制位。的時鐘輸出頻率控制位。 0:獨立波特率發(fā)生器工作在:獨立波特率發(fā)生器工作在12T模式。模式。CLKOUT2工作在工作在12T模式時的輸出頻率模式時的輸出頻率CLKOUT2 = (Fosc/2 ) / 12 / (256 - BRT) 1:獨立波特率發(fā)生器工作在:獨立波特率發(fā)生器工作在1T模式。模式。 CLKOUT2工作在工作在1T模式時的輸出頻率模式時的輸出頻率CLKOUT2 = ( Fosc/2 ) / (256 -
33、 BRT)2)BRTR:獨立波特率發(fā)生器運行控制位。:獨立波特率發(fā)生器運行控制位。 0:不允許獨立波特率發(fā)生器運行。:不允許獨立波特率發(fā)生器運行。 1:允許獨立波特率發(fā)生器運行。:允許獨立波特率發(fā)生器運行。如果需要從如果需要從CLKOUT2/P1.0腳輸出時鐘,需要在用戶程序中進行下面的設(shè)置:腳輸出時鐘,需要在用戶程序中進行下面的設(shè)置:1)對)對BRT寄存器送寄存器送8位重裝載值(使用位重裝載值(使用“BRT = #reload_data;”語句);語句);2)對)對AUXR寄存器中的寄存器中的BRTR位置位置1,讓獨立波特率發(fā)生器運行;,讓獨立波特率發(fā)生器運行;3)對)對WAKE_CLKO寄
34、存器中的寄存器中的BRTCLKO位置位置1,讓獨立波特率發(fā)生器的溢出在,讓獨立波特率發(fā)生器的溢出在P1.0口輸出時鐘??谳敵鰰r鐘。22/50中國石油大學(xué)生理學(xué)院7.2.2 可編程時鐘輸出的編程實例可編程時鐘輸出的編程實例【例例7-3】 設(shè)時鐘頻率設(shè)時鐘頻率Fosc=18.432MHz,設(shè)計程序,從,設(shè)計程序,從P1.0/CLKOUT2引腳輸出頻率為引腳輸出頻率為124.540KHz的的時鐘;從時鐘;從T0(P3.4)引腳輸出頻率為)引腳輸出頻率為125KHz的時鐘;從的時鐘;從T1(P3.5)引腳輸出頻率為)引腳輸出頻率為38.4KHz的時鐘。的時鐘。解:使用解:使用STC12C5A60S2的
35、可編程時鐘輸出功能完成所需要求。在下面的程序設(shè)計中(在此只給出的可編程時鐘輸出功能完成所需要求。在下面的程序設(shè)計中(在此只給出C語語言程序),言程序),T0、T1和獨立波特率發(fā)生器和獨立波特率發(fā)生器BRT均工作在均工作在1T模式。模式。程序編制如下:程序編制如下:#include stc12c5a.h /包含包含STC12C5A60S2的寄存器定義頭文件的寄存器定義頭文件void main(void) TMOD = 0 x22; /T0和和T1工作在方式工作在方式2,8位自動重裝計數(shù)器位自動重裝計數(shù)器 AUXR = AUXR | 0 x80; /T0工作在工作在1T模式模式 AUXR = AU
36、XR | 0 x40; /T1工作在工作在1T模式模式 AUXR = AUXR | 0 x04; /獨立波特率發(fā)生器工作在獨立波特率發(fā)生器工作在1T模式模式/設(shè)置設(shè)置BRT的的8位自動重裝計數(shù)初值,輸出時鐘頻率位自動重裝計數(shù)初值,輸出時鐘頻率124.540KHz BRT = (256-74); /設(shè)置設(shè)置T0的的8位自動重裝計數(shù)初值,輸出頻率位自動重裝計數(shù)初值,輸出頻率18432000/2/74 = 124540.54約為約為125KHz TH0 = (256-74);/設(shè)置設(shè)置T1的的8位自動重裝計數(shù)初值,輸出時鐘頻率位自動重裝計數(shù)初值,輸出時鐘頻率18432000/2/240 = 3840
37、0Hz TH1 = (256-240); WAKE_CLKO=WAKE_CLKO|0 x07; /允許允許T0,T1,獨立波特率發(fā)生器輸出時鐘獨立波特率發(fā)生器輸出時鐘 TR0 = 1; /啟動啟動T0開始計數(shù),對系統(tǒng)時鐘進行分頻輸出開始計數(shù),對系統(tǒng)時鐘進行分頻輸出 TR1 = 1; /啟動啟動T1開始計數(shù),對系統(tǒng)時鐘進行分頻輸出開始計數(shù),對系統(tǒng)時鐘進行分頻輸出 AUXR =AUXR|0 x10; /啟動啟動BRT工作,對系統(tǒng)時鐘進行分頻輸出工作,對系統(tǒng)時鐘進行分頻輸出/至此時鐘已經(jīng)輸出,用戶可以通過示波器觀看到輸出的時鐘頻率至此時鐘已經(jīng)輸出,用戶可以通過示波器觀看到輸出的時鐘頻率 while(
38、1);23/50中國石油大學(xué)生理學(xué)院7.3 7.3 STC12C5A60S2的可編程計數(shù)器陣列模塊的可編程計數(shù)器陣列模塊7.3.1 7.3.1 PCA模塊的結(jié)構(gòu)模塊的結(jié)構(gòu) PCA/PWM含有一個特殊的含有一個特殊的16位定時器,有位定時器,有2個個16位的捕獲位的捕獲/比較模塊與之相連。比較模塊與之相連。16位PCA定時器/計數(shù)器模塊0模塊1P1.3/CEX0/PCA0/PWM0P1.4/CEX1/PCA1/PWM1 模塊模塊0連接到連接到P1.3/CCP0(可以通過(可以通過AUXR1寄存器設(shè)置切換到寄存器設(shè)置切換到P4.2/CCP0/MISO口),模塊口),模塊1連接到連接到P1.4/CC
39、P1(可以通過(可以通過AUXR1寄存器設(shè)置切換到寄存器設(shè)置切換到P4.3/CCP1/SCLK口)。每個模塊可編程工作在口)。每個模塊可編程工作在4種模式:上升種模式:上升/下降沿捕獲、軟件定下降沿捕獲、軟件定時器、高速輸出或可調(diào)制脈沖輸出。時器、高速輸出或可調(diào)制脈沖輸出。 24/50中國石油大學(xué)生理學(xué)院16位位PCA定時器定時器/計數(shù)器計數(shù)器的結(jié)構(gòu)的結(jié)構(gòu)16位計數(shù)器Fosc/12)Fosc定時器0溢出外部輸入ECI(P1.2)IDLECIDLCFCHCL至PCA模塊PCA中斷CRCCF3CCF2CCF1CCF0CPS1CPS0ECFCPS2CMODCCONFosc/2Fosc/4Fosc/8
40、Fosc/6 寄存器寄存器CH和和CL的內(nèi)容是自動遞增計數(shù)的的內(nèi)容是自動遞增計數(shù)的16位位PCA定時器的值。定時器的值。PCA定時器的時鐘源有定時器的時鐘源有以下幾種:以下幾種:1/12振蕩頻率、振蕩頻率、1/8振蕩頻率、振蕩頻率、1/6振蕩頻率、振蕩頻率、1/4振蕩頻率、振蕩頻率、1/2振蕩頻率、振蕩頻振蕩頻率、振蕩頻率、定時器率、定時器0溢出或溢出或ECI腳的輸入(腳的輸入(P1.2)。定時器的計數(shù)源可通過設(shè)置特殊功能寄存器)。定時器的計數(shù)源可通過設(shè)置特殊功能寄存器CMOD的的CPS2、CPS1和和CPS0位選擇其中一種。位選擇其中一種。 CMOD中的中的CIDL位用于控制空閑模式下是否允
41、許停止位用于控制空閑模式下是否允許停止PCA;CMOD中的中的ECF位用于中位用于中斷控制,置位時,使能斷控制,置位時,使能PCA中斷。當中斷。當PCA定時器溢出時,定時器溢出時,PCA計數(shù)溢出標志計數(shù)溢出標志CF置位。置位。 CCON中的中的CR位是位是PCA的運行控制位。的運行控制位。CR=1時,運行時,運行PCA。CR=0時,關(guān)閉時,關(guān)閉PCA。 CCON中還包括中還包括PCA定時器標志(定時器標志(CF)以及各個模塊的標志()以及各個模塊的標志(CCF1/CCF0)。當)。當PCA計數(shù)器溢出時,計數(shù)器溢出時,CF位置位,如果位置位,如果CMOD寄存器的寄存器的ECF位置位,就產(chǎn)生中斷。
42、位置位,就產(chǎn)生中斷。CF位只能通過軟位只能通過軟件清除。件清除。CCON寄存器中的寄存器中的CCF0是是PCA模塊模塊0的標志,的標志,CCF1是模塊是模塊1的標志。當發(fā)生匹配或的標志。當發(fā)生匹配或比較時由硬件置位。這些標志也只能通過軟件清除。所有模塊共用一個中斷向量,可以在中比較時由硬件置位。這些標志也只能通過軟件清除。所有模塊共用一個中斷向量,可以在中斷服務(wù)程序中判斷斷服務(wù)程序中判斷CCF0和和CCF1,以確定到底是哪個模塊產(chǎn)生了中斷。,以確定到底是哪個模塊產(chǎn)生了中斷。25/50中國石油大學(xué)生理學(xué)院7.3.2 7.3.2 PCA/PWM模塊的特殊功能寄存器模塊的特殊功能寄存器1、PCA工作
43、模式寄存器工作模式寄存器CMOD(地址為(地址為D9H,復(fù)位值為,復(fù)位值為0XXX0000B)ECFCPS0CPS1CPS2-CIDL位名稱位名稱D0D1D2D3D4D5D6D7位號位號 1)CIDL:空閑模式下是否停止空閑模式下是否停止PCA計數(shù)的控制位。計數(shù)的控制位。CIDL=0時,空閑時,空閑模式下模式下PCA計數(shù)器繼續(xù)計數(shù)。計數(shù)器繼續(xù)計數(shù)。CIDL=1時,空閑模式下時,空閑模式下PCA計數(shù)器停止計數(shù)。計數(shù)器停止計數(shù)。 2)CPS2、CPS1、CPS0:PCA計數(shù)脈沖源選擇控制位。計數(shù)脈沖源選擇控制位。PCA計數(shù)脈計數(shù)脈沖選擇如表沖選擇如表7-3所示所示(見教材見教材)。 3)ECF:P
44、CA計數(shù)器溢出中斷使能位。計數(shù)器溢出中斷使能位。ECF=1時,允許寄存器時,允許寄存器CCON中中CF位的中斷。位的中斷。ECF=0時,禁止寄存器時,禁止寄存器CCON中中CF位的中斷。位的中斷。26/50中國石油大學(xué)生理學(xué)院2、PCA控制寄存器控制寄存器CCON(地址為(地址為D8H,復(fù)位值為,復(fù)位值為00XXXX00B)CCF0CCF1-CRCF位名稱位名稱D0D1D2D3D4D5D6D7位號位號 1)CF:PCA計數(shù)器溢出標志位。當計數(shù)器溢出標志位。當PCA計數(shù)器溢出時,計數(shù)器溢出時,CF位由硬位由硬件置位。如果件置位。如果CMOD寄存器的寄存器的ECF位置位,位置位,CF標志可用來產(chǎn)生
45、中斷。標志可用來產(chǎn)生中斷。CF位可通過硬件或軟件置位,但只能通過軟件清零。位可通過硬件或軟件置位,但只能通過軟件清零。 2)CR:PCA計數(shù)器的運行控制位。通過軟件置位計數(shù)器的運行控制位。通過軟件置位CR位時,啟動位時,啟動PCA計數(shù)器計數(shù);清零計數(shù)器計數(shù);清零CR位時,關(guān)閉位時,關(guān)閉PCA計數(shù)器。計數(shù)器。 3)CCF1/CCF0:PCA各個模塊的標志(各個模塊的標志(CCF0對應(yīng)模塊對應(yīng)模塊0,CCF1對對應(yīng)模塊應(yīng)模塊1)。當發(fā)生匹配或比較時由硬件置位相應(yīng)的標志位。這些標志只)。當發(fā)生匹配或比較時由硬件置位相應(yīng)的標志位。這些標志只能通過軟件清除。能通過軟件清除。27/50中國石油大學(xué)生理學(xué)院
46、3、PCA比較比較/捕獲工作模式寄存器捕獲工作模式寄存器CCAPMn(n=0,1,下同。地址分別對,下同。地址分別對應(yīng)應(yīng)DAH和和DBH,復(fù)位值均為,復(fù)位值均為X0000000B)1)ECOMn:允許比較器功能控制位。允許比較器功能控制位。ECOMn=1時,允許比較器功能。時,允許比較器功能。2)CAPPn:正捕獲控制位。正捕獲控制位。CAPPn=1時,允許上升沿捕獲。時,允許上升沿捕獲。3)CAPNn:負捕獲控制位。負捕獲控制位。CAPNn=1時,允許下降沿捕獲。時,允許下降沿捕獲。4)MATn:匹配控制位。匹配控制位。當當MATn=1時,時,PCA計數(shù)值與模塊的比較計數(shù)值與模塊的比較/捕獲
47、寄存器的值匹配時,將置位捕獲寄存器的值匹配時,將置位CCON寄存器的中斷標志位寄存器的中斷標志位CCFn。5)TOGn:翻轉(zhuǎn)控制位。翻轉(zhuǎn)控制位。當當TOGn=1時,工作于時,工作于PCA高速輸出模式,高速輸出模式,PCA計數(shù)器的值與模塊的比較計數(shù)器的值與模塊的比較/捕獲寄捕獲寄存器的值匹配時,將使存器的值匹配時,將使CEXn腳(腳(CEX0/P3.7,CEX1/P3.5,CEX2/P2.0,CEX3/P2.4) 翻轉(zhuǎn)。翻轉(zhuǎn)。6)PWMn:脈寬調(diào)制模式。當脈寬調(diào)制模式。當PWMn=1時,時,CEXn腳用作脈寬調(diào)制輸出。腳用作脈寬調(diào)制輸出。7)ECCFn:使能使能CCFn中斷。使能寄存器中斷。使能
48、寄存器CCON的比較的比較/捕獲標志捕獲標志CCFn,用來產(chǎn),用來產(chǎn)生中斷。生中斷。位名稱位名稱ECCFnPWMnTOGnMATnCAPNnCAPPnECOMn-位號位號D0D1D2D3D4D5D6D728/50中國石油大學(xué)生理學(xué)院PCA模塊的工作模式設(shè)定模塊的工作模式設(shè)定16位高速輸出4DHX01100116位軟件定時器49HX00100116位捕獲模式,由CEXn的跳變觸發(fā)31HX00011X16位捕獲模式,由CEXn的下降沿觸發(fā)11HX00010X16位捕獲模式,由CEXn的上升沿觸發(fā)21HX00001X8位PWM輸出,由低變高或者由高變低均可產(chǎn)生中斷73H11001118位PWM輸出,
49、由高變低可產(chǎn)生中斷53H11001018位PWM輸出,由低變高可產(chǎn)生中斷63H11000118位PWM,無中斷42H0100001無此操作00H0000000模塊功能可設(shè)數(shù)值ECCFnPWMnTOGnMATnCAPNnCAPPnECOMn29/50中國石油大學(xué)生理學(xué)院4、 PCA/PWM模塊寄存器模塊寄存器PCA_PWMn(n=0、1,分別對應(yīng)模塊,分別對應(yīng)模塊0和模塊和模塊1,地,地址分別為址分別為F2H和和F3H,復(fù)位值均為,復(fù)位值均為XXXXXX00B ) 1)EPCnH:在在PWM模式下,與模式下,與CCAPnH組成組成9位數(shù)。位數(shù)。 2)EPCnL:在在PWM模式下,與模式下,與CC
50、APnL組成組成9位數(shù)。位數(shù)。5、PCA的的16計數(shù)器低計數(shù)器低8位位CL和高和高8位位CH。它們用于保存。它們用于保存PCA的裝載值。的裝載值。6、PCA捕捉捕捉/比較寄存器比較寄存器CCAPnL(低位字節(jié))和(低位字節(jié))和CCAPnH(高位字節(jié))(高位字節(jié))用于保存各個模塊的捕捉計數(shù)值。用于保存各個模塊的捕捉計數(shù)值。EPCnLEPCnH-位名稱D0D1D2D3D4D5D6D7位號30/50中國石油大學(xué)生理學(xué)院7.3.3 7.3.3 PCA/PWM模塊的工作模式模塊的工作模式1 1、 捕獲模式捕獲模式CAPPn捕捉0CEXnECOMnCFCRCCF1CCF0PWMnECCFnCCONPCA中
51、斷CAPNnMATnTOGnCHCLCCAPnLCCAPnHCCAPMn00031/50中國石油大學(xué)生理學(xué)院2 2、1616位軟件定時器模式位軟件定時器模式CAPPn匹配0ECOMnCFCRCCF1CCF0PWMnECCFnCCONPCA中斷CAPNnMATnTOGnCHCLCCAPnLCCAPnHCCAPMn10001先寫CCAPnL后寫CCAPnH16位比較器0使能132/50中國石油大學(xué)生理學(xué)院3 3、高速輸出模式、高速輸出模式CAPPn匹配0ECOMnCFCRCCF1CCF0PWMnECCFnCCONPCA中斷CAPNnMATnTOGnCHCLCCAPnLCCAPnHCCAPMn110
52、01先寫CCAPnL后寫CCAPnH16位比較器0使能CEXn翻轉(zhuǎn)133/50中國石油大學(xué)生理學(xué)院4 4、脈寬調(diào)節(jié)模式、脈寬調(diào)節(jié)模式開漏開漏開漏開漏PWM無效無效僅為輸入僅為輸入/高阻高阻強推挽輸出強推挽輸出/強上拉輸出,要加輸出限流電阻強上拉輸出,要加輸出限流電阻1K-10K強推挽輸出強推挽輸出/強上拉輸出強上拉輸出強推挽輸出強推挽輸出/強上拉輸出,要加輸出限流電阻強上拉輸出,要加輸出限流電阻1K-10K弱上拉弱上拉/準雙向口準雙向口PWM輸出時的狀態(tài)輸出時的狀態(tài)PWM之前的狀態(tài)之前的狀態(tài) I/O口作為口作為PWM使用時的狀態(tài)使用時的狀態(tài) CAPPn0ECOMnPWMnECCFnCAPNnM
53、ATnTOGnCCAPMn1009位比較器(0,CL)=(EPCnL,CCAPnL)使能CL溢出輸出1)001(0,CL)(EPCnL,CCAPnL)輸出0PWMnCL0EPCnHCCAPnHEPCnLCCAPnL34/50中國石油大學(xué)生理學(xué)院7.3.4 7.3.4 PCA/PWM模塊的應(yīng)用模塊的應(yīng)用(1)設(shè)置)設(shè)置PCA模塊的工作方式,將控制字寫入模塊的工作方式,將控制字寫入CMOD、CCON和和CCAPMn寄存器。寄存器。(2)設(shè)置捕捉寄存器)設(shè)置捕捉寄存器CCAPnL(低位字節(jié))和(低位字節(jié))和CCAPnH(高位字節(jié))(高位字節(jié))初值。初值。(3)根據(jù)需要,開放)根據(jù)需要,開放PCA中斷
54、,將中斷,將ECF/ECCF0/ECCF1需要置需要置1的的置置1,并將,并將EA置置1。(4)啟動)啟動PCA 計數(shù)器(計數(shù)器(CH,CL)計數(shù)(使)計數(shù)(使CR=1)。)。35/50中國石油大學(xué)生理學(xué)院【例例7-47-4】利用利用PCAPCA模塊擴展外部中斷。將模塊擴展外部中斷。將P1.3P1.3(PCAPCA模塊模塊0 0的外部輸入)擴展為下的外部輸入)擴展為下降沿觸發(fā)的外部中斷,將降沿觸發(fā)的外部中斷,將P1.4P1.4(PCAPCA模塊模塊1 1的外部輸入)擴展為上升沿的外部輸入)擴展為上升沿/ /下降沿都下降沿都可觸發(fā)的外部中斷。當可觸發(fā)的外部中斷。當P1.3P1.3出現(xiàn)下降沿時產(chǎn)生
55、中斷,對出現(xiàn)下降沿時產(chǎn)生中斷,對 P1.5 P1.5 取反;當取反;當P1.4P1.4出現(xiàn)出現(xiàn)下降沿或上升沿時都產(chǎn)生中斷,對下降沿或上升沿時都產(chǎn)生中斷,對P1.6P1.6取反。(取反。(P1.5P1.5和和P1.6P1.6可連接可連接LEDLED指示燈指指示燈指示狀態(tài)。)示狀態(tài)。)解:當解:當PCA模塊工作在捕獲模式時,對外部輸入模塊工作在捕獲模式時,對外部輸入CEXn的跳變進行采樣。當采樣的跳變進行采樣。當采樣到有效跳變時,到有效跳變時,PCA硬件將硬件將PCA計數(shù)器陣列寄存器(計數(shù)器陣列寄存器(CH和和CL)的值裝載到捕獲)的值裝載到捕獲寄存器(寄存器(CCAPnH和和CCAPnL)中。如
56、果)中。如果CCON中的中的CCFn位和位和CCAPMn中的中的ECCFn位被置位,將產(chǎn)生中斷。由此,可以將位被置位,將產(chǎn)生中斷。由此,可以將PCA模塊作為擴展外部中斷使用。模塊作為擴展外部中斷使用。按照要求,設(shè)置控制字時,按照要求,設(shè)置控制字時,PCA模塊模塊0應(yīng)設(shè)為下降沿捕獲(即應(yīng)設(shè)為下降沿捕獲(即CAPP0=0并且并且CAPN0=1),),PCA模塊模塊1應(yīng)設(shè)為上升沿和下降沿都能捕獲的方式(即應(yīng)設(shè)為上升沿和下降沿都能捕獲的方式(即CAPP1=1并且并且CAPN1=1)。)。36/50中國石油大學(xué)生理學(xué)院匯編語言程序清單如下:匯編語言程序清單如下:$INCLUDE (STC12C5A.IN
57、C) ;包含包含STC12C5A60S2寄存器定義文件寄存器定義文件LED_PCA0 EQU P1.5LED_PCA1 EQU P1.6ORG 0000H LJMP MAIN ;轉(zhuǎn)主程序轉(zhuǎn)主程序ORG 003BH ;PCA中斷中斷LJMP PCA_ISRORG 0050H MAIN: MOV SP, #70H;初始化初始化 PCAMOV CMOD,#10000000B ;空閑模式下停止空閑模式下停止PCA計數(shù)器工作計數(shù)器工作 ;PCA時鐘源為時鐘源為FOSC/12,禁止,禁止PCA計數(shù)器溢出時中斷計數(shù)器溢出時中斷MOV CCON, #00H ;清零清零 PCA計數(shù)器溢出中斷請求標志位計數(shù)器溢出
58、中斷請求標志位CF ;CR = 0, 不允許不允許PCA計數(shù)器計數(shù)計數(shù)器計數(shù);清零清零 PCA各模塊中斷請求標志位各模塊中斷請求標志位CCFnMOV CL, #00H ;清零清零PCA計數(shù)器計數(shù)器 MOV CH, #00H MOV CCAPM0, #11H ;設(shè)置設(shè)置PCA模塊模塊0下降沿觸發(fā)捕捉功能下降沿觸發(fā)捕捉功能, ECCF0=1MOV CCAPM1, #31H ;模塊模塊1上升上升/下降沿均可觸發(fā)捕捉功能下降沿均可觸發(fā)捕捉功能,ECCF1=1SETB EA ;開整個單片機所有中斷共享的總中斷控制位開整個單片機所有中斷共享的總中斷控制位SETB CR ;啟動啟動PCA計數(shù)器計數(shù)器(CH,
59、CL)計數(shù)計數(shù)SJMP $ ;循環(huán)等待中斷循環(huán)等待中斷37/50中國石油大學(xué)生理學(xué)院;- PCA中斷服務(wù)程序中斷服務(wù)程序-PCA_ISR:JNB CCF0, Not_PCA0 ;如果如果CCF0不等于不等于1,則不是,則不是PCA模塊模塊0中斷中斷 ;直接去判是否是直接去判是否是PCA模塊模塊1中斷中斷;PCA模塊模塊0中斷服務(wù)程序中斷服務(wù)程序 CPL LED_PCA0 ;LED_PCA0取反取反,表示表示PCA模塊模塊0發(fā)生了一次中斷發(fā)生了一次中斷CLR CCF0 ;清清PCA模塊模塊0中斷標志中斷標志Not_PCA0: JNB CCF1, PCA_Exit ;CCF1不等于不等于1,不是,
60、不是PCA模塊模塊1中斷,直接退出中斷,直接退出 ;PCA模塊模塊1中斷服務(wù)程序中斷服務(wù)程序CPL LED_PCA1 ;LED_PCA1取反取反, 表示表示PCA模塊模塊1發(fā)生了一次中斷發(fā)生了一次中斷CLR CCF1 ;清清PCA模塊模塊1中斷標志中斷標志PCA_Exit:RETI END38/50中國石油大學(xué)生理學(xué)院C語言版本的程序如下:語言版本的程序如下:#include “stc12c5a.h” /包含包含STC12C5A60S2寄存器定義文件寄存器定義文件sbit LED_PCA0=P15;sbit LED_PCA1=P16;void main (void)CMOD=0 x80; /空
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療軟件合同范例
- 出售固定資產(chǎn)合同范本
- 單方出資合作合同范本
- 農(nóng)村大包建房合同范本
- 合同范例效力
- 印刷合同范本 博客
- 廠房消防設(shè)計合同范本
- 農(nóng)業(yè)合作社入股合同范本
- 醫(yī)生顧問聘用合同范本
- 導(dǎo)演工作室合作合同范本
- 2025人教版一年級下冊數(shù)學(xué)教學(xué)進度表
- DeepSeek教案寫作指令
- 2025年安徽省合肥熱電集團招聘50人歷年高頻重點模擬試卷提升(共500題附帶答案詳解)
- 休學(xué)復(fù)學(xué)申請書
- 北京2025年02月北京市地質(zhì)礦產(chǎn)勘查院所屬事業(yè)單位公開招考工作人員筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- DeepSeek零基礎(chǔ)到精通手冊(保姆級教程)
- 瓷磚鋪貼勞務(wù)承包協(xié)議書
- 2025年四川司法警官職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 新建污水處理廠工程EPC總承包投標方案(技術(shù)標)
- 柔性電路板自動化制造-深度研究
- 2024年河南建筑職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
評論
0/150
提交評論