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

📄 shibiema.asm

📁 智能识别系统程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:







;***************************************	
	
;*****************程序DOUBLE带定时器,综合PIC16C74***********************	
;==========================================================================
;
;       Register Definitions,double//new
;
;==========================================================================

W                            EQU     H'0000'
F                            EQU     H'0001'

;----- Register Files------------------------------------------------------
SCL				EQU  	4
SDA				EQU		3
Z				EQU		.2		
TMR0			EQU		1H
PCL				EQU		2H
STATUS 	    	EQU		3H
FSR				EQU		4H
RA				EQU		5H
RP0				EQU		5H
RB				EQU		06H
RC				EQU		07H
RD				EQU		08H
RE				EQU		09H
ADCON0			EQU		1FH
ADCON1			EQU		9FH
ADRES			EQU		1EH
INTCON			EQU		0BH
TRISA	        EQU		85H
TRISB			EQU		86H
TRISC			EQU		87H
TRISD			EQU		88H
TRISE			EQU		89H
OPTION_REG		EQU		81H
TOIF			EQU		.2
TOIE			EQU		.5
GIE				EQU		.7
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	
BIT				EQU		20H
BUF1			EQU		21H
BUF2			EQU		22H
BUF				EQU		23H
ZUF				EQU		24H
CNT1			EQU		25H
CNT2			EQU		26H
R0				EQU		27H
R1				EQU		28H
COUNT8			EQU		29H
TEMP			EQU		2AH
BIJIAO			EQU		2BH
MUF				EQU		2CH
SIJI			EQU		2DH
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	
H_B				EQU		30H
L_B				EQU		31H
CHUH			EQU		32H
CHUL			EQU		33H
SHANGH			EQU		34H
SHANGL			EQU		35H
YUH				EQU		36H
YUL				EQU		37H
P1H				EQU		38H
P1L				EQU		39H		

NUMBER			EQU		3AH		;一次操作的字节数。
TXBUF			EQU		3BH		;发送数据缓冲器
RXBUF			EQU		3CH		;接受数据缓冲器
CNT				EQU		3DH		;循环次数记数器
FLAG			EQU		3EH
ADDR			EQU		3FH		; 24C01首地址

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

BUFFER1			EQU		40H		; 40H~43H,	共4个空白区
MINUTE_BUF		EQU		44H		; 44H~47H,	共6个空白区
SHIJIAN			EQU		45H
YANSHI			EQU		46H
ADCNT			EQU		47H
LAG_FA			EQU		48H
;~~~~~~~
TIAN			EQU		49H		; 天数寄存器
HOUR			EQU		4AH		; 小时寄存器,
MINUTE			EQU		4BH
SECOND			EQU		4CH
MS50			EQU		4DH
MS				EQU		4EH	
;4FH不要用>>>>><<<<<EQU	4FH
LAG_KAIGUAN		EQU		50H
;~~~~~~~
TIAN_BUF		EQU		51H
HOUR_BUF		EQU		52H
W_TEMP			EQU		53H
STATUS_TEMP		EQU		54H
FSR_TEMP		EQU		55H
BUF_B			EQU		56H
ZUF_B			EQU		57H
LAG				EQU		58H
DAT1			EQU		59H
FBIAO			EQU		5AH
JISU			EQU		5BH
FANGYA			EQU		5CH
CASE1			EQU		5DH
CASE2			EQU		5EH
SHIBUF			EQU		5FH


;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WENBUF			EQU		60H
CHUNG			EQU		61H
BMAX			EQU		62H
BMIN			EQU		63H
BMAX_B			EQU		64H
BMIN_B			EQU		65H
SZDF			EQU		66H
TWEN_F			EQU		67H
LAG2			EQU		68H
SHIBUF2			EQU		69H
FLAG_PENWU		EQU		6AH
T1_F			EQU		6BH
T2_F			EQU		6CH
VALUE			EQU		6DH
BUF3			EQU		6EH
BUF4			EQU		6FH

SHIBIEMA		EQU		0A2H


;==========================================================================
;
;       Configuration Bits
;
;==========================================================================

_BODEN_ON                    EQU     H'3FFF'
_BODEN_OFF                   EQU     H'3FBF'
_CP_ALL                      EQU     H'3FEF'
_CP_OFF                      EQU     H'3FFF'
_PWRTE_OFF                   EQU     H'3FFF'
_PWRTE_ON                    EQU     H'3FF7'
_WDT_ON                      EQU     H'3FFF'
_WDT_OFF                     EQU     H'3FFB'
_LP_OSC                      EQU     H'3FFC'
_XT_OSC                      EQU     H'3FFD'
_HS_OSC                      EQU     H'3FFE'
_RC_OSC                      EQU     H'3FFF'



__CONFIG   _CP_ALL & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _XT_OSC
;==========================================================================


;#DEFINE		YAC			RA,0
;#DEFINE		WENC		RA,1
;#DEFINE		SHIC2		RA,2	;???
;#DEFINE		SHIC		RA,3


#DEFINE		PENWU			RC,0
#DEFINE		FA1				RC,1
#DEFINE		FA2				RC,2
#DEFINE		LED				RC,3
#DEFINE		POWER_LED		RC,4
#DEFINE		SZLED			RC,5
#DEFINE		T2LED			RC,6
#DEFINE		T1LED			RC,7

#DEFINE		AB				RD,0
#DEFINE		POLICE			RD,1
#DEFINE		SHANGXIA1CLK	RD,2
;#DEFINE	SDA				RD,3
;#DEFINE	SCK				RD,4
;#DEFINE	SHANGXIA1CLK	RD,5
;#DEFINE	SHI1CLK	RD,6
;#DEFINE	SHUI_YALICLK	RD,7

#DEFINE		JIARE			RE,0
#DEFINE		SHUIWUI			RE,1
#DEFINE		SHI2CLK			RE,2
						
;*************************************

			ORG		0000H
			NOP
			NOP
			GOTO		START

;*************************************


			ORG		0004H
			MOVWF	W_TEMP
			MOVF	STATUS,W
			CLRF	STATUS
			MOVWF	STATUS_TEMP
			MOVF	FSR,W
			MOVWF	FSR_TEMP
		;~~~~~~~~~
		BCF		INTCON	,TOIF		;P199
		MOVLW	10H
		ADDWF	MS+1,F
		;~~~~~~~~~	
		MOVLW	0B0H
		ADDWF	MS,F
		MOVLW	3CH
		SKPNC
		MOVLW	3DH
		ADDWF	MS+1,F
		SKPNC
		GOTO	_MSTIMEOUT

		MOVLW	50H
		ADDWF	MS,F
		MOVLW	0C3H
		SKPNC
		MOVLW	0C4H
		ADDWF	MS+1,F
		GOTO	_CLOCKEXIT
_MSTIMEOUT

		INCF	MS50,F
		MOVLW	.20
		XORWF	MS50,W
		SKPZ
		GOTO	_CLOCKEXIT
		CLRF	MS50
		INCF	SECOND,F
		MOVLW	.60
		XORWF	SECOND,W
		SKPZ
		GOTO	_CLOCKEXIT
		CLRF	SECOND
		INCF	MINUTE,F

		MOVLW	.60
		SUBWF	MINUTE,W
		SKPNZ
		GOTO    GOD1
		SKPNC
		GOTO    GOD1
		GOTO	_CLOCKEXIT
		

GOD1
		CLRF	MINUTE
		INCF	HOUR,F
		MOVLW	.24
		SUBWF	HOUR,W		
		BTFSC	STATUS,2
		GOTO	NA1
		BTFSC	STATUS,0
		GOTO	NA1
		GOTO	_CLOCKEXIT





		;SKPZ
		;GOTO	_CLOCKEXIT		;??????????????????????有的地方丢了.
NA1
		CLRF	HOUR
		INCF	TIAN,F

		
		;~~~~~~~~~
_CLOCKEXIT	
INT_EXIT
			CLRF	STATUS
			MOVF	FSR_TEMP,W
			MOVWF	FSR
			MOVF	STATUS_TEMP,W
			MOVWF	STATUS
			SWAPF	W_TEMP,F	;ZHIS TWO DO NOT DICHANGE STATUS !!
			SWAPF	W_TEMP,W

		
			RETFIE

;****************************************		
	
	
TABLE		
		ADDWF		PCL,F
			
		RETLW		0FCH	;0
		
		RETLW		60H		;1
		
		RETLW		0DAH	;2
		
		RETLW		0F2H	;3
		
		RETLW		66H		;4
		
		RETLW		0B6H	;5
		
		RETLW		0BEH	;6
		
		RETLW		0E0H	;7
		
		RETLW		0FEH	;8
		
		RETLW		0F6H	;9
		
		RETLW		0FFH	;10

;****************************************




BCD						;BCD码转换模块

		
		
		BCF		STATUS,0
		MOVLW	08H
		MOVWF	COUNT8
		CLRF	R0
		CLRF	R1
		MOVF	MUF,W
		MOVWF	BUF2
LOOPBCD2
		RLF		BUF2
		RLF		R1
		RLF		R0
		DECFSZ	COUNT8
		GOTO	ADJDECZ2
		
		
		
;#################################

		
		MOVF	R1,W
		MOVWF	BUF1
		MOVWF	BUF2
		
		
		MOVLW	0F0H
		ANDWF	BUF1,1
		SWAPF	BUF1,W
		CALL	TABLE
		MOVWF	BUF1
		
		
		
		MOVLW	0FH
		ANDWF	BUF2,W
		
		CALL	TABLE
		MOVWF	BUF2
				
		RETLW	0
		
		
		
ADJDECZ2


		MOVLW	R1
		MOVWF	FSR
		CALL	ADJBCDZ2
		MOVLW	R0
		MOVWF	FSR
		CALL	ADJBCDZ2
		GOTO	LOOPBCD2
		
		
ADJBCDZ2

		MOVLW	3
		ADDWF	0,W
		MOVWF	TEMP
		BTFSC	TEMP,3
		MOVWF	0
		MOVLW	30H
		ADDWF	0,W
		MOVWF	TEMP
		BTFSC	TEMP,7
		MOVWF	0
		RETLW	0


;***************;***************;***************
		




;**************ANJIAN ZONG ZI**************************	
;	检测设置等按键子程序,一级子程序		
;***************ZI*************************
TESTKEY

		CALL	KEYSCAN
		COMF	VALUE,0
		BTFSC	STATUS,2
		RETURN
		CALL	DEL100MS
		CALL	KEYSCAN
		COMF	VALUE,0
		BTFSC	STATUS,2
		RETURN
		CALL	TRANSLATE

		movf	FSR,W
		xorlw	.5
		skpnz
		goto	SET1

		movf	FSR,W
		xorlw	.6
		skpnz
		goto	JIA1

		movf	FSR,W
		xorlw	.7
		skpnz
		goto	JIAN1

		movf	FSR,W
		xorlw	.8
		skpnz
		goto	SET2
		
		movf	FSR,W
		xorlw	.9
		skpnz
		goto	JIA2

		movf	FSR,W
		xorlw	.10
		skpnz
		goto	JIAN2
		
		return
;*************************************		






;****************ZI************************
;		调键并翻译子程序
;***************ZI*************************
JIAN_T		
		CALL	KEYSCAN
		COMF	VALUE,0
		BTFSC	STATUS,2
		GOTO	SUNMIN
		CALL	DEL100MS
		CALL	KEYSCAN
		COMF	VALUE,0
		BTFSC	STATUS,2
		GOTO	SUNMIN	
		CALL	TRANSLATE
		RETURN
SUNMIN
		CLRF	FSR;没有案件,把FSR CLEAR,以备调用程序用
		RETURN
;****************ZI************************
;		按键扫描子程序
;***************ZI*************************
KEYSCAN

		BSF		STATUS,5
		BCF		OPTION_REG,7

		MOVLW	0FH
		MOVWF	TRISB

		BCF		STATUS,5
		MOVLW	00H
		MOVWF	RB

		NOP
		NOP
		NOP
		NOP

		MOVF	RB,0
		ANDLW	0FH
		MOVWF	VALUE

		XORLW	0FH

		BTFSC	STATUS,2
		GOTO	NOKEY
		BSF		STATUS,5
		MOVLW	0F0H
		MOVWF	TRISB

		BCF		STATUS,5
		MOVF	VALUE,W
		MOVWF	RB
		NOP
		NOP
		NOP
		NOP	
		MOVF	RB,0
		ANDLW	0F0H
		IORWF	VALUE,1
		RETURN

NOKEY
		MOVLW	0FFH
		MOVWF	VALUE
		RETURN





;****************************************
		
SET1
		MOVLW	.1
		ADDWF	LAG
		BTFSC	LAG,0
		GOTO	SHAN1
		GOTO	SHAN2


;****************************************
;设置2
;****************************************
SET2
		MOVLW	.1
		ADDWF	LAG2
		BTFSC	LAG2,0
		GOTO	SHAN3
		GOTO	SHAN4

	
;***********************************
;		按键加1子程序
;***************ZI*************************
JIA1
		BTFSC	LAG,0
		GOTO	BUFJIA
		GOTO	ZUFJIA





ZUFJIA		
		MOVLW	.99
		XORWF	ZUF,W
		BTFSC	STATUS,2
		GOTO	CXY
		GOTO	JIXU

BUFJIA
		MOVLW	.99
		XORWF	BUF,W
		BTFSC	STATUS,2
		GOTO	CXY
		GOTO	JIXU
JIXU		
	
		BTFSS	LAG,0
		GOTO	ZUFINC
		
		INCF	BUF,1
		GOTO	CXY
		
		
ZUFINC

		INCF	ZUF,1
		
		
CXY
;________________________________
		CALL	DELAY200MS;/
		RETLW	0;/
;________________________________	
		
;***************ZI*************************
;		按键减1子程序
;***************ZI*************************

JIAN1		
		
		BTFSC	LAG,0
		GOTO	BUFJIAN

ZUFJIAN		
        MOVF	ZUF,1
		BTFSC	STATUS,2
		GOTO	G16	
		GOTO	JIXU2


BUFJIAN	
		MOVF	BUF,1
		BTFSC	STATUS,2
		GOTO	G16
		GOTO	JIXU2
JIXU2	
		
		BTFSS	LAG,0

		GOTO	ZUFDEC1
		DECF	BUF,1
		GOTO	G16	
		
		
		
ZUFDEC1	
		DECF	ZUF,1
		
		
		
G16		
;________________________________
		CALL	DELAY200MS;/
		RETLW	0
;_________________________________
		

;***********************************
;		按键加1子程序
;***************ZI*************************
JIA2
		BTFSC	LAG2,0
		GOTO	BUFJIA22
		GOTO	ZUFJIA22





ZUFJIA22	
		MOVLW	.99
		XORWF	BMIN,W
		BTFSC	STATUS,2
		GOTO	CXY22
		GOTO	JIXU20

BUFJIA22
		MOVLW	.99
		XORWF	BMAX,W
		BTFSC	STATUS,2
		GOTO	CXY22
		GOTO	JIXU20
JIXU20		
	
		BTFSS	LAG2,0
		GOTO	ZUFINC22
		
		INCF	BMAX,1
		GOTO	CXY22
		
		
ZUFINC22

		INCF	BMIN,1
		
		
CXY22
		;________________________________
		CALL	DELAY200MS;/
		RETLW	0
;_________________________________
	
;***************ZI*************************
;		按键减1子程序
;***************ZI*************************

JIAN2		
		
		BTFSC	LAG2,0
		GOTO	BUFJIAN22

ZUFJIAN22		
        MOVF	BMIN,1
		BTFSC	STATUS,2
		GOTO	G162	
		GOTO	JIXU22


BUFJIAN22	
		MOVF	BMAX,1
		BTFSC	STATUS,2
		GOTO	G162

JIXU22	
		
		BTFSS	LAG2,0

		GOTO	ZUFDEC22
		DECF	BMAX,1
		GOTO	G162	
		
		
		
ZUFDEC22	
		DECF	BMIN,1
		
		
		
G162		
		;________________________________
		CALL	DELAY200MS;/
		RETLW	0
;_________________________________

;*************************************	
			;MAX1,MIN1	CLK->D5	
;*************************************	
Z1
		MOVLW	.32		
		MOVWF	BIT
		BCF		STATUS,0
C1		NOP
		BCF	RD,5
		NOP
		NOP
		BTFSC	BUF2,7
		BSF	RD,0
		BTFSS	BUF2,7
		BCF	RD,0
		RLF	BUF3,1
		RLF	BUF4,1		;BUF3、BUF4,BUF1、BUF2
		RLF	BUF1,1		; 高	,   低  , 高   ,低
		RLF	BUF2,1
		BSF	RD,5
		NOP
		NOP
		DECFSZ	BIT,1
		GOTO	C1
		RETLW	0	
		
;****************************************		
		;MAX2,MIN2	CLK->D2	
;*************************************			
Z2
		MOVLW	.32	
		MOVWF	BIT
		BCF		STATUS,0
C2		NOP
		BCF	RD,2		;BUF3、BUF4,BUF1、BUF2
		NOP
		NOP
		BTFSC	BUF2,7
		BSF	RD,0
		BTFSS	BUF2,7
		BCF	RD,0
		RLF	BUF3,1
		RLF	BUF4,1		;BUF3、BUF4,BUF1、BUF2
		RLF	BUF1,1		; 高	,   低  , 高   ,低
		RLF	BUF2,1
		NOP
		BSF	RD,2
		NOP
		NOP
		DECFSZ	BIT,1
		GOTO	C2
		RETLW	0	
		



;*************************************	
		;SHI1	CLK-->D6	
;*************************************		

Z3SHI1
		MOVLW	.16
		MOVWF	BIT
		BCF		STATUS,0
C3		NOP

⌨️ 快捷键说明

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