📄 main.asm
字号:
;*********************************************************************
org 0h ;
jmp ColdStart ;power on reset.
org 04h ;
jmp ext_int ;external interrupt subroutine.
org 08h ;
jmp timer_int ;timer interrupt subroutine.
org 10h ;
ColdStart:
call host_init ;
; call delay1s ;
call power_off ;
clr wait_f ;first time power on, no need to wait.
call int_init ;
mov a, AN_VOLTAGE ;dummy AD sample, in case voltage noise.
call ad_com ;
clr timer_VoltHigh ;
call SetBuzOnce ;
;*******************************************
mainloop:
snz ms_f ;every 2.5ms
jmp main_notms ;
call set_timer ;
call SetPortDir ;set port direction again.
jmp timer_check ;
TimerChkEnd:
call disp_process ;
clr ms_f ;
clr ms100_f ;
clr s3_f ;
clr minute_f ;
call display ;update LED display.
mov a, dgt_position ;scan the keyboard only when all digit OFF.
xor a, 3 ;
sz z ;
call kybd_GetKey ;
main_notms:
call key_scan ;
jmp keyjob ;
jmp mainloop ;
;*********************************************************************
host_init:
call SetPortDir ;set port to be input or output.
clr _pwm ;
clr _switch ;
clr _fan ;
call RAMclear ;
mov a, 1 ;
mov timer_jianxie, a ;
clr error_flag ;
clr error_f ;
ret ;
;************************************
delay1s:
clr w0 ;a*257ms
clr w1 ;
aa:
clr wdt ;
sdz w0 ;
jmp aa ;
sdz w1 ;
jmp aa ;
ret
;***********************************
SetPortDir:
clr wdt ;
mov a, PAC_BAK ;
mov PAC, A ;
mov a, PBC_BAK ;
mov PBC, A ;
mov a, PDC_BAK ;
mov PDC, A ;
ret
;*********************************
RamClear:
mov a, ramStart ;ram start position.
mov mp, a ;
host_loop:
clr r0 ;
inc mp ;
inc acc ;
snz acc.7 ;xx-7fh
jmp host_loop ;
ret
;************************************
; every 2.0ms
;
set_timer:
mov a, 256-15 ;15*256= 3.84ms
addm a, timer_ms ;
inc timer_100ms ;
mov a, timer_100ms ;
add a, (256-TIME_100MS) ;
snz c ;
ret ;
set ms100_f ;
clr timer_100ms ;
;***
inc timer_3s ;
mov a, timer_3s ;
add a, (256-TIME_3S) ;
snz c ;
ret ;
set s3_f ;
clr timer_3s ;
;***
inc timer_minute ;
mov a, timer_minute ;
add a, (256-TIME_MINUTE) ;
snz c ;
ret ;
set minute_f ;
clr timer_minute ;
ret ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -