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

📄 timer.asm

📁 本人调试TMS320C54X产生方波信号的调试程序
💻 ASM
字号:
         .mmregs
         .include "c5xx.inc"    ;"init54x.inc"
         .def MAIN_START
         .def timer0_rev  
STACK    .usect "STACK",20h
         .data
TIM0   .set 0024h ;定时器0的TIM 寄存器地址
PRD0   .set 0025h ;定时器0的PRD 寄存器地址
TCR0   .set 0026h ;定时器0的TCR 寄存器地址
t0_flag .set 0060h ;定义输出判别标志
t0_counter .usect "vars", 1 ;定义计数长度变量
SWCR   .set 2BH 
        .text
MAIN_START:
         
     STM  #0000h,SWWSR
     STM  #0010h,TCR0 ; TCR TSS=1 ,关断定时器0
     STM  #39999,TIM0 ;TIM0赋初值
     STM  #39999,PRD0 ;PRD0赋初值
     ST   #0,t0_flag   
     STM  #0269h,TCR0 ;ON TIM0 in TCR TSS=0
     STM  #0008h,IFR    ;TINT0=1 ,清除未处理完的定时器中断
     STM  #0008h,IMR    ; TINT0=1 ,开放(允许)定时器中断
     RSBX INTM         ;开放全部中断  
     
;jj:
;     NOP
;     NOP
;     NOP
;     B    jj  
     
      RET

; 定时器0中断服务子程序.其功能是:每定时中断一次计数器减1,这样减100次就延时1s,并改变一次XF的值,使XF高低电平各持续1s,形成2s周期.
timer0_rev:
     PSHM  TRN 
     PSHM  T
     PSHM  ST0
     PSHM  ST1
     
     RSBX  CPL   ;复位CPL,选用页指针DP的直接寻址方式
     ADDM  #-1,*(t0_counter) ;计数器减1
     CMPM  *(t0_counter),#0  ;判断计数器是否减至0: 如果t0_counter=0,则TC=1 ,否则TC=0 
     BC   wait ,NTC    ;如果没有减至0,即TC=0,则执行wait程序段
                       ;如果减至0,即TC=1,计数器重新开始计数 
     ST #100,*(t0_counter) 
     BITF t0_flag,#1 
     BC  xf_out,NTC ;TC=0时,执行xf_out程序段
     SSBX XF  ;TC=1时
     ST   #0,t0_flag ;t0_flag=0,为下次XF变低电平作准备
     B  wait

xf_out:
     RSBX  XF
     ST   #1,t0_flag ;t0_flag=1,为下次XF变高电平作准备

wait:
     POPM  ST1
     POPM  ST0
     POPM  T
     POPM  TRN
     RETE
         .end

⌨️ 快捷键说明

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