⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wks.asm

📁 用HT46R51替换ADS7822 AD转换芯片(ADS7822价格在2美金左右,46R51只要0.3美金)
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;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 + -