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

📄 germany-1000-v1.asm

📁 PIC630单片机制作单相表
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;/********************single phase Germany LCD*******************
; Copyright (C) July,2007  R&D Institute of Reallin Co., Ltd.
; Module         : 主函数文件..
; File Name      : main.c
; Description    : 
; Author         : Reallin     
; Build Date     : 
; LCD            : JY-05436A   echo
; ------------------------------------------------------------------------------
; Modification History:
; <No.>       <version >         <time>        <author>     <contents> 
;  1、    Germany-1000-V1.00     2007-06-14     Reallin    德国单相液晶样表,停电显示5秒,JY05436 液晶(反射);
;***********************************************************     
		list      p=16f630   	          
		#include <p16f630.inc>    
;********************** ***********************
;HARDWARE PROPERTIES
;---------------------------------------------
		F	  	EQU		1
		W     EQU   0	
;---------------------------------------------
;	PORT C PINS DEFINE
		PDATA	EQU		0
		WR		EQU		1
		CS		EQU		2
		REFVP	EQU		4
		CLEAN	EQU		5		 
;---------------------------------------------
;	PORT A PINS DEFINE
		PLS		EQU		2
		A_PLS	EQU		5
;---------------------------------------------
;*********************************************
;SFR CONSTANT DEFINE
;---------------------------------------------
		TRISA_DATA		EQU		0X0E 
		TRISC_DATA		EQU		0X30
		WPUA_DATA		EQU		0X00
		IOCA_DATA		EQU		0X00
		CMCON_DATA		EQU		0X04
		CMCON_DATA1		EQU		0X44
		CMCON_DATA2		EQU		0X04
		VRCON_DATA		EQU		0X8E
		T1CON_DATA		EQU		0X01
		TMR1H_DATA		EQU		0XEC
		TMR1L_DATA		EQU		0X78		;5MS
		OPTION_REG_DATA	EQU		0XCD				;WATCHDOG TIME OUT AFTER 0.51 S
		OPTION_REG_DATA1	EQU		0XCD	;AND
		OPTION_REG_DATA2	EQU		0X8D	;OR
		INTCON_DATA			EQU		0X50
		INTCON_DATA1		EQU		0XE2
		INTCON_DATA2		EQU		0X50
		PIR1_DATA		EQU		0X00
		PIE1_DATA		EQU		0X09				;;;;;;;;;;;;
;_____________________________________________
		TIMER_PLS_CHECK EQU		0X04       ;有效脉冲
;---------------------------------------------
;*********************************************
;GPR VARIABLE DEFINE
;---------------------------------------------
;-----------SOME REG ABOUT SFR_STACK -----------------		
		W_STACK 		EQU		0X20
		PCLATH_STACK	EQU		0X21
		STATUS_STACK	EQU		0X22
		FSR_STACK		EQU		0X23
;-----------SOME REG ABOUT POWER -----------------
		PLS_NUM			EQU		0X40;(REG 40-44  MUST BE CONTINUE)
		DATA0			EQU		0X41
		DATA1			EQU		0X42;(42-45,4C-4F,56-59)
		DATA2			EQU		0X43
		DATA3			EQU		0X44
		SUM				EQU		0X45
		
		TIMER_PLS		EQU		0X24
		INC_TEMP0		EQU		0X2E
		INT_W_TEMP		EQU		0X3D
		DATA_POINT		EQU		0X49
		READ_DP_TEMP0	EQU		0X4A
		CLEAN3_CNT		EQU		0X4B
		DP_CHANGE_TEMP0 EQU		0X52
		DP_BACKUP		EQU		0X55
		
		EEADR_STACK		EQU		0X47
		EEDATA_STACK	EQU		0X48
		
		RESTORE1		EQU		0X4C
		RESTORE2		EQU		0X4D
		RESTORE3		EQU		0X4E
		RESTORE4		EQU		0X4F
	
		
		SUM_TEMP		EQU		0X57
		
		RECOVER_V_TEMP0	EQU		0X58
		
		RUN_CODE		EQU		0X59
;-----------SOME REG ABOUT KEY & TIMER1 ----------
		;TIMER_KEY_5S	EQU		0X38
	;	TIMER_KEY_05S	EQU		0X39
		TIMER_5MS		EQU		0X3A
		CNT_5MS			EQU		0X3B
	;	KEY_DELAY_CNT	EQU		0X3C
;_________________________________________________		
		DELAY_TIMER0	EQU		0X3E	
		DELAY_TIMER1	EQU		0X3F		
;-----------SOME REG ABOUT DISPLAY ---------------
		DIS_BUF_PRE		EQU		0X30;(MUST BE FORMATED)
		DIS_BUFFER		EQU		0X31;(0X31-0X37)	
		DIS_SEND_POINT	EQU		0X25
		FORMAT_CODE_NUM EQU		0X26
		D_C_TEMP0		EQU		0X27
		D_C_TEMP1		EQU		0X28
		CODE_S_POINT	EQU		0X29
		CODE_O_POINT	EQU		0X2A
		SEND_BIT_CNT	EQU		0X2B
		SEND_DAT_CNT	EQU		0X2D
		S_A_TEMP0		EQU		0X2C
;---------------------------------------------
 SYS_STATUS				EQU		0X2F 
	;	KEY_DONE_CHECK	EQU		H'0000'
		TIMER_PLS_ON	EQU		H'0001'
	;	KEY_05S_IN		EQU		H'0002'
	;	KEY_5S_IN		EQU		H'0003'
		TEST_STATUS		EQU		H'0004'
		PLS_VALID		EQU		H'0005'
		PLS_INC			EQU		H'0006';WILL BE SET AFTER PLS INC
	;	KEY_DONE		EQU		H'0007'	
;---------------------------------------------
 WORK_STATUS				EQU		0X56 
		CHECKSUM_3GROUP_FLAG 	EQU		H'0000'
		FORMAT_SFR_FLAG			EQU		H'0001'
		DISP_FORMAT_FLAG		EQU		H'0002'
		DISP_SYS_FLAG			EQU		H'0003'		
;---------------------------------------------
		
;---------------------------------------------
		ORG 	0X0000
		NOP
		NOP
		NOP
		GOTO	MAIN
;---------------------------------------------
		ORG		0X0004
		MOVWF 	W_STACK           
		MOVF	  STATUS,W                    
		MOVWF		STATUS_STACK          
		MOVF		FSR,W		  
		MOVWF		FSR_STACK	  			
		
;---------------------------------------------		
		BCF			STATUS,RP0
		BTFSC		PIR1,CMIF
		CALL		CM_INT
		BTFSC		PIR1,TMR1IF
		CALL		TMR1_INT
		BTFSC		INTCON,INTF
		CALL		XINT_INT
		
;______________________________________________     
		MOVF		FSR_STACK,W
		MOVWF		FSR
		MOVF		STATUS_STACK,W
		MOVWF		STATUS            
		SWAPF		W_STACK,F
		SWAPF		W_STACK,W         
;______________________________________________     		
		RETFIE
		
	
;--------------------------------------------------
;SUB_PROGRAM
;NAME:						DISP_FORMAT_TABLE 
;FUNCTION:  				GET A CODE TO FORMAT THE 1621 
;PARAMETER IN:  			W
;PARAMETER OUT: 			W
;PUER PRIVATE PARAMETER:	NONE
;ALL PARAMETER:				W
;CALLING SUB_PROGRAM:		
;CALLED BY:								
;--------------------------------------------------		
 DIS_FORMAT_TABLE:
		ADDWF		2,F
		NOP
		RETLW		0X08	;TONE OFF
		RETLW		0X29	;BISA1/3  4 COM
		RETLW		0X18	;256K on chip
		RETLW		0X05	;WDT DISABLE
		RETLW		0X80	;/IRQ DISABLE  *
		RETLW		0XE3	;NORMAL MODE   *
		RETLW		0X03	;LCD ON
		RETLW		0X01	;SYS ON
	
;--------------------------------------------------
;SUB_SUB_PROGRAM
;NAME:						DISP_CODING 
;FUNCTION:  				CODING THE DATA IN W TO DISPLAY CODE
;PARAMETER IN:  			W
;PARAMETER OUT: 			W
;PUER PRIVATE PARAMETER:	NONE
;ALL PARAMETER:				W
;CALLING SUB_PROGRAM:
;CALLED BY:	
;0xf5,0x60,0xb6,0xf2,0x63,0xd3,0xd7,0x70,0xf7,0xf3,				
;--------------------------------------------------
 CODING_TABLE:
		ADDWF		2,F
		RETLW		0XAF	;'0'
		RETLW		0X06	;'1'
		RETLW		0X6D	;'2'
		RETLW		0X4F	;'3'
		RETLW		0XC6	;'4'
		RETLW		0XCB	;'5'
		RETLW		0XEB	;'6'  
		RETLW		0X0E	;'7'
		RETLW		0XEF	;'8'
		RETLW		0XCF	;'9'
		RETLW		0XAF	;'0'
		RETLW		0XAF	;'0'
		RETLW		0XAF	;'0'
		RETLW		0XAF	;'0'
		RETLW		0XAF	;'0'
		RETLW		0XAF	;'0'

		
;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
;\										/
;/			MAIN  PROGRAM				\
;\										/
;/										\
;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/		
MAIN:	
;_____________________________________
		;BSF 		STATUS, RP0		;CALIBRATING THE OSCCAL
		;CALL 		0x03FF
		;MOVWF		OSCCAL
;_____________________________________
		MOVLW		0XC8
		CALL		DELAY
		CLRWDT
		
;FORMAT_SFR1:
		BCF			STATUS,RP0
		MOVLW		0XFF               
		MOVWF		PORTA
		MOVLW		0XFF
		MOVWF		PORTC
		MOVLW		CMCON_DATA
		MOVWF		CMCON
;____________________________________
		BSF			STATUS,RP0		
		MOVLW		OPTION_REG_DATA
		MOVWF		OPTION_REG

		BSF			WORK_STATUS,FORMAT_SFR_FLAG
		CALL		FORMAT_SFR
;____________________________________
		BCF			STATUS,RP0
 V_OK:	
    BTFSC		CMCON,COUT
		GOTO		V_OK
;____________________________________
;READ_FROM_EE:
		MOVLW		DATA0
		CALL		EE_READ
		MOVWF		DATA0
		MOVLW		PLS_NUM
		CALL		EE_READ
		MOVWF		PLS_NUM
		MOVLW		DATA_POINT
		CALL		EE_READ
		MOVWF		DP_BACKUP		
;____________________________________		
;FORMAT_GPR:
		CLRF		TIMER_PLS
	;	CLRF		TIMER_KEY_5S
	;	CLRF		TIMER_KEY_05S
		CLRF		CNT_5MS
		CLRF		SYS_STATUS				
		MOVLW		0X0C
		MOVWF		WORK_STATUS
;____________________________________
		CLRWDT
		MOVLW		0XC8
		CALL		DELAY
		CLRWDT		
;____________________________________						
	;	CALL		CLEAN_JUDGE
;____________________________________
		BCF			STATUS,RP0
		MOVLW		TMR1H_DATA		;//////
		MOVWF		TMR1H			;//////
		MOVLW		TMR1L_DATA		;//////
		MOVWF		TMR1L			;//////		
		MOVLW		PIR1_DATA
		MOVWF		PIR1
		MOVLW		INTCON_DATA
		MOVWF		INTCON
		BSF			INTCON,GIE
		
		CLRWDT

    BCF     PORTA,A_PLS           ;power on  LED light  2007-06
;***********display  all screen******************** 
		BSF			WORK_STATUS,DISP_FORMAT_FLAG
		CALL		DISP_FORMAT
		
		CLRWDT	
		CALL		INIT_LCD          ;init LCD  display  all number
		CLRWDT	
;*********delay 2s *********************
		MOVLW		0XC8
		CALL		DELAY
		CLRWDT	
		MOVLW		0XC8
		CALL		DELAY
		CLRWDT	
		MOVLW		0XC8
		CALL		DELAY
		CLRWDT	
		MOVLW		0XC8
		CALL		DELAY
		CLRWDT	
		MOVLW		0XC8
		CALL		DELAY
		CLRWDT	
		MOVLW		0XC8
		CALL		DELAY
		CLRWDT	
		MOVLW		0XC8
		CALL		DELAY
		CLRWDT	
		MOVLW		0XC8
		CALL		DELAY
		CLRWDT	
		MOVLW		0XC8
		CALL		DELAY
		CLRWDT	
		MOVLW		0XC8
		CALL		DELAY
		CLRWDT	
;***************************************************		
		CALL		DISP_FORMAT
		CALL		DISP_SYS

 AGAIN:	
    CLRWDT
		CALL		FORMAT_SFR
		CALL 		DISP_FORMAT	
		CALL		CHECKSUM_3GROUP		
		CALL		DISP_SYS
		CALL		PLS_CNT
		GOTO 		AGAIN
;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:		INIT_LCD
;FUNCTION:  display a black screen
;PARAMETER IN:  NONE
;PARAMETER OUT: NONE
;PRIVATE PARAMETER:NONE		
;**************************************************
;-------------------------------------------------
INIT_LCD:
    BCF			STATUS,RP0				
		MOVLW		0X40			
		MOVWF		DIS_BUFFER-0X01   ;DIS_BUFFER
		MOVLW		0XEF
		MOVWF		DIS_BUFFER       ;1  integer
		MOVLW		0XEF
		MOVWF		DIS_BUFFER+0X01  ;2
		MOVLW		0XEF
		MOVWF		DIS_BUFFER+0X02  ;3
		MOVLW		0XEF
		MOVWF		DIS_BUFFER+0X03  ;4
		MOVLW		0XEF
		MOVWF		DIS_BUFFER+0X04  ;5
		MOVLW		0XEF
		MOVWF		DIS_BUFFER+0X05  ;6
    MOVLW		0XFF
		MOVWF		DIS_BUFFER+0X06  ;7  decimal fraction
		MOVLW		0XE5
		MOVWF		DIS_BUFFER+0X07  ;8  unit


		MOVLW		DIS_BUFFER
		MOVWF		DIS_SEND_POINT
		
		BCF			INTCON,GIE	
		CALL		DISPLAY
		BSF			INTCON,GIE

		RETURN
		
;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:						INC_JUDGE
;FUNCTION:  				JUDGE A BCD CODE CREATE A C OR NOT
;PARAMETER IN:  			W
;PARAMETER OUT: 			W,INC_TEMP0,SUM_TEMP
;PUER PRIVATE PARAMETER:	NONE
;ALL PARAMETER:				W,INC_TEMP0,SUM_TEMP
;CALLING SUB_PROGRAM:		NONE
;CALLED BY:					PLS_CNT,THREE_BYTES_INC,RECOVER
;--------------------------------------------------	
;**************************************************	
;--------------------------------------------------
INC_JUDGE:
		CLRF		SUM_TEMP
		
		ADDLW		0X01
		MOVWF		INC_TEMP0
		ANDLW		0X0F
		SUBLW		0X09
		BTFSC		STATUS,C
		GOTO		INC_OUT1
				
		MOVF		SUM_TEMP,W
		ADDLW		0X67
		MOVWF		SUM_TEMP
		
		MOVF		INC_TEMP0,W
		ANDLW		0XF0
		ADDLW		0X10
		MOVWF		INC_TEMP0
		SUBLW		0X90
		BTFSC		STATUS,C
		GOTO		INC_OUT
		CLRF		INC_TEMP0
		RETLW		0X01
		
 INC_OUT1:
    MOVF		SUM_TEMP,W
		ADDLW		0X61
		MOVWF		SUM_TEMP
						
 INC_OUT:
    RETLW		0X00
		
;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:						DISP_FORMAT
;FUNCTION:  				FORMAT THE HT1621 DEVICE
;PARAMETER IN:  			NONE
;PARAMETER OUT: 			PORTC.WR, PORTC.PDATA, PORTC.CS
;PURE PRIVATE PARAMETER:	FORMAT_CODE_NUM
;ALL PARAMETER:				FORMAT_CODE_NUM, PORTC.WR, PORTC.PDATA, PORTC.CS
;CALLING SUB_PROGRAM:		DIS_FORMAT_TABLE,SEND_A_BYTE1
;CALLED BY:					MAIN_PROGRAM
;**************************************************	
;--------------------------------------------------
DISP_FORMAT:
		BTFSS		WORK_STATUS,DISP_FORMAT_FLAG
		GOTO		DISP_FORMAT_END
		BCF			WORK_STATUS,DISP_FORMAT_FLAG

		BCF			INTCON,GIE		
		BCF			STATUS,RP0
		BCF			PORTC,CS
		NOP	
		NOP
		NOP
		BCF			PORTC,WR
		BSF			PORTC,PDATA
		NOP
		NOP
		BSF			PORTC,WR
		NOP
		NOP
		NOP
		BCF			PORTC,WR
		BCF			PORTC,PDATA
		NOP
		NOP
		BSF			PORTC,WR
		NOP
		NOP
		NOP
		BCF			PORTC,WR
		BCF			PORTC,PDATA
		NOP
		NOP
		BSF			PORTC,WR
		MOVLW		0X08
		MOVWF		FORMAT_CODE_NUM		
 NEXT_CODE:
		MOVF		FORMAT_CODE_NUM,W
		CALL		DIS_FORMAT_TABLE
		CALL		SEND_A_BYTE1
		BCF			PORTC,WR
		BCF			PORTC,PDATA
		NOP
		NOP
		BSF			PORTC,WR
		DECFSZ		FORMAT_CODE_NUM
		GOTO		NEXT_CODE
		BSF			PORTC,CS
		
 DISP_FORMAT_END:
    BSF			INTCON,GIE
		RETURN

;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:						DISP_CODING 
;FUNCTION:  				CODING THE DATA IN CODE_S_POINT BUFFER TO CODE_O_POINT BUFFER
;PARAMETER IN:  			CODE_S_POINT,CODE_O_POINT
;PARAMETER OUT: 			THE ARRAY POINTED BY CODE_O_POINT
;PURE PRIVATE PARAMETER:	D_C_TEMP0,D_C_TEMP1
;ALL PARAMETER:				
;CALLING SUB_PROGRAM:		CODING_TABLE
;CALLED BY:					DISP_SYS	
;**************************************************	
;--------------------------------------------------
DISP_CODING:
	
 D_C_LAB1:
    MOVF		CODE_S_POINT,W     ; DATA3
		MOVWF		FSR
		MOVF		INDF,W
		MOVWF		D_C_TEMP0
		ANDLW		0X0F
		CALL		CODING_TABLE
		MOVWF		D_C_TEMP1
		MOVF		CODE_O_POINT,W
		MOVWF		FSR
		MOVF		D_C_TEMP1,W
		MOVWF		INDF
    DECF 		CODE_S_POINT,F
    INCF		CODE_O_POINT,F    ; DATA2
 D_C_LAB2:
    MOVF		CODE_S_POINT,W    ; DATA2
		MOVWF		FSR
		MOVF		INDF,W
		MOVWF		D_C_TEMP0
    SWAPF		D_C_TEMP0
    MOVF		D_C_TEMP0,W
		ANDLW		0X0F
		CALL		CODING_TABLE
		MOVWF		D_C_TEMP1
		
		MOVF		CODE_O_POINT,W
		MOVWF		FSR
		MOVF		D_C_TEMP1,W
		MOVWF		INDF
    INCF		CODE_O_POINT,F
		SWAPF		D_C_TEMP0
		MOVF		D_C_TEMP0,W
		ANDLW		0X0F
		CALL		CODING_TABLE
		MOVWF		D_C_TEMP1
		
		MOVF		CODE_O_POINT,W
		MOVWF		FSR
		MOVF		D_C_TEMP1,W
		MOVWF   INDF
		INCF 		CODE_O_POINT,F
		DECF 		CODE_S_POINT,F
		MOVF		CODE_O_POINT,W
		SUBLW		DIS_BUFFER+0X06  ;0X05
		BTFSC		STATUS,C
		GOTO 		D_C_LAB2
		RETURN

;--------------------------------------------------
;**************************************************
;SUB_PROGRAM
;NAME:						DISPLAY 
;FUNCTION:  				SEND THE DATA IN DISPLAY BUFFER TO 1621
;PARAMETER IN:  			NONE
;PARAMETER OUT: 			PORTC.WR, PORTC.PDATA, PORTC.CS
;PURE PRIVATE PARAMETER:	NONE	
;ALL PARAMETER:				
;CALLING SUB_PROGRAM:		
;CALLED BY:						
;**************************************************
;PURE PRIVATE PARAMETER:	
;ALL PARAMETER:				
;CALLING SUB_PROGRAM:		
;CALLED BY:					
;--------------------------------------------------

⌨️ 快捷键说明

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