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

📄 pda_166p64_v01.asm

📁 一种多自由度智能机器人的设计全部资料上传!
💻 ASM
📖 第 1 页 / 共 5 页
字号:

	MOVF	RX232_CNTH,W
	ANDLW	7		
	BNZ	W25X32_READ_PIC_ADDRESS3
	
			;BTG	LATD,7
	CALL	DELAY_64MS
	INCF	RX232_ADDL
	BTFSC	RX232_ADDL,3
	BRA	W25X32_READ_PIC_ADDRESS_END
	
W25X32_READ_PIC_ADDRESS3:
	CALL	WRITE_SPI_00
	;MOVF	SSP1BUF,W
	
	MOVWF	TXREG2
				
	MOVLW	0XFF
	ADDWF	RX232_CNTL
	ADDWFC	RX232_CNTH
	ADDWFC	RX232_CNTU

	MOVF	RX232_CNTL
	IORWF	RX232_CNTH,W
	IORWF	RX232_CNTU,W
	BZ	W25X32_READ_PIC_ADDRESS_END
W25X32_READ_PIC_ADDRESS4:
	RCALL	WAIT_TX232
		
	BTFSS	RCSTA2,OERR							
	BCF	RCSTA2,CREN
	BSF	RCSTA2,CREN
	
	BTFSS	PIR3,RC2IF
	BRA	W25X32_READ_PIC_ADDRESS2	
					
	MOVF	RCREG2,W
	XORLW	0XFF
	BNZ	W25X32_READ_PIC_ADDRESS2									
	CLRF	RX232_ADDL	;ERROR COUNT
	BRA	W25X32_READ_PIC_ADDRESS2
W25X32_READ_PIC_ADDRESS_END:	
	GOTO	CONNECT_PC
;******************************
;******************************
;******************************
;******************************
;******************************		
W25X32_BYTE_PROGRAM	;BYTE_PROGRAM

W25X32_PAGEPROGRAM:	;PAGEPROGRAM
	MOVLW	0X5F
	MOVWF	TXREG2
	CALL	W25X32_WP_DISABLE
W25X32_PAGEPROGRAM2:	;			
		
;********************
	MOVLW	HIGH	0X300
	MOVWF	FSR1H 
	MOVF	RX232_ADDL,W
	MOVWF	FSR1L
	
	MOVLW	HIGH	0X300
	MOVWF	FSR0H 
	MOVF	RX232_ADDL,W
	MOVWF	FSR0L
	
	BCF	W25X32_PAGEPROGRAM_FLAG
				
W25X32_PAGEPROGRAM_REC_ONE_BYTE:
	CLRF	TMR3L	
	CLRF	TMR3H
W25X32_PAGEPROGRAM_REC_ONE_BYTE2:	
	BTFSS	W25X32_PAGEPROGRAM_FLAG
	BRA	W25X32_PAGEPROGRAM_REC_ONE_BYTE4

	MOVF	POSTINC1,W
	MOVWF	SSP1BUF
		
	MOVLW	1
	ADDWF	RX232_ADDL
	MOVLW	0
	ADDWFC  RX232_ADDH
	ADDWFC  RX232_ADDU	
	
	
	MOVF	FSR1L,W
	BNZ	W25X32_PAGEPROGRAM_REC_ONE_BYTE4
	
	MOVLW	HIGH	0X300
	MOVWF	FSR1H 
	;MOVLW	LOW	0X300
	;MOVWF	FSR1L	
	BSF	F_CE
	BCF	W25X32_PAGEPROGRAM_FLAG
W25X32_PAGEPROGRAM_REC_ONE_BYTE4:
	BTFSC	TMR3H,4	;>64MS
	BRA	W25X32_PAGEPROGRAM_ERROR
	BTFSC	RCSTA2,OERR	;OVER FLOW
	BRA	W25X32_PAGEPROGRAM_ERROR	
	BTFSC	RCSTA2,FERR	;FRAME ERROR
	BRA	W25X32_PAGEPROGRAM_ERROR		
	
	BTFSS	PIR3,RC2IF
	BRA	W25X32_PAGEPROGRAM_REC_ONE_BYTE2	

			
	MOVF	RCREG2,W
	MOVWF	POSTINC0
	
	CLRF	TMR3L	
	CLRF	TMR3H	
	
	MOVLW	0XFF
	ADDWF	RX232_CNTL
	ADDWFC	RX232_CNTH
	ADDWFC	RX232_CNTU	

	MOVF	RX232_CNTL,W
	IORWF	RX232_CNTH,W
	IORWF	RX232_CNTU,W		
	BZ	W25X32_PAGEPROGRAM_LAST	

	
	MOVF	RX232_CNTH,W
	ANDLW	7		
	IORWF	RX232_CNTL,W
	MOVLW	0X55		
	BTFSC	STATUS,Z
	MOVWF	TXREG2	
			
	MOVF	FSR0L,W
	BNZ	W25X32_PAGEPROGRAM_REC_ONE_BYTE2
	
	MOVLW	HIGH	0X300
	MOVWF	FSR0H 	
		
	BSF	W25X32_PAGEPROGRAM_FLAG

				


	RCALL	W25X32_WR_ENABLE	
	MOVF	RX232_INST,W		
	CALL	WRITE_SPI
	MOVF	RX232_ADDU,W		
	CALL	WRITE_SPI
	MOVF	RX232_ADDH,W		
	CALL	WRITE_SPI
	MOVF	RX232_ADDL,W		
	CALL	WRITE_SPI
				
	BRA	W25X32_PAGEPROGRAM_REC_ONE_BYTE2
	

W25X32_PAGEPROGRAM_LAST:
	RCALL	W25X32_WR_ENABLE	
	MOVF	RX232_INST,W		
	CALL	WRITE_SPI
	MOVF	RX232_ADDU,W		
	CALL	WRITE_SPI
	MOVF	RX232_ADDH,W		
	CALL	WRITE_SPI
	MOVF	RX232_ADDL,W		
	CALL	WRITE_SPI

	
	MOVLW	HIGH	0X300
	MOVWF	FSR1H 
	MOVF	RX232_ADDL,W
	MOVWF	FSR1L

W25X32_PAGEPROGRAM_LAST2:
	MOVF	POSTINC1,W
	CALL	WRITE_SPI

	MOVF	FSR1L,W
	XORWF	FSR0L,W
	BNZ	W25X32_PAGEPROGRAM_LAST2
	BSF	F_CE
	
	CALL	DELAY_16MS
	RCALL	W25X32_WR_DISABLE		
	RESET
W25X32_PAGEPROGRAM_END:
	;GOTO	CHARGE_NOW
W25X32_PAGEPROGRAM_ERROR:
			;BCF	LATD,7
	RCALL	W25X32_WR_DISABLE
	BRA	CONNECT_PC
;------------------	
	

WRITE_24AA02_ALL:
	MOVLW	0X25
			
	MOVWF	TXREG2				
;********************
	MOVLW	HIGH	0X300
	MOVWF	FSR0H 
	MOVF	RX232_ADDL,W
	MOVWF	FSR0L	
	
	MOVF	RX232_CNTL,W
	MOVWF	RX232_CNTH
		
WRITE_24AA02_REC_ONE_BYTE:
	CLRF	TMR3L	
	CLRF	TMR3H
WRITE_24AA02_REC_ONE_BYTE2:	
	BTFSC	TMR3H,4	;>64MS
	BRA	WRITE_24AA02_ERROR
	BTFSC	RCSTA2,OERR	;OVER FLOW
	BRA	WRITE_24AA02_ERROR	
	BTFSC	RCSTA2,FERR	;FRAME ERROR
	BRA	WRITE_24AA02_ERROR		
	
	BTFSS	PIR3,RC2IF
	BRA	WRITE_24AA02_REC_ONE_BYTE2	
		
	MOVF	RCREG2,W
	MOVWF	POSTINC0
	
	CLRF	TMR3L	
	CLRF	TMR3H	
	
	DECFSZ	RX232_CNTL
	BRA	WRITE_24AA02_REC_ONE_BYTE2
WRITE_24AA02_LAST:
	MOVLW	HIGH	0X300
	MOVWF	FSR0H 
	MOVF	RX232_ADDL,W
	MOVWF	FSR0L		
	MOVWF	ADDR_24AA
WRITE_24AA02_LAST2:
			
	MOVF	RX232_CNTH,W
	BZ	WRITE_24AA02_LAST4

	ADDLW	256-8
	BC	WRITE_24AA02_LAST4

	MOVF	RX232_CNTH,W	
	CALL	WRITE_24AA02_PAGE
	BRA	WRITE_24AA02_END

WRITE_24AA02_LAST4:

			

	CALL	WRITE_24AA02_8B
	MOVLW	8
	ADDWF	ADDR_24AA
	MOVLW	256-8
	ADDWF	RX232_CNTH
	BNZ	WRITE_24AA02_LAST2
WRITE_24AA02_END:
WRITE_24AA02_ERROR:
	BRA	CONNECT_PC
;------------------	
	










;----------------
;----------------
W25X32_WP_DISABLE
	RCALL	W25X32_WR_ENABLE	


	MOVLW	0X01
	BSF	F_CE	
	CALL	WRITE_SPI
	MOVLW	0X80
	CALL	WRITE_SPI	
	BSF	F_CE	
	
	
	CALL	DELAY_16MS	
;---------------------	
W25X32_WR_ENABLE:			
	MOVLW	0X06	
W25X32_WR_ENABLE2:	
	BSF	F_WP
W25X32_WR_ENABLE4:	
	CALL	WRITE_SPI
	BSF	F_CE	
	RETURN	
;---------------------	
W25X32_WR_DISABLE:	
	RCALL	W25X32_WR_ENABLE
	
	MOVLW	0X01
	BSF	F_CE	
	CALL	WRITE_SPI
	MOVLW	0X9C
	CALL	WRITE_SPI	
	BSF	F_CE
	
	BCF	F_WP	
	
	
	GOTO	DELAY_16MS
;---------------
;---------------
W25X32_GET_STATUS:
	MOVLW	0X05
	BSF	F_CE	
	CALL	WRITE_SPI
	CALL	WRITE_SPI_00	
	BSF	F_CE
	RETURN
;---------------
W25X32_WAKE_UP:
	BSF	F_CE
	CLRWDT
	BSF	F_VCC
		
	RETURN



;*******************************
READ_24AA02_ALL:
	MOVLW	HIGH	0X300
	MOVWF	FSR0H 
	MOVLW	LOW	0X300
	MOVWF	FSR0L
		
	CLRF	ADDR_24AA
	MOVLW	0XFF
	CALL	READ_24AA02_16B1

	MOVLW	HIGH	0X300
	MOVWF	FSR0H 
	MOVLW	LOW	0X300
	MOVWF	FSR0L	

READ_24AA02_B:
	MOVF	POSTINC0,W
	RCALL	WAIT_TX232A

	MOVF	FSR0L ,W
	BNZ	READ_24AA02_B
	BRA	CONNECT_PC
	










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

WAIT_TX232A:
	MOVWF	TXREG2
;---------------		
WAIT_TX232:
	CLRWDT
	BTFSS	TXSTA2,TRMT
	BRA	WAIT_TX232
	RETURN
;---------------

;---------------	
;**********************************
;**********************************
;**********************************
;*****************************
;*****************************
;*****************************
;*****************************
;*****************************
;*****************************
PAGE_ONE0:
	BCF	VEHICLE_STATUS,7		;TRIGGER FLAG
	BCF	REC_TRIGGER_F
	CLRF	NOTICEFLAG
	BCF	MOTO_PIN
PAGE_ONE0_AA:	
	CALL	CPU_CLOCK_32M

	CALL	HIDE_TOPBAR
	CALL	DISPLAY_TOP_BAR
	CALL	DISPLAY_BATT2
	CLRF	KEY_BAK
	CALL	HIDE_KEYPAD
	
	MOVLW	1
PAGE_ONE0B:	
	MOVWF	PAGE_CNT		
PAGE_ONE:
	;CALL	CPU_CLOCK_32M
	CALL	DISPLAY_PAGE2

PAGE_ONE00:	
	MOVF	PAGE_CNT,W
	XORLW	0X3
	
	BNZ	PAGE_ONE1
	
	CALL	GET_TIME_UPID
	CALL	DISPLAY_LOGO2
	
	;CALL	GET_TONE_UPID	
	;CALL	DISPLAY_LOGO2
		
PAGE_ONE1:	
	CALL	READ_6KEY
	MOVF	KEY,W
	BZ	PAGE_ONE1A
	
	CALL	DISPLAY_KEY6_DOWN00	
	BRA	PAGE_ONE1B	
PAGE_ONE1A:
	
	MOVLW	BACKWORD_ID
	CALL	DISPLAY_LOGO2	
	MOVLW	FORWORD_ID
	CALL	DISPLAY_LOGO2
		
PAGE_ONE1B:
	BSF	TOUCHDOWN_FLAG
	CALL	PRESET_LIGHT_DELAY	
	CALL	DISPLAY_TIME		
;*****************************		
	CALL	CPU_CLOCK_8M
				
;**************************
PAGE_ONE2:
	CALL	DISPLAY_BATT
	CALL	DISPLAY_TIME00
	;BTFSS	SECOND2_FLAG	
	;BRA	PAGE_ONE3
	CALL	DO_2_SECOND	
	BTFSC	REC_TRIGGER_F
	GOTO	PAGE_ZERO
	
	BTFSC	REC_ONE_OK_FLAG
	CALL	DISPLAY_TOP_BAR	
	BCF	REC_ONE_OK_FLAG

;-----------------------------------??2????????
;------------------------------------

PAGE_ONE3:
;-----------DO TOUCH-----------------------		
	BTFSC	KEY_PRESS_FG
	BRA	PAGE_ONE_TOUCH	
				BTFSC	TOUCHDOWN_FLAG
				CALL	DISPLAY_KEY6_UP
	
	BCF	TOUCHDOWN_FLAG	;BRA	PAGE_ONE_NO_TOUCH	
	BRA	PAGE_ONE_TOUCH_BAK			
PAGE_ONE_TOUCH:
;---------------TOUCH
	BTFSC	TOUCHDOWN_FLAG
	BRA	PAGE_ONE_TOUCH_BAK
	
	CALL	READ_6KEY		
	MOVF	KEY,W
	BZ	PAGE_ONE_TOUCH_BAK

	MOVF	KEY,W
		
	MOVWF	KEY_BAK
	
	MOVF	PAGE_CNT,W
	MOVWF	PAGE_BAK
	
	CALL	DISPLAY_KEY6_DOWN
	
	CALL	PRESET_LIGHT_DELAY_LONG
	
		CALL	SPEECH_KEY
		
	MOVF	KEY,W
	XORLW	06
	BZ	PAGE_ONE_KEY6_DOWN	
	
	MOVF	KEY,W
	XORLW	05
	BZ	PAGE_ONE_KEY5_DOWN		


					;BRA	PAGE_ONE
		
	GOTO	PAGE_ONE_KEY_SUB				
;--------------------------			
PAGE_ONE_TOUCH_BAK:		
;**************************
;--------DO IKEY
	BTFSC	IKEY
	GOTO	IKEY_CLOSE;BRA	PAGE_ONE32	
;**************************	
;----DO BACKLIGHT**********	
	MOVF	LIGHT_CNT
	BTFSC	STATUS,Z	
PAGE_ONE32:	
		GOTO	BACKLIGHT_TIME_OUT
;***************************
PAGE_ONE_SLEEP:			
	;CALL	DELAY_16MS
	
