mov temp_a,a ;保存
mov a,status
mov temp_s,a
inc t_int0 ;每次中断0.25us
mov a,temp_s
mov status,a
mov a,temp_a
reti
;中断处理程序,注意先保存用到的acc和标志寄存器status,返回前恢复
int_set:
......;中断处理程序,设置风扇输出
reti
;主程序开始
start_l:
;初始化ram、i/o、timer、中断等,一般先将通用ram全清零
;注意继电器等关键变量的初始化,否则上电时继电器可能会跳一下。
;初始化某些特殊变量
;主循环程序部分
main:
call sw_in_set ;注意按键设置会将显示关闭,则显示输出程序在后
call dsp
_out_set ;显示扫描程序
call sw_out_set ;按键功能及状态设置
call ad_tem_set ;a/d转换及温度计算
call dsp_state_set ;显示状态计算
main_delay_2ms:
mov a,t_int0 ;0.25*8=2 等待2ms时间到
sub a,8
snz c
jmp main_delay_2ms
call sw_in_set ;注意按键设置会将显示关闭,则显示输出程序在后
call dsp_out_set ;调用显示扫描程序
call heat_out _set ;调用加热状态及功率设置
call buz_set ;调用蜂鸣器设置子程序
call time_set
main_delay_4ms:
mov a,t_int0 ;0.25ms*16=4ms 等待4ms时间到
sub a,16
snz c
jmp main_delay_2ms
clr t_int0
jmp main
;各子程序分列后面
sw_in_set: ;按键检测、编码开关检测、门状态检测
......
ret
dsp_out_set: ;显示扫描程序
......
ret
sw_out_set: ;按键功能及状态设置
......
ret
ad_tem_set: ;a/d转换及温度计算
......
ret
dsp_state_set: ;显示状态计算
......
ret
heat_out _set: ;调用加热状态及功率设置
......
ret
buz_set: ;蜂鸣器设置子程序
......
ret
time_set: ;时间及定时处理程序
......
ret
;程序中会用到很多表,为调用方便,则将其放到最后页面
org 0f00h
dsp_code_l0:
dc 10011111b;0
......
end ;程序结束