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

📄 germany-1000-v1.asm

📁 PIC630单片机制作单相表
💻 ASM
📖 第 1 页 / 共 3 页
字号:
DISPLAY:
		BCF			STATUS,RP0
		BCF			PORTC,CS
		NOP
		NOP
		NOP
		BCF			PORTC,WR
		BSF			PORTC,PDATA
		NOP
		NOP
		BSF			PORTC,WR
		MOVLW		DIS_BUFFER-0X01
		MOVWF		DIS_SEND_POINT
		MOVLW		0X0A
		MOVWF		SEND_DAT_CNT
 SEND_NEXT_BYTE:
		;MOVF		SEND_DAT_CNT,W
		;SUBLW		0X01
	;	BTFSC		STATUS,Z
	;	GOTO		DISPLAY_LAB1
    MOVF		SEND_DAT_CNT,W
		SUBLW		0X09
		BTFSC		STATUS,Z
		GOTO		DISPLAY_LAB1
		GOTO		DISPLAY_LAB2
 DISPLAY_LAB1:
		DECF		DIS_SEND_POINT		
		MOVLW		0X00
		GOTO		DISPLAY_LAB3
 DISPLAY_LAB2:
		MOVF		DIS_SEND_POINT,W
 DISPLAY_LAB3:
		CALL		SEND_A_BYTE
		INCF		DIS_SEND_POINT
		MOVF		DIS_SEND_POINT,W		
		DECFSZ		SEND_DAT_CNT
		GOTO		SEND_NEXT_BYTE
		BSF			PORTC,CS
		RETURN
;--------------------------------------------------
;SUB_SUB_PROGRAM
;NAME:		SEND_A_BYTE 
;FUNCTION:  SEND A BYTE IN DISPLAY BUFFER TO 1621
;PARAMETER IN:  W
;PARAMETER OUT: NONE
;PRIVATE PARAMETER:SEND_BIT_CNT,S_A_TEMP0		
;--------------------------------------------------
SEND_A_BYTE:
		MOVWF		FSR
		MOVF		INDF,W
 SEND_A_BYTE1:
		MOVWF		S_A_TEMP0
		MOVLW		0X08			;
		MOVWF		SEND_BIT_CNT	;
 S_A_LAB0:
		BCF			PORTC,WR
		BTFSS		S_A_TEMP0,0X07
		GOTO		S_A_LAB1
		BSF			PORTC,PDATA
		GOTO		S_A_LAB2
 S_A_LAB1:
		BCF			PORTC,PDATA
 S_A_LAB2:
		NOP
		BSF			PORTC,WR
		RLF			S_A_TEMP0
		DECFSZ		SEND_BIT_CNT	;
		GOTO		S_A_LAB0
		RETURN
;--------------------------------------------------

;--------------------------------------------------
;**************************************************
;TMR1 INTERRUPT SERVER PROGRAM
;NAME:		TMR1_INT
;FUNCTION:  TMR1 SERVER
;PARAMETER IN:  NONE
;PARAMETER OUT: PLS_VALID,KEY_5S_IN,KEY_05S_IN;
;PRIVATE PARAMETER:KEY_DONE,KEY_DONE_CHECK,CNT_5MS,	
;**************************************************	
;--------------------------------------------------		
TMR1_INT:
		BCF			STATUS,RP0
		BCF			PIR1,TMR1IF
		MOVLW		TMR1H_DATA		;//////
		MOVWF		TMR1H			;//////
		MOVLW		TMR1L_DATA		;//////
		MOVWF		TMR1L			;//////
 TMR1_LAB10:
        
		BTFSS		SYS_STATUS,TIMER_PLS_ON
		GOTO		TMR1_LAB20
       

		BTFSC		SYS_STATUS,PLS_VALID
		GOTO		TMR1_LAB20
               	
		INCF		TIMER_PLS
		MOVF		TIMER_PLS,W
		SUBLW		TIMER_PLS_CHECK
		BTFSC		STATUS,C
		GOTO		TMR1_LAB20
		BSF			SYS_STATUS,PLS_VALID
 TMR1_LAB20:
        
		INCF		CNT_5MS
		MOVF		CNT_5MS,W
		SUBLW		0X28
		BTFSC		STATUS,C
		GOTO		TMR1_OUT
		CLRF		CNT_5MS
		BSF			WORK_STATUS,DISP_SYS_FLAG
		BSF			WORK_STATUS,CHECKSUM_3GROUP_FLAG
			
		
		BSF			WORK_STATUS,FORMAT_SFR_FLAG
		BSF			WORK_STATUS,DISP_FORMAT_FLAG
		
 TMR1_OUT:
    RETURN		


;--------------------------------------------------
;**************************************************
;XINT INTERRUPT SERVER PROGRAM
;NAME:		XINT_INT
;FUNCTION:  XINT SERVER
;PARAMETER IN:  NONE
;PARAMETER OUT: NONE
;PRIVATE PARAMETER:INT_W_TEMP
;**************************************************	
;--------------------------------------------------
XINT_INT:
		BCF			STATUS,RP0	
		BCF			INTCON,INTF
;    BTFSC		PORTC,REFVP     ;REFVP =1  OUT   only measure positive energy
    BTFSS		PORTC,REFVP     ;REFVP =1  OUT   only measure positive energy
		GOTO		XINT_OUT
		BTFSS		PORTA,PLS	
		GOTO		XINT_LAB1
		BSF     PORTA,A_PLS     ; 发脉冲 ,高电平
		BSF			SYS_STATUS,TIMER_PLS_ON
    BSF			STATUS,RP0
		BCF			OPTION_REG,INTEDG
		CLRF		TIMER_PLS
		GOTO		XINT_OUT
 XINT_LAB1:
    BCF     PORTA,A_PLS  	  ;发脉冲,低电平
		BSF			STATUS,RP0
		BSF			OPTION_REG,INTEDG
        
 XINT_OUT:
		CLRF		TIMER_PLS
		RETURN

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

;--------------------------------------------------
;**************************************************
;CMP INTERRUPT SERVER PROGRAM
;NAME:		CM_INT
;FUNCTION:  COMPARATOR SERVER
;PARAMETER IN:  
;PARAMETER OUT: 
;PRIVATE PARAMETER:
;**************************************************	
;--------------------------------------------------
CM_INT:	
    BSF			STATUS,RP0
		MOVF		EEADR,W
		MOVWF		EEADR_STACK
		MOVF		EEDATA,W
		MOVWF		EEDATA_STACK

		BCF			STATUS,RP0
		MOVF		CMCON,W
		BCF			PIR1,CMIF
		BTFSS		CMCON,COUT
		GOTO		CM_OUT

		BTFSS		SYS_STATUS,PLS_INC		;IMPORTANT
		GOTO		WAIT_P_ON					;
		BCF			SYS_STATUS,PLS_INC		;
		
		BSF			STATUS,RP0
 CM_LAB1:
    MOVF		DATA0,W
		MOVWF		EEDATA
		MOVLW		DATA0
		MOVWF		EEADR
		CALL		EE_WRITE1
		XORLW		0X00
		BTFSS		STATUS,Z
		GOTO		CM_LAB1
	
 CM_LAB2:
    MOVF		PLS_NUM,W
		MOVWF		EEDATA
		MOVLW		PLS_NUM
		MOVWF		EEADR
		CALL		EE_WRITE1
		XORLW		0X00
		BTFSS		STATUS,Z
		GOTO		CM_LAB2
						
 WAIT_P_ON:
    BCF		  STATUS,RP0
		CLRWDT
		BTFSC		CMCON,COUT
		GOTO		WAIT_P_ON
		
 CM_OUT:	
    BSF			STATUS,RP0
		MOVF		EEADR_STACK,W
		MOVWF		EEADR
		MOVF		EEDATA_STACK,W
		MOVWF		EEDATA
		RETURN		

;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		CLEAN_JUDGE
;FUNCTION:  JUDGE THE CLEAN BUTTON DONE OR NOT
;PARAMETER IN:  NONE
;PARAMETER OUT: NONE
;PRIVATE PARAMETER:NONE
;**************************************************	
;--------------------------------------------------
CLEAN_JUDGE:
		MOVLW		0X15
		MOVWF		RUN_CODE
		BCF			STATUS,RP0
		BTFSC		PORTC,CLEAN
		GOTO		CLEAN_OUT
		MOVLW		0X0D
		CALL		DELAY
		BTFSC		PORTC,CLEAN
		GOTO		CLEAN_OUT
		MOVLW		0X0A
		CALL		DELAY
		BTFSC		PORTC,CLEAN
		GOTO		CLEAN_OUT		
		
		BSF			STATUS,RP0
			
		CLRF		EEDATA		
		MOVLW		DATA0				
		MOVWF		EEADR
		CALL		EE_WRITE
		
		CLRF		EEDATA		
		MOVLW		PLS_NUM
		MOVWF		EEADR
		CALL		EE_WRITE
		
		CLRWDT	
		MOVLW		0X03
		MOVWF		CLEAN3_CNT
		CLRF		DATA_POINT
 CLEAN_LAB1:		
		CLRF		EEDATA
		MOVF		DATA_POINT,W
		ADDLW		DATA1
		MOVWF		EEADR
		CALL		EE_WRITE	
		
		MOVF		DATA_POINT,W
		ADDLW		DATA2
		MOVWF		EEADR
		CALL		EE_WRITE	
		
		MOVF		DATA_POINT,W
		ADDLW		DATA3
		MOVWF		EEADR
		CALL		EE_WRITE
		
		MOVF		RUN_CODE,W
		XORLW		0X15
		BTFSS		STATUS,Z
		GOTO		DIEDIEDIE
		
		CLRF		DATA0
		CLRF		PLS_NUM
		
		MOVF		DATA_POINT,W
		ADDLW		SUM
		MOVWF		EEADR
		CALL		EE_WRITE
		
		MOVF		DATA_POINT,W
		ADDLW		0X0A
		MOVWF		DATA_POINT
		DECFSZ		CLEAN3_CNT
		
		GOTO		CLEAN_LAB1
				
		CLRF		DP_BACKUP
		CLRF		EEDATA
		MOVLW		DATA_POINT
		MOVWF		EEADR
		CALL		EE_WRITE
 CLEAN_OUT:
    RETURN


;--------------------------------------------------
;**************************************************
;SUB_SUB_PROGRAM
;NAME:		DELAY
;FUNCTION:  DELAY 1028*W US
;PARAMETER IN:  W
;PARAMETER OUT: NONE
;PRIVATE PARAMETER:DELAY_TIMER0,DELAY_TIMER1
;**************************************************	
;--------------------------------------------------
DELAY:	
    MOVWF		DELAY_TIMER1
 DELAY_LAB1:
		CLRF		DELAY_TIMER0
 DELAY_LAB2:
    NOP
		DECFSZ		DELAY_TIMER0,F
		GOTO		DELAY_LAB2
		DECFSZ		DELAY_TIMER1,F
		GOTO		DELAY_LAB1
		RETURN

;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		PLS_CNT
;FUNCTION:  COUNT THE PLS NUM
;PARAMETER IN:  NONE
;PARAMETER OUT: NONE
;PRIVATE PARAMETER:NONE
;**************************************************	
;--------------------------------------------------
PLS_CNT:
    BTFSS		SYS_STATUS,PLS_VALID	
		GOTO		PLS_CNT_OUT
		
		MOVLW		0XB7
		MOVWF		RUN_CODE
		
		BCF			SYS_STATUS,PLS_VALID
		BSF			SYS_STATUS,PLS_INC
		BCF			SYS_STATUS,TIMER_PLS_ON
      

		INCF		PLS_NUM
		MOVF		PLS_NUM,W
		SUBLW		0X63                ;100  0x63
		BTFSC		STATUS,C
		GOTO		PLS_CNT_OUT
		CLRF		PLS_NUM
		MOVF		DATA0,W
		CALL		INC_JUDGE
		MOVWF		INT_W_TEMP		;
		MOVF		INC_TEMP0,W		;
		MOVWF		DATA0			;
		MOVF		INT_W_TEMP,W	;
		XORLW		0X01			;
		BTFSS		STATUS,Z		;
		GOTO		PLS_CNT_OUT

		MOVF		RUN_CODE,W
		XORLW		0XB7
		BTFSS		STATUS,Z
		GOTO		DIEDIEDIE
		
		MOVLW		0X3A
		MOVWF		RUN_CODE

		CALL		READ_DP
		ADDLW		DATA1
		CALL		CHECKSUM
		XORLW		0X00
		BTFSS		STATUS,Z
		GOTO		PLS_CNT_OUT
				
		CALL		READ_DP
		ADDLW		DATA1
		CALL		READIN

		CALL		THREE_BYTES_INC
	
		MOVF		RESTORE1,W
		ANDLW		0X0F
		XORLW		0X05
		BTFSS		STATUS,Z
		GOTO		PLS_CNT_OUT1
		MOVLW		DATA1
		ADDLW		0X24
		CALL		WRITEOUT		
	
 PLS_CNT_OUT1:		
		CALL		DP_CHANGE
		
		MOVF		RUN_CODE,W
		XORLW		0X3A
		BTFSS		STATUS,Z
		GOTO		DIEDIEDIE
		
		CALL		READ_DP
		ADDLW		DATA1
		CALL		WRITEOUT		
 PLS_CNT_OUT:
		RETURN

;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		THREE_BYTES_INC
;FUNCTION:  
;PARAMETER IN:  RESTORE1..4
;PARAMETER OUT: RESTORE1..4
;PRIVATE PARAMETER:
;**************************************************	
;--------------------------------------------------

THREE_BYTES_INC:		
		MOVF		RESTORE1,W				
		CALL		INC_JUDGE
		MOVWF		INT_W_TEMP		;
		MOVF		INC_TEMP0,W		;
		MOVWF		RESTORE1		
			
		MOVF		SUM_TEMP,W
		ADDLW		0XA0
		ADDWF		RESTORE4,F
				
		MOVF		INT_W_TEMP,W	;
		XORLW		0X01			;
		BTFSS		STATUS,Z		;
		GOTO		THREE_BYTES_INC_OUT
 PLS_CNT_LAB3:		
		MOVF		RESTORE2,W				
		CALL		INC_JUDGE
		MOVWF		INT_W_TEMP		;
		MOVF		INC_TEMP0,W		;
		MOVWF		RESTORE2
	
		MOVF		SUM_TEMP,W
		ADDWF		RESTORE4,F

		MOVF		INT_W_TEMP,W	;
		XORLW		0X01			;
		BTFSS		STATUS,Z		;
		GOTO		THREE_BYTES_INC_OUT
 PLS_CNT_LAB4:		
				
		MOVF		RESTORE3,W				
		CALL		INC_JUDGE
		MOVWF		INT_W_TEMP		;
		MOVF		INC_TEMP0,W		;
		MOVWF		RESTORE3	
		
		MOVF		SUM_TEMP,W
		ADDWF		RESTORE4,F
		
		MOVF		INT_W_TEMP,W	;
		XORLW		0X01			;
		BTFSS		STATUS,Z		;
		GOTO		THREE_BYTES_INC_OUT
	
		
		MOVLW		0X60
		ADDWF		RESTORE4,F
 THREE_BYTES_INC_OUT:
		RETURN
	

;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		DISP_SYS 
;FUNCTION:  INTERGRATE THE CODING/DISPLAY SUB_PROGRAM TO FINISH DISPLAY WORKS
;				 BE CALLED EVERY 200MS
;PARAMETER IN:  NONE
;PARAMETER OUT: NONE
;PRIVATE PARAMETER:NONE		
;**************************************************
;--------------------------------------------------
DISP_SYS:
;    MOVLW 	0x12		
;    MOVWF		DATA0
;		MOVLW 	0x34		
;    MOVWF		DATA1
;	  MOVLW 	0x56	
;    MOVWF		DATA2
;	  MOVLW 	0x7	
;    MOVWF		DATA3
		
    MOVLW 	DATA3		
    MOVWF		CODE_S_POINT	;MUST BEFORE DIS_CODING

		MOVLW		DIS_BUFFER 	;MUST BEFORE DIS_CODING
		MOVWF		CODE_O_POINT	;MUST BEFORE DIS_CODING
		
		CALL		READ_DP
		ADDLW		DATA1
		CALL		EE_READ
		MOVWF		DATA1
		CALL		READ_DP
		ADDLW		DATA2
		CALL		EE_READ
		MOVWF		DATA2
		CALL		READ_DP
		ADDLW		DATA3
		CALL		EE_READ
	  MOVWF		DATA3	
	
		CALL		DISP_CODING		

		MOVLW		0X40			;MUST BEFORE DISPLAY
		MOVWF		DIS_BUFFER-0X01	;MUST BEFORE DISPLAY	
		
		BCF			STATUS,RP0	

		MOVF		DIS_BUFFER+0X06,W  ;+0X01
		IORLW		0X10
		MOVWF		DIS_BUFFER+0X06    ;+0X01	

		BCF		INTCON,GIE	
		CALL		DISPLAY
		BSF			INTCON,GIE
 DISP_SYS_END:
		RETURN


;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		FORMAT_SFR 

⌨️ 快捷键说明

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