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

📄 germany-1000-v1.asm

📁 PIC630单片机制作单相表
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;FUNCTION:  FORMAT THE SPECIAL FUNCTION REGIESTER			
;PARAMETER IN:  NONE
;PARAMETER OUT: NONE
;PRIVATE PARAMETER:NONE		
;**************************************************
;--------------------------------------------------
FORMAT_SFR:
		BTFSS		WORK_STATUS,FORMAT_SFR_FLAG
		GOTO		FORMAT_SFR_END
		BCF			WORK_STATUS,FORMAT_SFR_FLAG

		BCF			STATUS,RP0
		MOVLW		CMCON_DATA1
		ANDWF		CMCON,F
		MOVLW		CMCON_DATA2
		IORWF		CMCON,F
		
		MOVLW		T1CON_DATA		
		MOVWF		T1CON
		
		MOVLW		INTCON_DATA1
		ANDWF		INTCON,F
		MOVLW		INTCON_DATA2
		IORWF		INTCON,F
			
;____________________________________
		BSF			STATUS,RP0
		MOVLW		TRISA_DATA
		MOVWF		TRISA		
		MOVLW		TRISC_DATA
		MOVWF		TRISC
		MOVLW		WPUA_DATA
		MOVWF		WPUA
		MOVLW		IOCA_DATA
		MOVWF		IOCA
		MOVLW		VRCON_DATA
		MOVWF		VRCON
		MOVLW		PIE1_DATA
		MOVWF		PIE1
		MOVLW		OPTION_REG_DATA1
		ANDWF		OPTION_REG,F
		MOVLW		OPTION_REG_DATA2
		IORWF		OPTION_REG,F
 FORMAT_SFR_END:
		RETURN

;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		READ_DP
;FUNCTION:  READ THE DATA GROUP POINT IN EE
;PARAMETER IN:  NONE
;PARAMETER OUT: W
;PRIVATE PARAMETER:READ_DP_TEMP0
;**************************************************	
;--------------------------------------------------
READ_DP:
    MOVLW		DATA_POINT
		CALL		EE_READ
		MOVWF		READ_DP_TEMP0
		XORLW		0X00
		BTFSC		STATUS,Z
		GOTO		READ_DP_END
		MOVF		READ_DP_TEMP0,W
		XORLW		0X0A          ;0X0A
		BTFSC		STATUS,Z
		GOTO		READ_DP_END
		MOVF		READ_DP_TEMP0,W
		XORLW		0x14          ;0X14
		BTFSC		STATUS,Z
		GOTO		READ_DP_END
		CALL		DP_ERROR
 READ_DP_END:
		MOVF		READ_DP_TEMP0,W
		RETURN
;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		DP_CHANGE
;FUNCTION:  CHANGE THE DATA GROUP POINT IN EE
;PARAMETER IN:  NONE
;PARAMETER OUT: NONE
;PRIVATE PARAMETER:DP_CHANGE_TEMP0
;**************************************************	
;--------------------------------------------------		
DP_CHANGE:
		CALL		READ_DP
		ADDLW		0X0A
		MOVWF		DP_CHANGE_TEMP0
		XORLW		0X1E
		BTFSC		STATUS,Z		
		CLRF		DP_CHANGE_TEMP0
		BSF			STATUS,RP0
		MOVF		DP_CHANGE_TEMP0,W
		MOVWF		DP_BACKUP
 DP_CHANGE_LAB1:
		MOVWF		EEDATA
		MOVLW		DATA_POINT
		MOVWF		EEADR
		
		MOVF		RUN_CODE,W
		XORLW		0X3A
		BTFSS		STATUS,Z
		GOTO		DIEDIEDIE
		
		CALL		EE_WRITE
		XORLW		0X00
		BTFSS		STATUS,Z
		GOTO		DP_CHANGE_LAB1
		RETURN
		
;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		DP_ERROR
;FUNCTION:  DEAL WITH THE DATA GROUP POINT ERROR
;PARAMETER IN:  NONE
;PARAMETER OUT: NONE
;PRIVATE PARAMETER:DP_ERR_TEMP
;**************************************************	
;--------------------------------------------------	
DP_ERROR:
    MOVF		DP_BACKUP,W
		XORLW		0X00
		BTFSC		STATUS,Z
		GOTO		DP_ERR_LAB1
		MOVF		DP_BACKUP,W
		XORLW		0X0A         ;0X0A
		BTFSC		STATUS,Z
		GOTO		DP_ERR_LAB1
		MOVF		DP_BACKUP,W
		XORLW		0x14          ; 0X14
		BTFSC		STATUS,Z
		GOTO		DP_ERR_LAB1
		CLRF		DP_BACKUP
 DP_ERR_LAB1:
		MOVF		DP_BACKUP,W
		MOVWF		EEDATA								
		MOVLW		DATA_POINT
		MOVWF		EEADR		
		CALL		EE_WRITE
		XORLW		0X00
		BTFSS		STATUS,Z
		GOTO		DP_ERR_LAB1
		;CALL		EE_WRITE_ERR
		RETURN
		

;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		CHECKSUM
;FUNCTION:  CHECK THE DATA GROUP SUM IS RIGHT OR NOT 
;PARAMETER IN:  W(THE FIRST ADR OF DATA GROUP)
;PARAMETER OUT: NONE
;PRIVATE PARAMETER:
;**************************************************	
;--------------------------------------------------	
CHECKSUM:
		BSF		STATUS,RP0
		MOVWF		EEADR
		CALL		EE_READ
		MOVWF		SUM
		INCF		EEADR
		MOVF		EEADR,W	
		CALL		EE_READ
		ADDWF		SUM,F
		INCF		EEADR
		MOVF		EEADR,W		
		CALL		EE_READ
		ADDWF		SUM,F
		INCF		EEADR
		MOVF		EEADR,W		
		CALL		EE_READ
		XORWF		SUM,W
		BTFSC		STATUS,Z
		RETLW		0X00
		RETLW		0X01

;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		READIN
;FUNCTION:  READ THE DATA GROUP POINT BY W 
;PARAMETER IN:  W(THE FIRST ADR OF DATA GROUP)
;PARAMETER OUT: RESTORE1,RESTORE2,RESTORE3,RESTORE4
;PRIVATE PARAMETER:NONE
;**************************************************	
;--------------------------------------------------	
READIN:
		BSF		STATUS,RP0
		MOVWF		EEADR
		CALL		EE_READ
		MOVWF		RESTORE1
		INCF		EEADR
		MOVF		EEADR,W		
		CALL		EE_READ
		MOVWF		RESTORE2
		INCF		EEADR
		MOVF		EEADR,W		
		CALL		EE_READ
		MOVWF		RESTORE3
		INCF		EEADR
		MOVF		EEADR,W		
		CALL		EE_READ
		MOVWF		RESTORE4
		
		RETURN
		
;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		READIN
;FUNCTION:  READ THE DATA GROUP POINT BY W 
;PARAMETER IN:  W(THE FIRST ADR OF DATA GROUP)
;PARAMETER OUT: RESTORE1,RESTORE2,RESTORE3,RESTORE4
;PRIVATE PARAMETER:NONE
;**************************************************	
;--------------------------------------------------	
WRITEOUT:
		BSF		STATUS,RP0
 WRITEOUT_LAB1:
		MOVWF		EEADR
		MOVF		RESTORE1,W
		MOVWF		EEDATA
		CALL		EE_WRITE
		XORLW		0X00
		BTFSS		STATUS,Z
		GOTO		WRITEOUT_LAB1
		
		INCF		EEADR
		MOVF		EEADR,W	
 WRITEOUT_LAB2:
		MOVF		RESTORE2,W
		MOVWF		EEDATA
		CALL		EE_WRITE
		XORLW		0X00
		BTFSS		STATUS,Z
		GOTO		WRITEOUT_LAB2
		
		INCF		EEADR
		MOVF		EEADR,W	
 WRITEOUT_LAB3:
		MOVF		RESTORE3,W
		MOVWF		EEDATA
		CALL		EE_WRITE
		XORLW		0X00
		BTFSS		STATUS,Z
		GOTO		WRITEOUT_LAB3
		
		INCF		EEADR
		MOVF		EEADR,W	
 WRITEOUT_LAB4:
		MOVF		RESTORE4,W
		MOVWF		EEDATA
		CALL		EE_WRITE
		XORLW		0X00
		BTFSS		STATUS,Z
		GOTO		WRITEOUT_LAB4
		
		RETURN		
;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		CHECKSUM_3GROUP
;FUNCTION:  CHECK 3 DATA GROUPS SUM IS RIGHT OR NOT 
;PARAMETER IN:  NONE
;PARAMETER OUT: NONE
;PRIVATE PARAMETER: RESTORE1,RESTORE2,RESTORE3,
;**************************************************	
;--------------------------------------------------	
CHECKSUM_3GROUP:
		MOVLW		0X43
		MOVWF		RUN_CODE

		BTFSS		WORK_STATUS,CHECKSUM_3GROUP_FLAG
		GOTO		CHECKSUM_3GROUP_END
		BCF			WORK_STATUS,CHECKSUM_3GROUP_FLAG

		CALL		READ_DP
		ADDLW		DATA1
		CALL		CHECKSUM
		XORLW		0X00
		BTFSS		STATUS,Z
		GOTO		CHECKSUM1_ERROR		
			
		CALL		READ_DP
		ADDLW		0x00          ; 0X14
		CALL   	RECOVER_VERIFY_DP
		ADDLW		DATA1
			
		CALL		CHECKSUM
		XORLW		0X00
		BTFSS		STATUS,Z
		GOTO		CHECKSUM2_ERROR	
				
		CALL		READ_DP
		ADDLW		0X00       ;0X0A
		CALL   	RECOVER_VERIFY_DP
		ADDLW		DATA1		
		CALL		CHECKSUM
		XORLW		0X00
		BTFSS		STATUS,Z
		GOTO		CHECKSUM3_ERROR
		
		GOTO		CHECKSUM_3GROUP_END
		
 CHECKSUM1_ERROR:
		CALL		READ_DP
		ADDLW		0x00          ; 0X14
		CALL   		RECOVER_VERIFY_DP
		ADDLW		DATA1		
		CALL		CHECKSUM
		XORLW		0X00
		BTFSS		STATUS,Z
		GOTO		CHECKSUM12_ERROR
		
		CALL		READ_DP
		ADDLW		0x00          ; 0X14
		CALL   		RECOVER_VERIFY_DP	
		ADDLW		DATA1		
		CALL		READIN
				
		CALL		THREE_BYTES_INC
		
		MOVF		RUN_CODE,W
		XORLW		0X43
		BTFSS		STATUS,Z
		GOTO		DIEDIEDIE
		
		CALL		READ_DP
		CALL   		RECOVER_VERIFY_DP		
		ADDLW		DATA1
		CALL		WRITEOUT
		GOTO        CHECKSUM_3GROUP_END
 CHECKSUM12_ERROR:
		CALL		READ_DP
		ADDLW		0X00       ;0X0A
		CALL   		RECOVER_VERIFY_DP
		ADDLW		DATA1
		CALL		CHECKSUM
		XORLW		0X00
		BTFSS		STATUS,Z
		GOTO		CHECKSUM123_ERROR

		CALL		READ_DP
		ADDLW		0X00       ;0X0A
		CALL   		RECOVER_VERIFY_DP	
		ADDLW		DATA1
		CALL		READIN
		
		CALL		THREE_BYTES_INC
		
		CALL		READ_DP	
		ADDLW		0x00          ;0X14
		CALL   		RECOVER_VERIFY_DP	
		ADDLW		DATA1
		CALL		WRITEOUT
		GOTO        CHECKSUM_3GROUP_END
 CHECKSUM123_ERROR:		
		MOVLW		DATA1
		ADDLW		0X24
		CALL		CHECKSUM
		XORLW		0X00
		BTFSC		STATUS,Z
		GOTO		CKSUM123_ERROR_LAB1
		CLRF		RESTORE1
		CLRF		RESTORE2
		CLRF		RESTORE3
		CLRF		RESTORE4
		MOVLW		DATA1
		ADDLW		0X24
		CALL		WRITEOUT		
 CKSUM123_ERROR_LAB1:		
		MOVLW		DATA1
		ADDLW		0X24
		CALL		READIN
		
		CALL		READ_DP
		ADDLW		0X00       ;0X0A
		CALL   		RECOVER_VERIFY_DP		
		ADDLW		DATA1
		CALL		WRITEOUT
		
		MOVF		RUN_CODE,W
		XORLW		0X43
		BTFSS		STATUS,Z
		GOTO		DIEDIEDIE
		
		CLRF		DATA0
		CLRF		PLS_NUM	
		
		CLRF		EEDATA
		MOVLW		DATA0
		MOVWF		EEADR
		CALL		EE_WRITE
		
		MOVLW		PLS_NUM
		MOVWF		EEADR
		CALL		EE_WRITE

		GOTO        CHECKSUM_3GROUP_END
		
 CHECKSUM2_ERROR:
		CALL		READ_DP
		ADDLW		DATA1
					
		CALL		READIN
		
		CALL		READ_DP
		ADDLW		0x00          ; 0X14
		CALL   		RECOVER_VERIFY_DP
		ADDLW		DATA1
				
		CALL		WRITEOUT
		
		GOTO        CHECKSUM_3GROUP_END
		
 CHECKSUM3_ERROR:
		CALL		READ_DP
		ADDLW		0x00          ;0X14
		CALL   		RECOVER_VERIFY_DP
		ADDLW		DATA1
					
		CALL		READIN
		
		CALL		READ_DP
		ADDLW		0X00          ;0X0A
		CALL   		RECOVER_VERIFY_DP		
		ADDLW		DATA1
		CALL		WRITEOUT
 CHECKSUM_3GROUP_END:
		RETURN


;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		ERCOVER
;FUNCTION:  RECOVER A  DATA GROUPS A TIME (AND +1 TO RESTORE1-RESTORE4)
;PARAMETER IN:  NONE
;PARAMETER OUT: NONE
;PRIVATE PARAMETER: RESTORE1,RESTORE2,RESTORE3,
;**************************************************	
;--------------------------------------------------
RECOVER:
		MOVF		RESTORE1,W
		CALL		INC_JUDGE
		MOVWF		INT_W_TEMP		;
		MOVF		INC_TEMP0,W		;
		MOVWF		RESTORE1		;
		INCF		RESTORE4			;	
		MOVF		INT_W_TEMP,W	;
		XORLW		0X01			;
		BTFSS		STATUS,Z		;
		GOTO		RECOVER_OUT
		
		MOVF		RESTORE2,W
		CALL		INC_JUDGE
		MOVWF		INT_W_TEMP		;
		MOVF		INC_TEMP0,W		;
		MOVWF		RESTORE2		;
		MOVLW		0X9D
		ADDWF		RESTORE4,F
		MOVF		INT_W_TEMP,W	;
		XORLW		0X01			;
		BTFSS		STATUS,Z		;
		GOTO		RECOVER_OUT
		
	
		MOVF		RESTORE3,W
		CALL		INC_JUDGE
		MOVWF		INT_W_TEMP		;
		MOVF		INC_TEMP0,W		;
		MOVWF		RESTORE3		;
		MOVLW		0X9D
		ADDWF		RESTORE4,F
		MOVF		INT_W_TEMP,W	;
		XORLW		0X01			;
		BTFSS		STATUS,Z		;
		GOTO		RECOVER_OUT
		
		MOVLW		0X9C
		ADDWF		RESTORE4,F
 RECOVER_OUT:
		RETURN




;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		RECOVER_VERIFY_DP
;FUNCTION:  
;PARAMETER IN:  W
;PARAMETER OUT: W
;PRIVATE PARAMETER: NONE
;**************************************************	
;--------------------------------------------------
RECOVER_VERIFY_DP:
		MOVWF		RECOVER_V_TEMP0
		SUBLW		0X17
		BTFSS		STATUS,C
		GOTO		R_V_DP_LAB1
		MOVF		RECOVER_V_TEMP0,W
		GOTO		R_V_DP_OUT
 R_V_DP_LAB1:
		MOVF	  RECOVER_V_TEMP0,W
		ADDLW		0XE2
 R_V_DP_OUT:	
		RETURN
;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		DIEDIEDIE
;FUNCTION:  WAIT WATCHDOG TIME OUT
;PARAMETER IN:  NONE
;PARAMETER OUT: NONE
;PRIVATE PARAMETER: NONE
;**************************************************	
;--------------------------------------------------
DIEDIEDIE:
		MOVF		DATA0,W
		SUBLW		0X9A
		BTFSS		STATUS,C
		GOTO		DIEDIEDIE_LAB1
		
		BSF			STATUS,RP0		
		MOVF		DATA0,W
		MOVWF		EEDATA
		MOVLW		DATA0
		MOVWF		EEADR
		CALL		EE_WRITE
	
		MOVF		PLS_NUM,W
		MOVWF		EEDATA
		MOVLW		PLS_NUM
		MOVWF		EEADR
		CALL		EE_WRITE
		
 DIEDIEDIE_LAB1:		
		GOTO		DIEDIEDIE_LAB1




;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		EE_WRITE1
;FUNCTION:  WRITE A DATA TO EE AND VERIFY THE DATA
;PARAMETER IN: EEADR,EEDATA 
;PARAMETER OUT: W
;PRIVATE PARAMETER:NONE
;**************************************************	
;--------------------------------------------------
EE_WRITE1:
		BSF 		EECON1,WREN 
		;BCF 		INTCON,GIE 
		MOVLW 		0X55 
		MOVWF 		EECON2 
		MOVLW 		0XAA 
		MOVWF 		EECON2 
		BSF 		EECON1,WR 
		;BSF 		INTCON,GIE 
;___________________________________
  WRITE_OK1:
    BTFSC		EECON1,WR
		GOTO		WRITE_OK1
		
  VERIFY1:
    MOVF 		EEDATA,W 
		INCF		EEDATA
		BSF 		EECON1,RD 
		XORWF 		EEDATA,W
		BTFSS 		STATUS,Z 
		RETLW		0X01
  E_W_END1:
    RETLW		0X00

    END

⌨️ 快捷键说明

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