📄 mk7a21p tmr1.asm
字号:
#include "mk7a21p.inc" ;编译该文档需包含"mk7a21p.inc"文件
;-----------------------------------------------------------------------
;芯片型号(mk7a21p)
;-----------------------------------------------------------------------
;配置寄存器设置说明(CONFIG)
;1-----------FOSC=INRC&NS ;LS,NS,HS,RC,INRC(单时钟)
;INRC&LS,INRC&NS,INRC&HS
;2-----------CPT=OFF ;ON,OFF
;3-----------WDTE=Disable ;Enable,Disable
;4-----------LV=2.3V ;4V,2.3V,Don't use
;5-----------RST_DEF=...input... ;...input...,...reset...
;6-----------EXT_CLK=...timer sourse... ;...IO...,...timer sourse...
;-----------------------------------------------------------------------
tm_r equ 0x40
;-----------------------------------------------------------------------
org 0x000 ;mk7a21p的复位向量地址定义
lgoto main ;跳转到主程序入口
;-----------------------------------------------------------------------
main
movla b'00000000'
movam sys_ctl ;单时钟模式时此设置无效
;双时钟模式时:Bit7---系统时钟选择
;双时钟模式时:Bit1---内部RC振荡控制
;双时钟模式时:Bit0---外部振荡控制
;-------------------------------------------------------
movla b'10000011'
movam wdt_ctl ;WDT的使能及其预分频为1:8
;-------------------------------------------------------
movla b'00000000'
movam pa_dir ;PA0-7输出
movla b'00000000'
movam pa_dat ;PA0-7状态为0
movla b'00000000'
movam pa_plu ;PA0-7上拉禁止
movla b'00000000'
movam pa_inte ;PA0-7唤醒禁止(外部中断禁止)
;-------------------------------------------------------
movla b'11110000'
movam pb_dir ;PB0-3输出
movla b'11110000'
movam pb_dat ;PB0-3状态为0
movla b'11110000'
movam pb_plu ;PB0-3上拉禁止
;-------------------------------------------------------
movla b'11110000'
movam pc_dir ;PC0,2,3输出,PC1只能作为输入
movla b'11110000'
movam pc_dat ;PC0-3状态为0
movla b'11110000'
movam pc_plu ;PC0-3上拉禁止
;-------------------------------------------------------
movla b'01100010' ;以下为TMR1的初始化程序段
movam tm1_ctl1 ;TM1时钟源内部RC时钟,预分频1:4
;movla b'00000000'
;movam tm1_ctl2 ;Bit7:比较计数器自动清零使能
;------------------------------------------------
;mov clr_cnt,m ;写这个寄存器将清零比较计数器
;------------------------------------------------
movla 0x50
movam tm1l_la
movla 0xc3
movam tm1h_la ;溢出周期50ms
;--------------------------------------------------------
;movla b'01100010' ;以下为TMR2的初始化程序段
;movam tm2_ctl1
;movla b'11000010'
;movam tm2_ctl2 ;Bit7:模式选择/Bit6:PWM初始状态
;Bit5:IO或TO_E/Bit3-0:PWM预分频
;movla .200
;movam tm2_la
;--------------------------------------------------------
;movla b'01100010' ;以下为TMR3的初始化程序段
;movam tm3_ctl1
;movla .100
;movam tm3_la
;--------------------------------------------------------
;movla b'00000000' ;以下是ADC的初始化设置
;movla ad_ctl1 ;Bit7:adc使能/Bit5:模式/Bit1-0通道选择
;movla b'00000000'
;movla ad_ctl2 ;Bit7:比较结果/Bit1-0:adc时钟源
;movla b'00000000'
;movla ad_ctl3 ;Bit3-0:PB0-3复用管脚的选择,做ADC用
;movla .0
;movla ad_dat
;--------------------------------------------------------
movla b'00000000' ;以下是中断设置
movam irqm ;Bit1:TM1/Bit2:TM2/Bit3:TM3
;Bit4:PA/Bit6:ADC/Bit7:中断总使能Bit
clr irqf
;--------------------------------------------------------
bs tm1_ctl1,7
;bs tm2_ctl1,7
;bs tm3_ctl1,7
;------------------------------------------------------------------------
loop
btss irqf,tm1f
lgoto $-1 ;等待TM1溢出
bc irqf,tm1f ;清除溢出标志
;--------------------------------------------------------
inc tm_r,m
movla .20 ;50x20=1s
sub tm_r,a
btss status,c
lgoto loop
clr tm_r
;--------------------------------------------------------
movla b'00000001'
xor pa_dat,m
lgoto loop
;------------------------------------------------------------------------
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -