📄 wks.asm
字号:
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;Mcu: HT46r51 ^
;Data: 2005.8.13 ^
;Cystal 8M ^
;Author ^
;Filename: WK.asm ^
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
#include ht46r52.inc
TR_Off equ Pa.0
Drive equ Pa.1
Ts_Drive equ Pa.2
Buz equ Pa.3
Key_S2 equ Pa.4
Data_P equ Pa.6
Clk_P equ Pa.7
Zero equ Pd.0
Reset equ pb.4
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
Temp_Const equ 25
Temp_Min equ 11
Buz_Num equ [28h]
Buz_Measure equ [29h]
Ms4 equ [2ah]
Current_L equ [2bh]
Current_H equ [2ch]
Zero_Delay equ [2dh]
Ms_2 equ [2eh]
Drive_Count equ [2fh]
Room_L equ [30h]
Room_H equ [31h]
J_Temp_L equ [32h]
J_Temp_H equ [33h]
Current_Count equ [34h]
Room_Count equ [35h]
J_K_Count equ [36h]
JK_Temp_L equ [37h]
JK_Temp_H equ [38h]
JK_Value_L equ [39h]
JK_Value_H equ [3ah]
Room_Temp equ [3bh]
Current equ [3ch]
Send_L equ [3dh]
Send_H equ [3eh]
All_Temp_L equ [3fh]
All_Temp_H equ [40h]
Copy_a equ [41h]
Copy_s equ [42h]
Num_Pul equ [43h]
Incr_L equ [44h] ;1ba=442 每升高一度 ad值 增加4.42个码
Incr_H equ [45h]
Ad_25_L equ [46h] ;
Ad_25_H equ [47h]
Betw_L equ [48h]
Betw_H equ [49h]
Betw_Count_L equ [4ah]
Send_Save_L equ [4bh]
Send_Save_H equ [4ch]
Key_Num_L equ [4dh]
Key_Num0 equ [4eh]
Temp_CC equ [4fh]
Num_B equ [50h]
JK_Temp_P equ [51h]
JK_Temp_K equ [52h]
Num_H equ [53h]
Ms_250 equ [54h]
Minute_L equ [55h] ;240/4=60
Buz_N_L equ [56h]
Zero_L equ [57h]
Reset_L equ [58h]
Reset_H equ [59h]
Reset_Num_L equ [5ah]
Zero_Num equ [5bh]
Buz_N_H equ [5ch]
Key_Num_H equ [5dh]
Minute_H equ [5eh]
Reset_Num_H equ [5fh]
Reset_Ram equ [60h]
Buz_Ram equ [61h]
Betw_Count_H equ [62h]
Flag_c equ [7dh]
Zero_Prev equ [7dh].0
Have_Key equ [7dh].1
Alarm_Flag equ [7dh].2
Current_Flag equ [7dh].3
Error_s equ [7dh].4
Flag_m equ [7eh]
Drive_off equ [7eh].0
Error_Flag equ [7eh].1
Sign_Flag equ [7eh].2
Temp_Sign equ [7eh].3
Star_Over equ [7eh].4
Ext_Flag equ [7eh].5
No_Zero_Flag equ [7eh].6
Reset_Flag equ [7eh].7
Flag equ [7fh]
Buz_Flag equ [7fh].0
Zero_Flag equ [7fh].1
Key_Flag equ [7fh].2
Drive_Flag equ [7fh].3
Current_Error equ [7fh].4
Room_Error equ [7fh].5
J_K_Error equ [7fh].6
Flag_0 equ [7fh].7
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
ORG 00H
JMP Main_Star
ORG 04H
JMP EXT_INT
ORG 08H ;
JMP Time_Int
ORG 0CH
RETI
Time_Int:
mov Copy_a,a
set EMI
inc Ms4 ;主程序不能用“Z“标志
mov a,00001000b
sz Buz_Flag
xorm a,pa
mov a,Copy_a
RETI
Main_Star:
mov a,10110100b
mov Pac,a
mov a,00110010b
mov Pa,a
clr Pbc.4 ;使PIC复位
clr Pb.4
set Pdc
set Pd
mov a,28h
mov Mp0,a
Clr_Zero:
clr acc
mov R0,a
inc Mp0
mov a,Mp0
sub a,80h
snz z
jmp Clr_Zero
mov a,00000101b ;外部中断,定时器中断
mov intc,a
mov a,83h ;125us
mov tmr,a
mov a,93h ;
mov tmrc,a
mov a,60
mov Buz_Measure,a
;+++++++++++++++++++++++++++++++
;关掉PIC输出
clr Drive_Off
clr Reset
set Drive
;++++++++++++++++++++++++++++++
Main_SS:
mov a,Ms4 ;2ms
sub a,4
snz c
jmp Main_SS
clr Ms4
clr Wdt
inc All_TEMP_L
mov a,ALL_Temp_L
sub a,250
snz c
jmp Main_SS
;反接监测完 置高
;++++++++++++++++++++++++++++++
Main_D:
mov a,Ms4 ;2ms
sub a,8
snz c
jmp Main_D
clr Ms4
clr Wdt
call Buz_Sub
call Ad_Sub
;call Zero_PS
mov a,1
addm a,Buz_N_L
clr acc
adcm a,Buz_N_H
mov a,Buz_N_L
sub a,0f4h
mov a,1
mov All_Temp_L,a
mov a,Buz_N_H
sbc a,All_Temp_L
snz c
jmp Main_D
; call Calcu_Zero
call Count_Sub ;250*2=500ms
set pb.4 ;停止复位
mov a,00000101b ;外部中断,定时器中断
mov intc,a
Main:
mov a,Ms4 ;500us
sub a,4
snz c
jmp Main
clr Ms4
clr Wdt
call Buz_Sub
call Zero_Sub
call Ad_Sub
call Count_Sub
call Reset_Sub
call Error_Sub
call Error_HH
jmp Main
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
Reset_Sub:
sz Ext_Flag ;有无外部中断
jmp NO_Mind0
sz Reset_Flag
jmp Release_Reset
mov a,1
addm a,Reset_L
clr acc
adcm a,Reset_H
mov a,Reset_L
sub a,0c4h ;5000*500us=2500ms
mov a,9
mov All_Temp_L,a
mov a,Reset_H
sbc a,All_Temp_L
snz c
jmp Reset_Over
clr Reset_L
clr Reset_H
clr Pb.4 ;复位
set Reset_Flag
clr Reset_Num_L
clr Reset_Num_H
jmp Reset_Over
No_Mind0:
sz Alarm_Flag
jmp Reset_Me
clr Reset_Ram
set Pb.4
No_Mind:
clr Reset_Flag
clr Ext_Flag
clr Reset_Num_L
clr Reset_Num_H
clr Reset_L
clr Reset_H
Reset_Over:
ret
Reset_Me:
clr Reset
ret
Release_Reset:
sz Alarm_Flag
jmp Reset_Me
mov a,1
addm a,Reset_Num_L
clr acc
adcm a,Reset_Num_H
mov a,Reset_Num_L
sub a,0f4h
mov a,1
mov All_Temp_L,a
mov a,Reset_Num_H
sbc a,All_Temp_L
snz c
jmp Reset_Over
clr Reset_Num_L
clr Reset_Num_H
set Pb.4 ;停止复位
inc Reset_Ram
snz Reset_Ram.2
jmp No_Mind
clr Reset_Ram
sz Alarm_Flag
jmp Reset_Over
set Alarm_Flag
mov a,100
mov Buz_Measure,a
mov a,100
mov Buz_Num,a
jmp Reset_Over
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
Error_Sub:
sz Current_Flag
jmp System_Over
sz Alarm_Flag
jmp System_Over
;sz No_Zero_Flag
;jmp System_Over ;没有过零信号
sz Buz_Flag
jmp Error_Over
mov a,00000010b ;蜂鸣器叫完开外部中断
orm a,intc
jmp Error_Over
System_Over:
clr Drive_OFF
set Drive
Error_Over:
ret
Error_HH:
sz Error_s
jmp Error_HH_Over
snz Error_Flag
jmp Error_HH_x
set Error_s
mov a,15
mov Buz_Num,a
mov a,100
mov Buz_Measure,a
mov a,25
mov Room_Temp,a
jmp Error_HH_Over
Error_HH_x:
clr Buz_Num
Error_HH_Over:
ret
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
Zero_PS:
sz Zero
jmp Zero_Set
snz Zero_Prev
jmp Zero_Clr
clr Zero_Prev
inc Zero_Num
jmp Zero_PS_Over
Zero_Set:
set Zero_Prev
jmp Zero_PS_Over
Zero_Clr:
clr Zero_Prev
Zero_PS_Over:
ret
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
Calcu_Zero:
mov a,Zero_Num
sub a,40
snz c
jmp Zero_Error
mov a,Zero_Num
sub a,70
sz c
jmp Zero_Error
mov a,0f4h ;500/Num=Del
mov All_Temp_L,a
mov a,1
mov All_Temp_H,a
Cal_0:
mov a,All_Temp_L
sub a,Zero_Num
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -