?? timer.asm
字號:
?
+
**************************************************************************
* timer.asm
* 利用定時器timer0在XF腳產生周期2ms的的方波
**************************************************************************
.title "timer.asm"
.mmregs
.def CodeEntry ;程序入口
.def Tint0_ISR ;Timer0中斷服務程序
STACK .usect "STACK",10H ;分配堆??臻g
;設定定時器0控制寄存器的內容
K_TCR_SOFT .set 0b<<11 ;TCR第11位soft=0
K_TCR_FREE .set 0b<<10 ;TCR第10位free=0
K_TCR_PSC .set 0b<<6 ;TCR第9-6位,可不設自動加載
K_TCR_TRB .set 1b<<5 ;TCR第5位TRB=1此位置1,PSC會自動加載
K_TCR_TSS .set 0b<<4 ;TCR第4位TSS=0
K_TCR_TDDR .set 1001b<<0 ;TCR第3-0位TDDR=1001b
K_TCR .set K_TCR_SOFT|K_TCR_FREE|K_TCR_PSC|K_TCR_TRB|K_TCR_TSS|K_TCR_TDDR
K_TCR_STOP .set 1b<<4 ;TSS=1時計數器停止
.data
DATA_DP: ;數據區指針
Flag: .word 1 ;當前XF的電平標志,如果Flag=1,則XF=1
**************************************************************************
*主程序:
**************************************************************************
.text
CodeEntry:
STM #STACK+10H,SP ;設堆棧指針SP
LD #DATA_DP,DP ;設數據地址DP
STM #Flag,AR2 ;AR指向XF標志
;設置中斷向量表位置
V_IPTR .set 0080h ;指向0080H,默認是FF80
LDM PMST,A
AND #7FH,A ;保留低7位,清掉高位
OR #V_IPTR,A ;
STLM A,PMST
**************************************************************************
*初始化定時器0,f=50MHz,定時2ms時:
*
*根據定時器長度計算公式:Tt=T*(1+TDDR)*(1+PRD)
*給定TDDR=9,PRD=9999,CLKOUT主頻f=40MHz,T=25ns
*Tt=20ns*(1+9)*(1+9999)=2000us=2ms
*f=100Mhz,定時最大是:10ns*2^4*2^16=10ms,
**************************************************************************
PERIOD .set 9999 ;定義計數周期
STM K_TCR_STOP,TCR ;停止計數器0
STM #PERIOD,TIM ;可設成跟PRD一樣,也可不設自動加載
STM #PERIOD,PRD ;設定計數周期
STM #K_TCR,TCR ;開始Timer0
stm #0008h,IMR ;允許Timer0中斷
STM #0008h,IFR ;清除掛起的中斷
RSBX INTM ;開中斷
end: NOP
B end
**************************************************************************
*Timer0中斷服務程序:TIN0_ISR
**************************************************************************
Tint0_ISR:
PSHM ST0 ;本中斷程序影響TC,位于ST0中
;判斷當前XF狀態并作電平變化
BITF *AR2,#1 ;IF XF_Flag=1 then TC=1 else TC=0
BC ResetXF,TC ;IF TC=1 then XF=0 else XF=1
SetXF:
SSBX XF ;置XF為高電平
ST #1,*AR2 ;相應修改標志
B Next
ResetXF:
RSBX XF ;置XF為高電平
ST #0,*AR2 ;相應修改標志
Next:
POPM ST0
RETE
.end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -