?? ccuuse.asm
字號:
;使用硬件CCU ----- 基本定時器操作
; 1. 16位定時器,并有溢出重裝功能有
; 2. 時鐘CCUCLK可選,可將時鐘源以1到1024間的任何整數進行分頻
; 3. 4個比較/PWM輸出,可選擇極性
; 4. 對稱/非對稱PWM選擇
; 5. 2路比較輸入,帶有事件計數器和數據噪聲濾波器
; 6. 7個中斷(1個溢出,2個捕獲,4個比較)使用同一具中斷向量
; 7. 通過映像寄存器可實現安全的16位讀/寫。
;16位定時器,4個捕獲/比較模塊,對應用4路輸出(OA,OB,OC,OD),兩路捕獲輸入(IA,IB)
;CCU定時器
TH2 DATA 0CDH ;CCU定時器寄存器
TL2 DATA 0CCH
TOR2H DATA 0CFH ;CCU定時器的重裝寄存器
TOR2L DATA 0CEH
TISE2 DATA 0DEH ;中斷源寄存器
TICR2 DATA 0C9H ;CCU中斷控制寄存器,可屏蔽或打開某個中斷
TIFR2 DATA 0E9H ;CCU中斷標志寄存器
;定義CCU控制字節
TCR20 DATA 0C8H ;用來設置CCU定時器及工作模式
PLLEN BIT TCR20.7 ;啟動鎖相環功能。為1時啟動
HLTRN BIT TCR20.6 ;PWM停止指示。該位為1時指示發生了PWM停止。若要重新啟動PWM,用戶要清零該位。
HLTEN BIT TCR20.5 ;PWM停止功能使能。該位為1時,輸入捕獲A管腳的捕獲事件將立即停止所有PWM。
ALTCD BIT TCR20.4 ;PWM通道C/D交替輸出使能。當該位置位,PWM通道C和D的輸出每個計數器周期交替選通。
ALTAB BIT TCR20.3 ;PWM通道A/B交替輸出使能。當該位置位,PWM通道A和B的輸出每個計數器周期交替選通。
TDIR2 BIT TCR20.2 ;CCU定時器的計數方向,為0是遞增,為1時遞減。
TMOD21 BIT TCR20.1 ;CCU定時模式選擇。00---定時器停止,01---基本定時器功能
TMOD20 BIT TCR20.0 ;10---非對稱PWM(使用PLL作為時鐘源),11---對稱PWM(使用PLL作為時鐘源)
TCR21 DATA 0F9H ;用于設置PLL分頻器,以對PCLK進行倍頻
;預分頻器控制寄存器,TPCR2H的高6位無效。將PCLK再進行分頻
TPCR2H DATA 0CBH
TPCR2L DATA 0CAH
;各個模塊的寄存器定義
OCRAH DATA 0EFH ;各個模塊的捕獲比較的定時器寄存器
OCRAL DATA 0EEH
OCRBH DATA 0FBH
OCRBL DATA 0FAH
OCRCH DATA 0FDH
OCRCL DATA 0FCH
OCRDH DATA 0FFH
OCRDL DATA 0FEH
CCCRA DATA 0EAH ;各個模塊的捕獲比較控制或模式
CCCRB DATA 0EBH
CCCRC DATA 0ECH
CCCRD DATA 0EDH
ICRAH DATA 0ABH ;輸入捕獲A高字節
ICRAL DATA 0AAH ;輸入捕獲A低字節
ICRBH DATA 0AFH
ICRBL DATA 0AEH
;定義LPC932的部分特殊寄存器
TRIM DATA 96H
DIVM DATA 95H ;CPU分頻設置寄存器
P1M1 DATA 91H
P1M2 DATA 92H
P2M1 DATA 0A4H
P2M2 DATA 0A5H
IEN1 DATA 0E8H
ECCU BIT IEN1.4 ;CCU中斷允許位
T2_CNT DATA 30H ;軟件定時器
LEDCON BIT P1.6 ;LED控制口線,為0時點亮
;============================================================
ORG 0000H
AJMP MAIN
ORG 005BH
AJMP INTS_CCU ;CCU中斷入口
ORG 0100H
MAIN: MOV R7,#0
DJNZ R7,$
;由于上電復位時所用IO口設置為高阻態,所以要進行IO設置
MOV P1M1,#2CH
MOV P1M2,#0CH
MOV P2M1,#00H
MOV P2M2,#00H
CPL LEDCON
MOV T2_CNT,#0
MOV SP,#60H
ACALL INI_CCU ;初始化CCU
SJMP $ ;等待定時器中斷
;初始化CCU
;設置定時器重裝值,時鐘源設置,并打開中斷設置等。
INI_CCU:
MOV TOR2H,#10H ;設置CCU定時器重裝值
MOV TOR2L,#00H ;TH2,TL2可先不設置
MOV TPCR2H,#00 ;使用PCLK時鐘源,并進行10分頻
MOV TPCR2L,#10
MOV TCR20,#00000001B;設置基本定時器
MOV TICR2,#80H ;設置CCU中斷使能寄存器
SETB ECCU ;打開CCU中斷
SETB EA
RET
;CCU定時器中斷處理
;注:定時器值會自動重裝,TH2,TL2
INTS_CCU:
MOV A,TISE2
ANL A,#07H
CJNE A,#07H,INTS_CEXT ;判斷中斷源,若不為CCU定時器中斷,退出
INC T2_CNT
MOV A,T2_CNT
CJNE A,#10,INTS_CEXT
MOV T2_CNT,#0
CPL LEDCON
INTS_CEXT: MOV TIFR2,#00H ;清除中斷標志
RETI
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -