⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer_test.asm

📁 DSP系统入门与实践源代码
💻 ASM
字号:
;=================================================
; 定时器中断例子程序                            
; File name: INT0_test                            
; Author:    xubing                               
; Date:      11/11/2004                           
;=================================================

       .mmregs
       .global _c_int00
       .def TINT0_ISR
       
       .bss StackBuffer,10h
K_TCR  .set  0029h       
K_TCR_STOP .set 0010h 
;TCR定时器控制寄存器各位含义如下:
;RES  SOFT  FREE  PSC    TRB   TSS(定时器停止状态寄存器)   TDDR
;0000 0     0     0000   1     0   (TSS=1时停止定时)       1001

;;;;;;;定时器参数定义;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TIM0    .set 24h         ;Timer0 register
PRD0    .set 25h         ;Timer0 period counter
TCR0    .set 26h         ;Timer0 control register
PERIOD  .set 9999        ;定时器周期
        .text
;;;;;;;;;;;;;;;中断向量表;;;;;;;;;;;;;;;;;;;;;;
rs      B _c_int00
	    NOP
        NOP
nmi     B INTRET
        NOP
        NOP
sint17  B INTRET
        NOP
        NOP
sint18  B INTRET
        NOP
        NOP
sint19  B INTRET
        NOP
        NOP
sint20  B INTRET
        .word   0,0
sint21  B INTRET
        .word   0,0
sint22  .word   01000h
        .word   0,0,0
sint23  .word   0ff80h
        .word   0,0,0
sint24  .word   01000h
        .word   0,0,0
sint25  .word   0ff80h
        .word   0,0,0
sint26  .word   01000h
        .word   0,0,0
sint27  .word   0ff80h
        .word   0,0,0
sint28  .word   01000h
        .word   0,0,0
sint29  .word   0ff80h
        .word   0,0,0
sint30  .word   01000h
        .word   0,0,0
int0    B INTRET
        NOP
        NOP
int1    B INTRET   
        NOP
        NOP
int2    B INTRET
        NOP
        NOP
tint    B TINT0_ISR       ;定时器中断
        NOP
        NOP
brint0  B INTRET		
        NOP
        NOP
bxint0  B INTRET	
        NOP
        NOP
trint   B  INTRET
        NOP
        NOP
txint   B INTRET
        NOP
        NOP
int3    B INTRET
        NOP
        NOP
hpint   B INTRET
        NOP
        NOP
q26     .word   0ff80h
        .word   0,0,0
q27     .word   01000h
        .word   0,0,0
q28     .word   0ff80h
        .word   0,0,0
q29     .word   01000h
        .word   0,0,0
q30     .word   0ff80h
        .word   0,0,0
q31     .word   01000h
        .word   0,0,0    

        
_c_int00:
        STM    #3020h,PMST          ;从定位中断向量表到3000h处.
        SSBX   INTM                 ;关中断
        SSBX   SXM               
        SSBX   FRCT                 ;允许小数相乘
        STM    #StackBuffer+10h,SP  ;设置堆栈
        LD     #0,DP                ;数据页指针指向0页
        STM    #0008h,IMR           ;允许定时器0中断
;允许定时器0中断,IMR寄存器各位含义如下:
; RES DMAC5 DMAC4 BXINT1 BRINT1 HINT INT3 TINT DMAC0 BXINT0 BRINT0 TINT0 INT2 INT1 INT0
; 00  0      0      0       0     0   0    0     0     0      0      1     0    0   0
        STM    #K_TCR_STOP,TCR      ;停止定时器
        STM    #PERIOD,TIM          ;设定定时器寄存器
        STM    #PERIOD,PRD          ;设定定时器周期寄存器
        STM    #K_TCR,TCR           ;启动定时器
        STM    #0008h,IMR           ;允许Timer0中断
        STM    #0ffffh,IFR          ;清中断
        RSBX   INTM                 ;开中断
WAIT: NOP                           ;循环,等待中断发生
      B  WAIT
;============================================
;  Timer0中断程序:TINT0_ISR            
;============================================
TINT0_ISR:
         ADD #1,A           ;A寄存器加1操作
         ;SSBX XF
         stm  #20, *ar2
         stm  #20, *ar1
aa:    
    ssbx  xf     ;XF引脚置高                 
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待                
    banz  aa,*ar1-

bb:                                                            
    rsbx  xf     ;XF引脚置低
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    rpt   #8000  ;重复8001次
    nop          ;等待
    banz bb,*ar2-  
    RETE
;;;;;;;;;;;;;;;;;;中断返回;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INTRET:      
	RETE        
       
         .end 
               
                           
                                       
                                                               
        

  
       
            
                 
                      
                           
                                
                                     
                                          
                                               
                                                    
                                                         
                                                              
                                                                   
                                                                        
                                                                                  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -