?? mk7a21p capture.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...
;---------------------------------------------------------------------
a_buf equ 0x40
status_buf equ 0x41
dat_0 equ 0x42
dat_1 equ 0x43
;---------------------------------------------------------------------
org 0x000 ;mk7a21p的復位向量地址定義
lgoto main ;跳轉到主程序入口
org 0x004 ;mk7a21p的中斷向量地址定義
lgoto int ;跳轉到中斷程序入口
;---------------------------------------------------------------------
org 0x010
int
movam a_buf
swap status,a
movam status_buf ;保護現場
;-------------------------------------------------------------------
btsc irqf,tm1f
lgoto int_tm1 ;進入TM1有關的中斷服務程序
btsc irqf,tm2f
lgoto int_tm2 ;進入TM2有關的中斷服務程序
btsc irqf,tm3f
lgoto int_tm3 ;進入TM3有關的中斷服務程序
btsc irqf,paf
lgoto int_pa ;進入PortA中斷服務程序
btsc irqf,adcf
lgoto int_adc ;進入AD轉換中斷服務程序
;-------------------------------------------------------------------
int_end
swap status_buf,a
movam status
swap a_buf,m
swap a_buf,a ;恢復現場
reti
;---------------------------------------------------------------------
int_tm1
bc irqf,tm1f
;-------------------------------------------------------------------
;TM1中斷服務程序
com tm1l_la,a
movam dat_0
com tm1h_la,a
movam dat_1
lcall display
lgoto int_end
;---------------------------------------------------------------------
int_tm2
bc irqf,tm2f
;-------------------------------------------------------------------
;TM2中斷服務程序
;-------------------------------------------------------------------
lgoto int_end
;---------------------------------------------------------------------
int_tm3
bc irqf,tm2f
;-------------------------------------------------------------------
;TM2中斷服務程序
;-------------------------------------------------------------------
lgoto int_end
;---------------------------------------------------------------------
int_pa
bc irqf,paf
;-------------------------------------------------------------------
;PortA中斷服務程序
;-------------------------------------------------------------------
lgoto int_end
;-----------------------------------------------------------------------------------
int_adc
bc irqf,adcf
;-------------------------------------------------------------------
;adc中斷服務程序
;-------------------------------------------------------------------
lgoto int_end
;-----------------------------------------------------------------------------------
main
movla b'00000000'
movam sys_ctl ;單時鐘模式時此設置無效
;雙時鐘模式時:Bit7---系統時鐘選擇
;雙時鐘模式時:Bit1---內部RC振蕩控制
;雙時鐘模式時:Bit0---外部振蕩控制
;-------------------------------------------------------------------
movla b'10000011'
movam wdt_ctl ;WDT的使能及其預分頻為1:8
;-------------------------------------------------------------------
movla b'00010000'
movam pa_dir ;PA4輸入
movla b'00000000'
movam pa_dat ;PA0-7狀態
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狀態
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狀態
movla b'11110000'
movam pc_plu ;PC0-3上拉禁止
;--------------------------------------------------------------------
movla b'00110000' ;以下為TMR1的初始化程序段
movam tm1_ctl1 ;TM1用作捕捉模式,預分頻1:1
movla b'00000000'
movam tm1_ctl2 ;Bit7:比較計數器自動清零使能
;-----------------------
mov clr_cnt,m ;寫這個寄存器將清零比較計數器
;-----------------------
;movla 0x50
;movam tm1l_la
;movla 0xc3
;movam tm1h_la
;---------------------------------------------------------------------
movla b'01100010' ;以下為TMR2的初始化程序段
movam tm2_ctl1
movla b'11000000'
movam tm2_ctl2 ;Bit7:模式選擇/Bit6:PWM初始狀態
;Bit5:IO或TO_E/Bit3-0:PWM預分頻
movla .200
movam tm2_la
;---------------------------------------------------------------------
movla b'01100010' ;以下為TMR3的初始化程序段
movam tm3_ctl
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復用管腳的選擇
movla .0
movla ad_dat
;---------------------------------------------------------------------
movla b'10000010' ;以下是中斷設置
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
nop
lgoto $
;-------------------------------------------------------------------------------------
display
mov dat_0,a
andla b'00001111'
movam pb_dat
;---------------------------------------------------------------------
rr dat_0,m
rr dat_0,m
rr dat_0,m
rr dat_0,m
mov dat_0,a
andla b'00001111'
movam pa_dat
;---------------------------------------------------------------------
btsc dat_1,0
bs pa_dat,5
btss dat_1,0
bc pa_dat,5
;---------------------------------------------------------------------
btsc dat_1,1
bs pa_dat,6
btss dat_1,1
bc pa_dat,6
;---------------------------------------------------------------------
btsc dat_1,2
bs pa_dat,7
btss dat_1,2
bc pa_dat,7
;---------------------------------------------------------------------
btsc dat_1,3
bs pc_dat,3
btss dat_1,3
bc pc_dat,3
;---------------------------------------------------------------------
btsc dat_1,4
bs pc_dat,2
btss dat_1,4
bc pc_dat,2
ret
;-------------------------------------------------------------------------------------
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -