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

📄 test.txt

📁 主要应用于称量方面
💻 TXT
📖 第 1 页 / 共 3 页
字号:
	
	SZ D_WEIGHTH
	JMP DA_LIANG_CHENG
	MOV A, D_WEIGHTL
	SUB A, D_MINWEIGHT
	SZ C
	JMP DA_LIANG_CHENG
	JMP XIAO_LIANG_CHENG
 
XIAO_LIANG_CHENG:               ;只要在小量程内   就打开计时器
	CLR FLAG2
	JMP Timer0On                  
DA_LIANG_CHENG:
	MOV A, D_MAXWEIGHTH
	SUB A, D_WEIGHTH                ;判断是否超最大量程
	SZ C
	JMP  NEXT0
	JMP OVER_MAX
NEXT0:
	SZ ACC
	JMP NEXT1
	MOV A, D_MAXWEIGHTL
	SUB A, D_WEIGHTL
	SZ C
	JMP NEXT1
	JMP OVER_MAX
NEXT1:	
	sz	flag4                  ;单位转换标志
	jmp next2
	jmp next3
next2:                          ;lb
	mov a, d_weighth
	mov div_b2, a
	mov a, d_weightl
	mov div_b1, a
	mov a, 08h
	mov div_b4, a
	mov a, 9dh
	mov div_b3, 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, 03h
	mov divh, a
	mov a, 0e8h
	mov divl, a
	call div
	mov a, div_s2
	mov d_weighth, a
	mov a, div_s1
	mov d_weightl, a
next3:                          ;kg
	MOV A, D_WEIGHTH
	MOV BCD_NEIMAH, A
	MOV A, D_WEIGHTL
	MOV BCD_NEIMAL, A
	CALL BCD1
	CALL DISPLAY

SwitchToTimer0:                  ;当变化超过 AutoOffRange 个d后  就清零
	MOV A, D_WEIGHTH             ;关机计数器
	MOV CMP1_H, A
	MOV A, D_WEIGHTL
	MOV CMP1_L, A
	MOV A, D_WEIGHT0H
	MOV CMP_H, A
	MOV A, D_WEIGHT0L
	MOV CMP_L, A
	CALL JUE_DUI_ZHI
	SZ CMP_H
	JMP Timer0Off
	MOV A, CMP_L
	SUB A, AutoOffRange
	SZ C
	JMP Timer0Off
	
	mov a, d_weightl
	sub a, min_lock
	sz c
	jmp stbilize_judge
	sz d_weighth
	jmp stbilize_judge
	clr stable_count 
	jmp Timer0On

stbilize_judge:
	sz flag2                      ;称重稳定标志
	jmp Timer0On
	inc stable_count
	mov a, stable_count           ;判断稳定否?
	sub a, 064h
	sz acc
	ret
	set  flag2                   ;FLAG2置位  称重稳定
	clr stable_count 

	SET BP.0                     ;点亮锁定标志
	MOV A, 40H
	MOV MP1, A
	SET R1.0
	CLR BP.0
	 
Timer0On:                       ;称重时  此时开始锁定
	clr wdt                     ;或当重量小于小量程时 开始锁定
	SET T0ON
	sz CountTime
	jmp suo_ding
	jmp sleep
suo_ding:
	sz flag2
	jmp Timer0On
	RET
sleep:
	clr t0on
	clr flag2                   ;清稳定标志
	MOV A, AutoOffTime          ;界面锁定到关机的时间,唤醒后用
	MOV CountTime, A
	MOV A, 0FFH
	MOV Count0Time, A
	clr pa0                    ;关背光
	SET WDTOSC0
	CLR WDTOSC1
	clr pb1
	CLR WDTOSC0
	SET WDTOSC1
	set pa0                   ;唤醒后   打开背光

	MOV A, 60H                      ;唤醒延时,保持称重稳定
	MOV COUNT, A
DELAY2:
	CALL LONG_DELAY
	SDZ COUNT
	JMP DELAY2

	SET BP.0                     ;关闭锁定标志
	MOV A, 40H
	MOV MP1, A
	CLR R1.0
	CLR BP.0
	ret
Timer0Off:
	clr stable_count                 ;变化超过autooffrange后 重新计时
	CLR T0ON
	MOV A, AutoOffTime
	MOV CountTime, A
	MOV A, 0FFH
	MOV Count0Time, A
	MOV A, D_WEIGHTH                  ; 刷新当前称重值
	MOV D_WEIGHT0H, A
	MOV A, D_WEIGHTL
	MOV D_WEIGHT0L, A
	RET
OVER_MAX:
	clr flag3
	mov a, 0Fh                      ;display "over"
	mov bcd_data4, a
	mov a, 10h
	mov bcd_data3, a
	mov a, 11h
	mov bcd_data2, a
	mov a, 12h
	mov bcd_data1, a
	call display
	ret
ZERO_VERIFY ENDP

;**********************************************************************
ZERO_CHECK:
	
	SZ FLAG5                   ;ZERO——CHECK 执行标志
	RET
	;CALL READ_PARAMENTS
	MOV A, ToZeroTime         ;开机回零时间
	MOV CountTime, A
	MOV A, 0FFH
	MOV Count0Time, A
CHECK0:
	SET T0ON                   ;一进入该程序 就打开 TIMER0
	MOV A, D_WEIGHTH
	MOV CMP1_H, A            
	MOV A, D_WEIGHTL           ;d 比较   
	MOV CMP1_L, A              
	MOV A, D_WEIGHT0H
	MOV CMP_H, A
	MOV A, D_WEIGHT0L
	MOV CMP_L, A
	CALL JUE_DUI_ZHI
	SZ CMP_H
	JMP DA_LING_WEN        
	MOV A, CMP_L
	SUB A, ZEROSTABLEVALUE        ;零点稳定是通过d值的比较
	SZ C
	JMP DA_LING_WEN
XIAO_LING_WEN:
	INC LOOP
	MOV A, LOOP
	SUB A, 0BH
	SZ ACC
	JMP TimeSearch
	JMP ToZeroFinish
TimeSearch:
	SZ CountTime
	RET
	;HALT
	JMP ToZeroError
ToZeroFinish:
	clr t0on
	SET FLAG5                  ;ZERO——CHECK 执行标志   不再执行
	SET FLAG7                  ;ZERO——VERIFY 执行标志  设立执行标志  
	
	MOV A, 0FFH
	MOV Count0Time, A
	mov a, autoofftime              ;零点稳定成功后,赋值 CountTime
	mov counttime, a                ;COUNTTIME 称重带机时间
     								;并且 进行
	CALL CALCULATE            		;当前零点和标定的零点比较
	SZ DIV_S2	                    ;其范围为 ToZeroRange
	JMP ToZeroError                 ;超过归零范围
	MOV A, DIV_S1
	SUB A,  ToZeroRang            ;  ToZeroValue  为称重值
	SZ	C
	JMP  ToZeroError

	MOV A, AVEH                    ;归零成功,当前秤台上的物重在归零范围内
	MOV ZERO_H, A                  ;刷新零点
	MOV A, AVEL
	MOV ZERO_L, A
	RET                            
DA_LING_WEN:
	CLR LOOP
	MOV A, D_WEIGHTH             ;刷新d值
	MOV D_WEIGHT0H, A
	MOV A, D_WEIGHTL
	MOV D_WEIGHT0L, A
	JMP TimeSearch
ToZeroError:
	clr t0on
	MOV A, 0AH
	MOV BCD_DATA4, A
	MOV BCD_DATA3, A
	MOV BCD_DATA2, A
	MOV BCD_DATA1, A
	CALL DISPLAY
	mov a, 0FFh
	mov CountTime, a

CHECK1:
	clr wdt
	CALL SHORT_DELAY
	DEC CountTime
	SZ CountTime
	JMP CHECK1
   ;发关机命令
	SET WDTOSC0
	CLR WDTOSC1
	clr pb1
	
	RET

	
;**********************************************************************
;计时器TIMER0中断
IntTimer0:
	MOV ACC_RAM, A
	MOV A, STATUS
	MOV STATUS_RAM, A

	SZ Count0Time
	JMP IN0
	DEC CountTime
	MOV A, 0FFH
	MOV Count0Time, A
IN0:
	DEC	Count0Time
	
	MOV A, STATUS_RAM
	MOV STATUS, A
	MOV A, ACC_RAM
	RETI
;**********************************************************************
;按键扫描
KEY PROC
	SZ PA.2
	JMP KK0
	MOV A, 01H
	MOV KEY_RAM1, A
	JMP KK
KK0:
	SZ PA.3
	JMP KK1
	MOV A, 02H
	MOV KEY_RAM1, A
	JMP KK
KK1:
	SZ pb3
	JMP KK2
	MOV A, 04H
	MOV KEY_RAM1, A
	JMP KK
KK2:
	sz flag6
	jmp kk10
	CLR KEY_RAM1
	CLR KEY_RAM2
	CLR FLAG0
	clr sysflag
	RET
KK:
	MOV A, KEY_RAM1
	SUB A, KEY_RAM2
	SZ ACC
	JMP KK3                      ;第一次扫描到
	SZ FLAG0
	jmp kk4                       ;第N次扫描到
	SET FLAG0                   ;第二次扫描到
	MOV A, KEY_RAM2
	SUB A, 01H
	SZ ACC
	JMP KK5
	RL CAL_FLAG					;CALL BIAO_DING
	ret
KK5:
	MOV A, KEY_RAM2
	SUB A, 02H
	SZ ACC
	JMP KK6               
	SZ FLAG4                       ;单位转换标志
	JMP KK7
	SET FLAG4
	ret
KK7:
	CLR FLAG4
	RET
KK6:
	MOV A, KEY_RAM2
	SUB A, 04H
	SZ ACC
	JMP KK8

	set flag6
	inc sysflag
	mov a,sysflag
	sub a, 50
	sz acc
	ret
	SET WDTOSC0                  ;关闭看门狗, 否则复位重起机
	CLR WDTOSC1
	clr pb1                         ;可发关机命令
kk9:
	sz 	pb3                     ;去皮键已松开, 去皮
	jmp kk10
	ret
kk10:
	clr flag6
	MOV A, AVEH                    ;去皮
	MOV ZERO_H, A                  ;刷新零点
	MOV A, AVEL
	MOV ZERO_L, A

	MOV A, AutoOffTime             ;从新计时
	MOV CountTime, A
	MOV A, 0FFH
	MOV Count0Time, A
	ret           
KK3:
	MOV A, KEY_RAM1        ;第一次扫描到
	MOV KEY_RAM2, A
	RET
kk4: 
    mov a, key_ram1                		;第N次扫描到
	sub a, 04h
	sz acc
	ret
	jmp kk6
KK8:
	CLR KEY_RAM1           ;误动作
	CLR KEY_RAM2
	CLR FLAG0
	clr sysflag
	RET
KEY ENDP
;************************************************************************

;*******************************************
;HT24LC02的写
;入口参数: HT24_ADDR1, HT24_RWDATA
WRITE PROC
	CLR PBC
	SET PB
	 NOP 
	nop
	nop
	nop
	nop         
	CLR SDA
	NOP
	 NOP 
	nop
	nop
	nop
	nop         
	CLR SCL

	MOV A, 0A0H
	MOV HT24_ADDR, A

	MOV A, 08H
	MOV HT24_LOOP, A
WR0:                        ;写通用地址 1010 000 0                  
	SZ HT24_ADDR.7
	JMP WR1
	CLR SDA
	JMP WR2
WR1:
	SET SDA
WR2:
	SET SCL
	NOP
	 NOP 
	nop
	nop
	nop
	nop         
	CLR SCL
	RL HT24_ADDR
	DEC HT24_LOOP
	SZ  HT24_LOOP
	JMP WR3
	JMP WR4
WR3:
	;RL HT24_ADDR
	JMP WR0
WR4:
	SET PBC.2
	SET SCL
WR44:
	SZ SDA
	JMP WR44                      
	CLR SCL
	CLR PBC.2
                         ;写具体地址 HT24_ADDR1
	MOV A, 08H
	MOV HT24_LOOP, A
WR5:
	SZ HT24_ADDR1.7
	JMP WR6
	CLR SDA
	JMP WR7
WR6:
	SET SDA
WR7:
	SET SCL
	NOP
	 NOP 
	nop
	nop
	nop
	nop         
	CLR SCL
	RL HT24_ADDR1
	DEC HT24_LOOP
	SZ HT24_LOOP
	JMP WR8
	JMP WR9
WR8:
	;RL HT24_ADDR1
	JMP WR5
WR9:
	SET PBC.2
	SET SCL
WR10:
	SZ SDA
	JMP WR10
	CLR SCL
	CLR PBC.2

	MOV A, 08H
	MOV HT24_LOOP, A
WR11:
	SZ HT24_RWDATA.7
	JMP WR12
	CLR SDA
	JMP WR13
WR12:
	SET SDA
WR13:
	SET SCL
	NOP
	 NOP 
	nop
	nop
	nop
	nop         
	CLR SCL
	RL HT24_RWDATA
	;SDZ HT24_LOOP
	DEC HT24_LOOP
	SZ HT24_LOOP
	JMP WR14
	JMP WR15
WR14:
	;RL HT24_RWDATA
	JMP WR11
WR15:
	SET PBC.2
	SET SCL
WR16:
	SZ SDA
	JMP WR16
	CLR SCL
	CLR PBC.2
	CLR SDA
	SET SCL
	NOP
	 NOP 
	nop
	nop
	nop
	nop         
	SET SDA
	RET
WRITE	ENDP
;**********************************
;HT24LC02的读
;入口参数: HT24_ADDR1   出口参数: HT24_RWDATA
READ PROC
	CLR PBC
	SET PB
	 NOP 
	nop
	nop
	nop
	nop         
	CLR SDA
	NOP
	 NOP 
	nop
	nop
	nop
	nop         
	CLR SCL

	MOV A, 0A0H
	MOV HT24_ADDR, A

	MOV A, 08H
	MOV HT24_LOOP, A

RE0:                      ;写通用地址 1010 000 0
	SZ HT24_ADDR.7
	JMP RE1
	CLR SDA
	JMP RE2
RE1:
	SET SDA
RE2:
	SET SCL
	NOP
	 NOP 
	nop
	nop
	nop
	nop         
	CLR SCL
	;SDZ HT24_LOOP
	DEC HT24_LOOP
	SZ HT24_LOOP
	JMP RE3
	JMP RE4
RE3:
	RL HT24_ADDR
	JMP RE0
RE4:
	SET PBC.2
	SET SCL
	NOP
RE5:
	SZ SDA
	JMP RE5
	CLR SCL
	CLR PBC.2

	MOV A,08H
	MOV HT24_LOOP, A
RE6:                            ;写具体地址 HT24_ADDR1
	SZ HT24_ADDR1.7
	JMP RE7
	CLR SDA
	JMP RE8
RE7:
	SET SDA
RE8:
	SET SCL
	NOP
	 NOP 
	nop
	nop
	nop
	nop         
	CLR SCL
	;SDZ HT24_LOOP
	DEC HT24_LOOP
	SZ HT24_LOOP
	JMP RE9
	JMP RE10
RE9:
	RL HT24_ADDR1
	JMP RE6
RE10:
	SET PBC.2
	SET SCL
	NOP
RE11:
	SZ SDA
	JMP RE11
	CLR SCL
	CLR PBC.2
	 NOP 
	nop
	nop
	nop
	nop         
	SET SDA 
	SET SCL
	NOP
	 NOP 
	nop
	nop
	nop
	nop         
	CLR SDA
	NOP
	 NOP 
	nop
	nop
	nop
	nop         
	CLR SCL

	MOV A, 0A1H
	MOV HT24_ADDR, A

	MOV A, 08H                      ;写读命令 1010 000 1
	MOV HT24_LOOP, A
	
RE12:
	SZ HT24_ADDR.7
	JMP RE13
	CLR SDA
	JMP RE14
RE13:
	SET SDA
RE14:
	SET SCL
	NOP
	 NOP 
	nop
	nop
	nop
	nop         
	CLR SCL
	DEC HT24_LOOP
	SZ HT24_LOOP
	JMP RE15

⌨️ 快捷键说明

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