;****************************
PAGE_ONE_TRIGGER:
	BRA	PAGE_ONE2

;*****************************	
PAGE_ONE_KEY5_DOWN		
	MOVF	PAGE_CNT,W
	ADDLW	0XFF
	BTFSC	STATUS,Z
	MOVLW	7
	MOVWF	PAGE_CNT
	
	XORLW	5
	BNZ	PAGE_ONE_KEY5_DOWN2
	MOVLW	4
	MOVWF	PAGE_CNT	
PAGE_ONE_KEY5_DOWN2:	
		
	BRA	PAGE_ONE	
	
PAGE_ONE_KEY6_DOWN
	MOVF	PAGE_CNT,W
	XORLW	7
	BZ	PAGE_ONE_KEY6_DOWN1
		
	MOVF	PAGE_CNT,W
	ADDLW	0X1
	ANDLW	0X7
	BTFSC	STATUS,Z
PAGE_ONE_KEY6_DOWN1:	
	MOVLW	1
	MOVWF	PAGE_CNT
	
	XORLW	5
	BNZ	PAGE_ONE_KEY6_DOWN2
	MOVLW	6
	MOVWF	PAGE_CNT			
PAGE_ONE_KEY6_DOWN2:				
	BRA	PAGE_ONE
	
;PAGE_ONE_KEY6_DOWN4:	
	;BRA	PAGE_ZERO		
;*****************************
;*****************************
;*****************************		
;*****************************		
;*****************************		
;*****************************		
;*****************************		
;*****************************		
;*****************************		
;*****************************		
;*****************************		
;*****************************		
;********************	
PAEG_TWO_1KEY:;PAGE21

PAGE_TWOONE0:

PAGE_TWOONE:
	CALL	HIDE_TOPBAR
	MOVLW	8
	CALL	DISPLAY_PAGE	
	
PAGE_TWOONE1:	
	CALL	READ_6KEY
	MOVF	KEY,W
	BZ	PAGE_TWOONE1A
	CALL	DISPLAY_KEY6_DOWN00
PAGE_TWOONE1A:
	
	CALL	PRESET_LIGHT_DELAY_LONG			
;*****************************						
PAGE_TWOONE1D:
	MOVF	PARKH,W
	MOVWF	SETHOUR
	MOVF	PARKM,W
	MOVWF	SETMINUTE
	
	
	CALL	DISPLAY_SET_TIME
;**************************
PAGE_TWOONE2:
	
	RCALL	DO_2_SECOND	
		BTFSC	REC_TRIGGER_F
	GOTO	PAGE_ZERO
;-----------------------------------??2????????
;------------------------------------
PAGE_TWOONE3:
;-----------DO TOUCH-----------------------	
	BTFSC	KEY_PRESS_FG
	BRA	PAGE_TWOONE_TOUCH	
	
	CALL	DISPLAY_KEY6_UP
	
	BCF	TOUCHDOWN_FLAG	;BRA	PAGE_TWOONE_NO_TOUCH	
	BRA	PAGE_TWOONE_TOUCH_BAK			
PAGE_TWOONE_TOUCH:
;---------------TOUCH
	BTFSC	TOUCHDOWN_FLAG
	BRA	PAGE_TWOONE_TOUCH_BAK
	
	CALL	READ_6KEY		
	MOVF	KEY,W
	BZ	PAGE_TWOONE_TOUCH_BAK

	MOVF	KEY,W
		
	MOVWF	KEY_BAK
	
	MOVF	PAGE_CNT,W
	MOVWF	PAGE_BAK
	
	CALL	DISPLAY_KEY6_DOWN
	
	CALL	PRESET_LIGHT_DELAY_LONG
	
	CALL	SPEECH_KEY
	
	GOTO	PAGE_TWOONE_KEY_SUB
		
	
;--------------------------					
;--------------------------			
PAGE_TWOONE_TOUCH_BAK:		
;**************************
;--------DO IKEY
	BTFSC	IKEY
	GOTO	IKEY_CLOSE;BRA	PAGE_TWOONE32	
;**************************	
;----DO BACKLIGHT**********	
	MOVF	LIGHT_CNT
	BTFSC	STATUS,Z	
PAGE_TWOONE32:	
		GOTO	BACKLIGHT_TIME_OUT
;***************************
PAGE_TWOONE_SLEEP:			
	;CALL	DELAY_64MS
;****************************
PAGE_TWOONE_TRIGGER:
	BRA	PAGE_TWOONE2

;*****************************	
PAEG_TWOONE_1KEY
	MOVF	PARKM,W
	ADDLW	0X10
	DAW
	MOVWF	PARKM
	ADDLW	0X100-0X59
	BTFSS	STATUS,C
	BRA	PAGE_TWOONE1D
	CLRF	PARKM
	INCF	PARKH,W
	DAW
	MOVWF	PARKH
	BRA	PAGE_TWOONE1D
PAEG_TWOONE_2KEY
	MOVF	PARKM,W
	ADDLW	0X90
	DAW
	MOVWF	PARKM
	ADDLW	0X100-0X59
	BTFSS	STATUS,C
	BRA	PAGE_TWOONE1D
	
	MOVLW	0XC0
	ADDWF	PARKM
	
	MOVLW	0X99
	ADDWF	PARKH,W
	DAW
	MOVWF	PARKH
	BRA	PAGE_TWOONE1D	
	
	
PAEG_TWOONE_3KEY
	MOVLW	1
	BRA	PAGE_TWOONE_KEY4_DOWN2	
PAEG_TWOONE_4KEY	
	MOVLW	2
PAGE_TWOONE_KEY4_DOWN2:	
	MOVWF	PARKH
	BRA	PAGE_TWOONE_KEY5_DOWN2		 
PAEG_TWOONE_5KEY
	CLRF	PARKH
PAGE_TWOONE_KEY5_DOWN2	
	CLRF	PARKM	
	BRA	PAGE_TWOONE1D		 
PAEG_TWOONE_6KEY		
	CALL	HIDE_TOPBAR
	CALL	DISPLAY_TOP_BAR
	
	CALL	DISPLAY_FORWORD_KEY
	
	MOVLW	0X2;PAGE_BAK,W					
	BRA	PAGE_ONE0B	
;*****************************	
;*****************************	
;*****************************	
;*****************************	
;*****************************	
PAEG_THREE_3KEY:


PAGE_THREETHREE0:

PAGE_THREETHREE:
	CALL	HIDE_TOPBAR
	MOVLW	9
	CALL	DISPLAY_PAGE	
	
PAGE_THREETHREE1:	
	CALL	READ_6KEY
	MOVF	KEY,W
	BZ	PAGE_THREETHREE1A
	CALL	DISPLAY_KEY6_DOWN00
PAGE_THREETHREE1A:
	
	CALL	PRESET_LIGHT_DELAY_LONG			
;*****************************						

PAGE_THREETHREE1D:
	MOVLW	44
	
	MOVWF	DISPLAY_D0
	MOVWF	DISPLAY_D1
	MOVWF	DISPLAY_D2
	MOVWF	DISPLAY_D3
	MOVWF	DISPLAY_D4
	MOVWF	DISPLAY_D5
		
	
	BTFSS	VIBR_FLAG
	BRA	PAGE_THREETHREE_VIBR_OFF
	
	MOVLW	'V'+10-'A'
	MOVWF	DISPLAY_D1
	
	MOVLW	'I'+10-'A'
	MOVWF	DISPLAY_D2
PAGE_THREETHREE_VIBR_OFF:	
	
	BTFSS	MELODY_FLAG
	BRA	PAGE_THREETHREE_MELODY_OFF
	
	MOVLW	'M'+10-'A'
	MOVWF	DISPLAY_D4
	
	MOVLW	'E'+10-'A'
	MOVWF	DISPLAY_D5
PAGE_THREETHREE_MELODY_OFF:	
	
	CALL	DISPLAY_TOP_6BIT

⌨️ 快捷键说明

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