📄 hu.asm.bak
字号:
.include "LF2407.H" ;引用头部文件
.include "vector.h"
.def _c_int0
.text
_c_int0:
CALL SYSINIT ;系统初始化程序
CALL PWM_INIT ;EVB模块PWM初始化程序
WAIT:
NOP
B WAIT
;(3)系统初始化程序
SYSINIT:
SETC INTM
CLRC SXM
CLRC OVM
CLRC CNF ;B0区被配置为数据空间
LDP #0E0H ;指向7000h~7080h区
SPLK #1000011000001100B,SCSR1 ;时钟1倍频,CLKIN=20 M,CLKOUT=20 M
SPLK #0E8H,WDCR ;不使能WDT
LDP #0
SPLK #0002H,IMR ;使能中断第2级INT2
SPLK #0FFFFH,IFR ;清全部中断标志
RET
;(4)EVA模块的PWM初始化程序
PWM_INIT:
LDP #225
splk #0000111111000000b,MCRA
;LDP #DP_PF2 ;指向7080h~7100h区
;LACL MCRC
; OR #007EH ;IOPE[1~6]被配置为基本功能方式:PWM[7~12]
; SACL MCRC
LDP #DP_EVA ;指向7500h~7580h区
SPLK #0FFFFH,EVAIFRA ;清EVB 全部中断标志
SPLK #0666H,ACTRA ;PWM6,4,2 低有效,PWM5,3,1 高有效
SPLK #00000001111110100B,DBTCONA ;01F4H=0000 0001 1111 0100使能死区控制 0000(保留位)0000( 死区定时器周期 ) 1( 死区定时器3使能) 1(死区定时器2使能)1(死区定时器1使能) 000死区定时器预分频 00保留位 000X/1 001 X/2 010 X/4 011 X/8 100 X/16 101,110,111 X/32
SPLK #500,CMPR1 ;设置比较初值 PWM1高电平占3/10,
;低电平占10/60
SPLK #300,CMPR2 ;设置PWM3,4的比较寄存器 5/10
SPLK #800,CMPR3 ;设置PWM5,6的比较寄存器 7/10
SPLK #1000,T1PR ;设置定时器3周期寄存器,
;即PWM周期为60个CPU时钟周期
SPLK #0A600H,COMCONA ;使能比较操作
SPLK #0,T1CNT
SPLK #41H,GPTCONA ;TCOMPOE=1,T3PIN=01
SPLK #080H,EVAIMRA ;通用定时器3使能
SPLK #0104eh ,T1CON ;TMODE=10 连续增计数模式,TPS=111 预分频为128
;084e 0000 1000 0100 1110 ;TENABLE=1 定时器计数使能, TCLKS=00 0001 0000 0100 1110
;内部时钟 104e 0001 0000 0100 1110
;TECMPR=1 定时器3比较使能, SELT3PR=0
CLRC INTM ;开总中断
RET
;(5)定时器1中断程序
GISR2: ;优先级INT2中断入口
LDP #0E0H
LACC PIVR,1 ;读取外设中断向量寄存器(PIVR),并左移一位
ADD #PVECTORS ;加上外设中断入口地址
BACC ;跳到相应的中断服务子程序
T1GP_ISR: ;通用定时器3中断入口 ;T1GP_IS地址向量0027H 定时器TIMER1周期中断
LDP #DP_EVA
SPLK #0,T1CNT
GISR2_RET: ;中断返回
CLRC INTM ;开总中断,因为一进中断就自动关闭总中断
RET
;(6)假中断程序
PHANTOM:
KICK_DOG ;复位看门狗
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -