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

📄 test.txt

📁 主要应用于称量方面
💻 TXT
📖 第 1 页 / 共 3 页
字号:
#INCLUDE HT46R72D-1.INC
DATA	.SECTION	'DATA'
SCL		EQU PB0
SDA		EQU PB2
BCD_DATA1	DB ?	       ;BCD 和 DISPLSY  参数
BCD_DATA2	DB ?	 
BCD_DATA3	DB ?	 
BCD_DATA4	DB ?	 
TAB_DATA1	DB ?	 
TAB_DATA2	DB ?	 
TAB_DATA3	DB ?	 
TAB_DATA4	DB ?	 
ZHAN_CHUN	DB ?	 

DELAY_LOOP1	DB ?	 
DELAY_LOOP2	DB ?	 
COUNT	DB ?

CAL_FLAG DB ?                      ; 标定标志 
FLAG	 DB ?                
FLAG0	 EQU FLAG.0                ;按键标志            
FLAG1	 EQU FLAG.1 	           ;闪烁显示标志        
FLAG2	 EQU FLAG.2 	           
FLAG3	 EQU FLAG.3 	           ;是否显示小数点、KG、LB      
FLAG4	 EQU FLAG.4 	           ;是显示KG、LB?
FLAG5	 EQU FLAG.5 	           ;ZERO_CHECK  执行标志
FLAG6	 EQU FLAG.6 	           
FLAG7	 EQU FLAG.7 	               

BCD_NEIMAL	DB ?	               ;BCD子程序的入口参数
BCD_NEIMAH	DB ?	 	 
BCD_RAM0	DB ?	 
BCD_RAM1	DB ?	 
BCD_RAM2	DB ?	 

ACC_RAM	    DB ?	           
STATUS_RAM	DB ?	 

NEIMAL		DB ?	                ;TIMER1的值
NEIMAH		DB ?	 

KEY_RAM1	DB ?	 
KEY_RAM2	DB ?	 


DIV_B1	DB ?	     ; = MULL_C
DIV_B2	DB ?         ; = MULH_C	  
DIV_B3	DB ?	     ; = MULL_B
DIV_B4	DB ?	     ; = MULH_B 
DIVH	DB ?	 
DIVL	DB ?	 
DIV_S1	DB ?	 
DIV_S2	DB ?	 
DIV_S3  DB ?	 
DIV_S4	DB ?	 
DIV_Y1  DB ?	 
DIV_Y2	DB ?	 
DIV_Y3	DB ?	 
DIV_Y4	DB ?	 	 

;DIV_B4	DB ?	 
;DIV_B3	DB ?	 
;DIV_B2	DB ?	 
;DIV_B1	DB ?	 
MUL_RAM1	DB ?	 
MUL_RAM2	DB ?	 
MUL_RAM3	DB ?	 
MUL_RAM4	DB ?	 
MUL_RAM5	DB ?	 
MUL_RAM6	DB ?	 
	
AutoToZeroValue	DB	?                    	 
D_WEIGHTH	DB	?                               	 
D_WEIGHTL	DB	?
D_WEIGHT0H  	DB ?	 
D_WEIGHT0L      DB ?                              
D_MinWeight	DB	? 
D_MaxWeightH DB  ? 
D_MaxWeightL DB  ?          					             
CALCONST1L	DB	?							 	 
CALCONST1H	DB	?                                
ZeroStableValue	DB	?                           	 
LOOP		DB ?	            ;开机归零稳定次数

SUML	DB ?	 
SUMH	DB ?	 
SUMHH 	DB ?	 
SUM_LOOP	DB ?	 
AVEH		DB ?	 
AVEL		DB ?	 

HT24_ADDR	DB ?	      ;通用地址
HT24_ADDR1 	DB ?	      ;具体地址 
HT24_LOOP	DB ?	 	 
HT24_RWDATA	DB ?	 
         
ZERO_H	DB ?	          ;零点追踪参数 
ZERO_L	DB ?	 
WEIGHT_H	DB ?	
WEIGHT_L	DB ?		 
CALDOT1H  DB ?
CALDOT1L  DB ?
										;开机归零时间 
ToZeroTime	DB	?						;称重待机时间	 
AutoOffTime	DB	?						;TIMERO 溢出次数	 
CountTime	DB	?	
Count0Time  DB  ?					;称重 重量变化范围	决定关机计时器的 开关 
AutoOffRange	DB	?
ToZeroRang	DB	?
stable_count 	DB ?
sysflag    DB ?

CMP_H	DB ?	 
CMP_L	DB ?	 
CMP1_H	DB ?	 
CMP1_L	DB ?	 

DUI1_H	DB ?	 
DUI1_L	DB ?	 
DUI2_H	DB ?	 
DUI2_L	DB ?	 
DUI3_H	DB ?	 
DUI3_L	DB ?	 
DUI4_L	DB ?	 
DUI4_H	DB ?
min_lock db ?	 

D_TMR1LCnt				EQU		0B8H		;15000次,(120mS)      60MS
D_TMR1HCnt				EQU		088H
NEWCNT1					EQU 	06H
NEWCNT2					EQU		0AH
SUM_LOOP_CNT 			EQU		02H

CODE	.SECTION	'CODE'
	ORG 00H

	JMP START

	ORG 004H
	RETI

	ORG 008H
	JMP IntTimer0

	ORG 00CH
	RETI

	ORG 010H
	RETI

	ORG 020H
START:
		
;************************************************************************
;初始化
	CLR BP
	CLR PAC
	CLR PA
	SET PAC 
	;CLR PA1

	CLR FLAG
	CLR DELAY_LOOP1
	CLR DELAY_LOOP2
	CLR COUNT
	CLR BCD_NEIMAH
	CLR BCD_NEIMAL
	CLR BCD_DATA1
	CLR BCD_DATA2
	CLR BCD_DATA3
	CLR BCD_DATA4
	CLR SUMHH
	CLR SUMH
	CLR SUML
	CLR AVEH
	CLR AVEL
	CLR ZERO_H
	CLR ZERO_L
	CLR DUI1_H
	CLR DUI1_L
	CLR DUI2_H
	CLR DUI2_L
	CLR DUI3_H
	CLR DUI3_L
	CLR DUI4_H
	CLR DUI4_L
	CLR SUM_LOOP
	CLR LOOP

	set bp.0           ;置位bp.0修改显示内存
	mov a, 40h
	mov mp1, a
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	inc mp1
	clr r1
	clr bp.0

	mov a,0ffh
	mov Count0Time, a

	clr pac.0
	set pa0

	CLR STABLE_COUNT
	CLR SYSFLAG

	MOV A, 77H            ;initial  cal_flag
	MOV CAL_FLAG, A

	;MOV A, 09H
	;MOV WDTC, A
	
	MOV A, 06H           ;  TIMER0 初始化  (038h)  8ms
	MOV TMR0, A
	MOV A, 87H            
	MOV TMR0C, A

	;MOV A, 0EFH          ;  TIMER1 初始化
	;MOV TMR1L, A
	;MOV A, 0CEH
	;MOV TMR1H, A
	MOV A, 81H            ;2分频
	MOV TMR1C, A

	MOV A, 05H           ;中断控制初始化
	MOV INTC0, A
	MOV A, 00H
	MOV INTC1, A

	MOV A, 5FH            ;CHARGE PUMP 初始化
	MOV CHPRC, A

	MOV A, 04H            ;断路器时钟 初始化
	MOV ADCD, A

	MOV A, 41H            ;//充电
	MOV ADCR, A

	CALL LONG_DELAY
	CALL READ_PARAMENTS

	set pbc
	clr pbc1
	set pb1

	MOV		A,	D_TMR1LCnt
	MOV		TMR1L,	A
	MOV		A,	D_TMR1HCnt
	MOV		TMR1H,	A
	SET		ADDISCH0								;充电
	CLR		ADDISCH1
	SET		T1ON									;启动定时器1
	CLR		T1F     

L_Main:
	CLR		WDT
 ;主程序/读ADC输出处理
 L_MainADC:
 L_MainADC_Init:
	MOV		A, 00h
	MOV		NEIMAH,			A
	MOV		NEIMAL,			A
L_MainADCCharge:									;充电
	CLR		TMR1L
	CLR		TMR1H
	CLR		WDT
	SNZ		T1F										;是否够70mS?
	JMP		$-2
L_MainADCDischarge:									 
	clr 	t1on
	CLR		ADDISCH0								;放电
	SET		ADDISCH1
	MOV		A,					10000010B			;2分频改为4分频
	MOV		TMR1C,				A
	SET		T1ON									;开定时器1
	CLR		T1F
	CLR		WDT
	SZ		ADCMP0									;斜线升到顶,就为1,降到底就为0
	JMP		$-2
	CLR		T1ON									;关定时器1
	MOV		A,					10000001B			;4分频改为2分频
	MOV		TMR1C,				A
	MOV		A,					TMR1H
	MOV		NEIMAH,			A
	MOV		A,					TMR1L
	MOV		NEIMAL,			A
	MOV		A,					D_TMR1LCnt
	MOV		TMR1L,				A
	MOV		A,					D_TMR1HCnt
	MOV		TMR1H,				A
	SET		ADDISCH0								;充电
	CLR		ADDISCH1
	SET		T1ON									;开定时器1
	CLR		T1F
	;.............................
;????????????????????????????????????????????????????????????????????????
;************************************************************************
;放电TIMER1值的处理
DUI_LIE:
	MOV A, NEIMAH
	MOV CMP1_H, A
	MOV A, NEIMAL
	MOV CMP1_L, A
	MOV A, SUMH
	MOV CMP_H, A
	MOV A, SUML
	MOV CMP_L, A
	CALL JUE_DUI_ZHI
	SZ CMP_H
	JMP DUI_LIE_CHU                ; 不入队列
	MOV A, CMP_L
	SUB A, NEWCNT1
	SZ C
	JMP DUI_LIE_CHU
DUI_LIE_RU:
	CLR SUM_LOOP
	MOV A, DUI3_L
	MOV DUI4_L, A
	MOV A, DUI2_L
	MOV DUI3_L, A
	MOV A, DUI1_L
	MOV DUI2_L, A
	MOV A, DUI3_H
	MOV DUI4_H, A
	MOV A, DUI2_H
	MOV DUI3_H, A
	MOV A, DUI1_H
	MOV DUI2_H, A
	MOV A, NEIMAH
	MOV DUI1_H, A
	MOV A, NEIMAL
	MOV DUI1_L, A

	MOV A, DUI1_L 
	MOV SUML, A
	MOV A, DUI1_H
	MOV SUMH, A
	MOV A, DUI2_L
	ADDM A, SUML
	MOV A, DUI2_H	
	ADCM A, SUMH
	CLR ACC
	ADCM A, SUMHH
	MOV A, DUI3_L
	ADDM A, SUML
	MOV A, DUI3_H
	ADCM A, SUMH
	CLR ACC
	ADCM A, SUMHH
	MOV A, DUI4_L
	ADDM A, SUML
	MOV A, DUI4_H
	ADCM A, SUMH
	CLR ACC
	ADCM A, SUMHH

	CLR C
	RRC SUMHH
	RRC SUMH
	RRC SUML
	CLR C
	RRC SUMHH
	RRC SUMH
	RRC SUML
	
	MOV A, SUMH
	MOV AVEH, A
	MOV A, SUML
	MOV AVEL, A
	
	CLR C
	RRC AVEH
	RRC AVEL
	CLR C
	RRC AVEH
	RRC AVEL
	;CLR C
	;RRC AVEH
	;RRC AVEL

	JMP DUI_LIE_1
DUI_LIE_CHU:
	MOV A, SUM_LOOP
	SUB A, SUM_LOOP_CNT                      ;
	SZ ACC
	JMP DUI_LIE_0
	JMP DUI_LIE_RU
DUI_LIE_0:
	INC SUM_LOOP
DUI_LIE_1:
	
	;MOV A, AVEH
	;MOV BCD_NEIMAH, A
	;MOV A, AVEL
	;MOV BCD_NEIMAL, A
	;CALL BCD1
	;CALL DISPLAY
	;JMP L_MAIN
;*************************************************************************
	CLR PAC5                  ;低压提示
	SET PA5
	SET PAC4
	SZ PA4
	JMP POWER_ENOUGH
	SET BP.0
	MOV A, 40H
	MOV MP1, A
	SET R1.3
	CLR BP.0
	JMP GG
POWER_ENOUGH:
	SET BP.0
	MOV A, 40H
	MOV MP1, A
	CLR R1.3
	CLR BP.0
GG:
	;CLR PA5
;*************************************************************************
	CALL KEY
;*************************************************************************

;标定
BIAO_DING:
    
 	SZ CAL_FLAG.0                                   ;第一次标定键标志
	JMP BI0
	CLR FLAG3                          ;不显示小数点 kg lb
	CLR WDT
	MOV A, AVEH 
	MOV ZERO_H, A
	MOV BCD_NEIMAH, A
	MOV A, AVEL
	MOV ZERO_L, A
	MOV BCD_NEIMAL, A
	CALL BCD1
	CALL DISPLAY
	JMP L_MAIN
BI0:
	SZ CAL_FLAG.1                                ;第二次标定键标志     
	JMP BI2
	SET FLAG3                    ;显示小数点 kg lb
	SZ FLAG1                     ;闪烁显示标志                    
	JMP BI1
	SET FLAG1
	CLR WDT
	MOV A, AVEH 
	MOV WEIGHT_H, A
	MOV A, AVEL 
	MOV WEIGHT_L, A 
	;SET FLAG4                     ;显示KG 或 LB 
	MOV A, CALCONST1H
	MOV BCD_NEIMAH, A              ;显示要加载的重量
	MOV A, CALCONST1L
	MOV BCD_NEIMAL, A
	CALL BCD1
	CALL DISPLAY
	JMP L_MAIN 
	
BI1:
	CLR FLAG1
	MOV A, 20H                       ;无显示
	MOV BCD_DATA1, A
	MOV BCD_DATA2, A
	MOV BCD_DATA3, A
	MOV BCD_DATA4, A
	CALL DISPLAY
	JMP L_MAIN
BI2:
	SZ CAL_FLAG.2
	JMP BI5
	MOV A, WEIGHT_L         ;WEIGHT_L -  ZERO_L
	SUB A, ZERO_L           ;WEIGHT_H -  ZERO_H
	SZ C
	JMP BI3
	DEC WEIGHT_H
	MOV A, 0FFH
	SUB A, ZERO_L
	INC ACC
	ADD A, WEIGHT_L
	MOV CALDOT1L, A
	JMP BI4
BI3:
	MOV CALDOT1L, A
BI4:
	MOV A, WEIGHT_H
	SUB A, ZERO_H
	MOV CALDOT1H, A

	RL CAL_FLAG
	
	MOV A, 01H
	MOV HT24_ADDR1, A
	MOV A, ZERO_H
	MOV HT24_RWDATA, A
	CALL WRITE
	CALL LONG_DELAY
	MOV A, 00H
	MOV HT24_ADDR1, A
	MOV A, ZERO_L
	MOV HT24_RWDATA, A
	CALL WRITE
	CALL LONG_DELAY

	MOV A, 03H
	MOV HT24_ADDR1, A
	MOV A, CALDOT1H
	MOV HT24_RWDATA, A
	CALL WRITE
	CALL LONG_DELAY
	MOV A, 02H
	MOV HT24_ADDR1, A
	MOV A, CALDOT1L
	MOV HT24_RWDATA, A
	CALL WRITE
	CALL LONG_DELAY

	clr flag3                                ;不显示小数点 kg lb   
	;call display   ;??????????????
    MOV A, 0BH                               ;display "pass"
	MOV BCD_DATA4, A
	MOV A, 0CH
	MOV BCD_DATA3, A
	MOV A, 0DH
	MOV BCD_DATA2, A
	MOV A, 0EH
	MOV BCD_DATA1, A
	CALL DISPLAY

	mov a, 0DFh
	mov count, a
delay1:
	clr wdt
	call long_delay
	sdz count 
	jmp delay1

	sz flag5
	jmp haha
	clr pb1                      ;发关机命令,上电就标定,标定完成后关机
BI5:
	;JMP L_MAIN
	
;***************************************************************************
	SZ FLAG5                   ;标定成功后,返回到称重状态
	JMP HAHA
	                      
	CALL ZERO_CHECK
HAHA:
	CALL ZERO_VERIFY 
	CALL CALCULATE
	JMP L_MAIN
;*************************************************************************
CALCULATE:                 ;出口参数为d值
	MOV A, AVEH
	MOV CMP1_H, A
	MOV A, AVEL
	MOV CMP1_L, A
	MOV A, ZERO_H
	MOV CMP_H, A
	MOV A, ZERO_L
	MOV CMP_L, A
	CALL JUE_DUI_ZHI
	MOV A, CMP_H
	MOV DIV_B4, A
	MOV A, CMP_L
	MOV DIV_B3, A

	MOV A, CalConst1H
	MOV DIV_B2, A
	MOV A, CalConst1L
	MOV DIV_B1, A
	CALL MUL
	MOV A, MUL_RAM4
	MOV DIV_B4, A
	MOV A, MUL_RAM3
	MOV DIV_B3, A
	MOV A, MUL_RAM2
	MOV DIV_B2, A
	MOV A, MUL_RAM1
	MOV DIV_B1, A
	MOV A, CALDOT1H
	MOV DIVH, A
	MOV A, CALDOT1L
	MOV DIVL, A
	CALL DIV
	MOV A, DIV_S2
	MOV D_WEIGHTH, A
	;MOV BCD_NEIMAH, A
	MOV A, DIV_S1
	MOV D_WEIGHTL, A
	;MOV BCD_NEIMAL, A
	;CALL BCD1
	;CALL DISPLAY
	;JMP L_MAIN
	RET
;**************************************************************************
	
	;JMP L_MAIN
;*************************************************************************
ZERO_VERIFY  PROC

	SZ FLAG7                ;flag7=1 执行
	JMP VERIFY0
	RET
VERIFY0:
	
	CLR BCD_DATA1             ;显示0.0
	CLR BCD_DATA2
	MOV A, 20H
	MOV BCD_DATA3, A
	MOV BCD_DATA4, A
	CALL DISPLAY

	SET FLAG3                  ; 显示小数点、KG 或 LB  

	MOV A, AVEH
	MOV CMP1_H, A
	MOV A, AVEL
	MOV CMP1_L, A
	MOV A, ZERO_H
	MOV CMP_H, A
	MOV A, ZERO_L
	MOV CMP_L, A
	CALL JUE_DUI_ZHI
	SZ CMP_H
	JMP DA_LING_PIAO
	MOV A, CMP_L
	SUB A, AutoToZeroValue    ; AutoToZeroValue  为内码值
	SZ C
	JMP DA_LING_PIAO

XIAO_LING_PIAO: 
	CLR FLAG2
	MOV A, AVEH               ;零漂范围内  刷新零点内码值
	MOV ZERO_H, A
	MOV A, AVEL
	MOV ZERO_L, A             ;(只要显示0。0  就打开计时器   时间到就睡眠)
	JMP Timer0On  
 
DA_LING_PIAO:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -