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

📄 lcd.s43

📁 DESCRIPTION : 0.2S级三相电子式电能表 功能: (1)、LCD显示 (2)、内部通讯:通讯规约采用部颁规约(DL/T645-1997) (3)、红外通讯:通讯规约
💻 S43
📖 第 1 页 / 共 3 页
字号:
; =============================================================================
;  HANG ZHOU HSIANG CHENG ELECTRIC CO., LTD
;  FILE        : lcd.s43
;  VERSION     : 1.0
;  BEG DATE    : 2002/10/22
;  MOD DATE    : 2002/10/23
;  DESCRIPTION : 0.2S级三相电子式电能表
;
;  功能:
;     (1)、LCD显示
;     (2)、内部通讯:通讯规约采用部颁规约(DL/T645-1997)
;     (3)、红外通讯:通讯规约采用部颁规约(DL/T645-1997)
;     (4)、日历时钟:采用软时钟(TA或TB)
;     (5)、停电或全失压时:低功耗模式3
; =============================================================================
#include  "msp430x44x.h"
#include  "LCD.h"
#include  "I2C.S43"
#include  "LCD.MCR"

            ORG     1100h
START       mov.w   #0A00h,SP
            mov.w   #WDTPW+WDTHOLD,&WDTCTL
            mov.b   #0,IFG1
            mov.b   #0,IFG2
             
            bic.b   #XT2OFF,&FLL_CTL1
XT2LOOP     bic.b   #XT2OF,&FLL_CTL0            ; high frequency crystal is stable
            bit.b   #XT2OF,&FLL_CTL0            ;
            jnz     XT2LOOP
            mov.w   #0FFh,R4
XT2DELAY    dec.w   R4
            nop
            jnz     XT2DELAY
            bic.b   #OFIFG,&IFG1
            bis.b   #SELS+SELM_XT2,&FLL_CTL1
            ;-----------Initial------------------
            call    #Port_Initial
            call    #TimeA_Initial
            call    #LCD_Initial_ON
            call    #Uart1_Initial
;           call    #Uart0_Initial
            ;------------------------------------
             bis.w   	#GIE,SR                 ;开启中断
            ;------------------------------------
            jmp       MAINLOOP1

            ;call    #LowerPowerMode3
            call        #Adjust_Week
            ;----------I2C EEPROM  TEST!
            MOV     #500H,&SO
            MOV     #000H,&DE
            EEPsaves SO,DE,40H
            MOV     #00H,&SO
            CLR     R10
LOADEEP
            MOV         #550H,&DE
            EEPloads    SO,DE,40H
            ADD         #40H,&SO
            ADD         #40H,R10
            CMP         #8000H,R10
            JNE         LOADEEP
            MOV         #000H,&SO
            EEPloadsA   SO,Voltage_A,4H
            ;movedata    SO,Voltage_A,4H,xx
MAINLOOP1
            ;-----------
            call    #LCD_Display_ON
            call    #LCD_Initial_ON
            CALL    #LCD_Display_OFF
            CALL    #Delay_1s
            mov.w   #00h,Disp_Digital
            
MAINLOOP 
            CALL    #disp1
;            CALL    #LCD_Display_ON
;            INV.B    &P2OUT
;            call    #RECEIVE_CMD
            jmp     MAINLOOP



;****************************************************************************************************************
;           串行口通讯
;****************************************************************************************************************
;控制码:01 81 A1 C1
;       02 82 A2 C2
;       03 83 A3 C3
;       04 84    C4 
;       08 
;       0A 8A    C4
;       0C 8C
;       0F 8F
;       10 
;****************************************************************************************************************
RECEIVE_CMD
            bit.w   #rxdok0,&COMM_FLAG    ;Uart0
            jnz     RECEIVE_CMD_0
            bit.w   #rxdok1,&COMM_FLAG    ;Uart1
            jnz     RECEIVE_CMD_1
            ret
RECEIVE_CMD_0
            mov.w   #RXDBUF0,R13
            mov.w   #TXDBUF0,R14
            mov.w   #0CH,R15
            call    #moveii
            bic.w   #rxdok0,&COMM_FLAG
            bic.w   #headok0,&COMM_FLAG
            mov.w   #RXDBUF0,R4
            jmp     RECEIVE_CMD_01
;------------------------
;                   Uart1
;------------------------
RECEIVE_CMD_1
            mov.w   #RXDBUF1,R13
            mov.w   #TXDBUF1,R14
            mov.w   #0CH,R15
            call    #moveii
            bic.w   #rxdok1,&COMM_FLAG
            bic.w   #headok1,&COMM_FLAG
            mov.w   #RXDBUF1,R4
RECEIVE_CMD_11
            add.w   #8,R4                 
            mov.b   @R4,R5
            mov.b   R5,R6
            and.b   #0f0h,R6
            clrc
            rrc.b   R6
            rra.b   R6
            add.b   #04h,R6
            add.w   R6,PC
            ret
            nop
            br      #RECMOD1_0X
            br      #RECMOD1_1X
            br      #RECMOD1_2X
            br      #RECMOD1_3X
            br      #RECMOD1_4X
            br      #RECMOD1_5X
            br      #RECMOD1_6X
            br      #RECMOD1_7X
            br      #RECMOD1_8X
            br      #RECMOD1_9X 
            br      #RECMOD1_AX
            br      #RECMOD1_BX
            br      #RECMOD1_CX
            br      #RECMOD1_DX
            br      #RECMOD1_EX
            br      #RECMOD1_FX
                                                 
RECMOD1_1X
RECMOD1_2X			;非法标识码
RECMOD1_3X			;非法标识码
RECMOD1_4X			;非法标识码
RECMOD1_5X			;非法标识码
RECMOD1_6X			;非法标识码
RECMOD1_7X			;非法标识码
RECMOD1_9X			;非法标识码
RECMOD1_BX			;非法标识码
RECMOD1_DX			;非法标识码
RECMOD1_EX			;非法标识码
RECMOD1_FX			;非法标识码
            ret
;-------------------
;主站->从站:01h
RECMOD1_0X
            mov.b   R5,R6
            and.b   #0fh,R6
            rla.b   R6
            rla.b   R6
            add.w   R6,PC
            ret
            nop
            br      #RECMOD1_01
            br      #RECMOD1_02
            br      #RECMOD1_03
            br      #RECMOD1_04
            br      #RECMOD1_05
            br      #RECMOD1_06
            br      #RECMOD1_07
            br      #RECMOD1_08
            br      #RECMOD1_09
            br      #RECMOD1_0A
            br      #RECMOD1_0B
            br      #RECMOD1_0C
            br      #RECMOD1_0D
            br      #RECMOD1_0E
            br      #RECMOD1_0F
RECMOD1_01
            mov.w   #RXDBUF1,R4
            add.w   #0bh,R4           ;取 DI1
            mov.b   @R4,R5
            and.b   #0f0h,R5
            clrc
            rrc.b   R5
            rrc.b   R5
            rrc.b   R5
            add.w   R5,PC
            ret
            jmp     RECMOD1_01_1X
            jmp     RECMOD1_01_2X
            jmp     RECMOD1_01_3X
            jmp     RECMOD1_01_4X
            jmp     RECMOD1_01_5X
            jmp     RECMOD1_01_6X
            jmp     RECMOD1_01_7X
            jmp     RECMOD1_01_8X
            jmp     RECMOD1_01_9X
            jmp     RECMOD1_01_AX
            jmp     RECMOD1_01_BX
            jmp     RECMOD1_01_CX
            jmp     RECMOD1_01_DX
            jmp     RECMOD1_01_EX
            jmp     RECMOD1_01_FX
RECMOD1_01_1X			;非法标识码
RECMOD1_01_2X			;非法标识码
RECMOD1_01_3X			;非法标识码
RECMOD1_01_4X			;非法标识码
RECMOD1_01_5X			;非法标识码
RECMOD1_01_6X			;非法标识码
RECMOD1_01_7X			;非法标识码
RECMOD1_01_8X			;非法标识码
            mov.w   #RXDBUF1,R4
            add.w   #8,R4
            mov.b   0(R4),R5
            mov.b   #0c0h,R5
            mov.b   R5,0(R4)
            inc.w   R4
            mov.b   #1,0(R4)
            inc.w   R4
            mov.b   #1,0(R4)
            inc.w   R4
            mov.b   #1,0(R4)
            inc.w   R4
            mov.b   #16h,0(R4)
            mov.b   #0EH,&TXDLEN1
            call    #txd_set_cs1      ;设置CHECKSUM
            mov.b   #1,&TXDPTR1
	    bis.w   #txdbegin1,&COMM_FLAG
            mov.b   #068h,&U1TXBUF
            ret
RECMOD1_01_9X
            mov.w   #RXDBUF1,R4
            add.w   #0bh,R4           ;取 DI1
            mov.b   @R4,R5
            and.b   #0fh,R5
            clrc
            rla.b   R5
            add.w   #2,R5
            add.w   R5,PC
            ret
            jmp     RECMOD1_01_90
            jmp     RECMOD1_01_91
            jmp     RECMOD1_01_92
            jmp     RECMOD1_01_93
            jmp     RECMOD1_01_94
            jmp     RECMOD1_01_95
            jmp     RECMOD1_01_96
            jmp     RECMOD1_01_97
            jmp     RECMOD1_01_98
            jmp     RECMOD1_01_99
            jmp     RECMOD1_01_9A
            jmp     RECMOD1_01_9B
            jmp     RECMOD1_01_9C
            jmp     RECMOD1_01_9D
            jmp     RECMOD1_01_9E
            jmp     RECMOD1_01_9F
RECMOD1_01_90
            mov.w   #RXDBUF1,R4
            add.w   #0ah,R4		;取DI0
            mov.w   @R4,R5
            and.w   #0f0h,R5
            clrc
            rrc.b   R5
            rrc.b   R5
            add.w   R5,PC
            ret
            nop
 	    br      #RECMOD1_01_90_1X
 	    br      #RECMOD1_01_90_2X
 	    br      #RECMOD1_01_90_3X
 	    br      #RECMOD1_01_90_4X
 	    br      #RECMOD1_01_90_5X
 	    br      #RECMOD1_01_90_6X
 	    br      #RECMOD1_01_90_7X
 	    br      #RECMOD1_01_90_8X
 	    br      #RECMOD1_01_90_9X
 	    br      #RECMOD1_01_90_AX
 	    br      #RECMOD1_01_90_BX
 	    br      #RECMOD1_01_90_CX
 	    br      #RECMOD1_01_90_DX
 	    br      #RECMOD1_01_90_EX
 	    br      #RECMOD1_01_90_FX
            ret
RECMOD1_01_91

RECMOD1_01_92
RECMOD1_01_93
RECMOD1_01_94
RECMOD1_01_95
RECMOD1_01_96
RECMOD1_01_97
RECMOD1_01_98
RECMOD1_01_99
RECMOD1_01_9A
RECMOD1_01_9B
RECMOD1_01_9C
RECMOD1_01_9D
RECMOD1_01_9E
RECMOD1_01_9F
            ret

RECMOD1_01_AX
            ret
RECMOD1_01_BX
            ret
RECMOD1_01_CX
            ret
RECMOD1_01_DX
            ret
RECMOD1_01_EX
            ret
RECMOD1_01_FX
            ret
RECMOD1_01_90_1X
            mov.w   #RXDBUF1,R4
            add.w   #0ah,R4           ;取 DI0
            mov.b   @R4,R5
            and.b   #0fh,R5
            clrc
            rla.b   R5
            add.w   #2,R5
            add.w   R5,PC
            ret
            jmp	    RECMOD1_01_90_10
            jmp	    RECMOD1_01_90_11
            jmp	    RECMOD1_01_90_12
            jmp	    RECMOD1_01_90_13
            jmp	    RECMOD1_01_90_14
            jmp	    RECMOD1_01_90_15
            jmp	    RECMOD1_01_90_16
            jmp	    RECMOD1_01_90_17
            jmp	    RECMOD1_01_90_18
            jmp	    RECMOD1_01_90_19
            jmp	    RECMOD1_01_90_1A
            jmp	    RECMOD1_01_90_1B
            jmp	    RECMOD1_01_90_1C
            jmp	    RECMOD1_01_90_1D
            jmp	    RECMOD1_01_90_1E
            jmp	    RECMOD1_01_90_1F
RECMOD1_01_90_10
            mov.b   #90h,DI1
            mov.b   #10h,DI0
	    ret
RECMOD1_01_90_11
RECMOD1_01_90_12
RECMOD1_01_90_13
RECMOD1_01_90_14
	    ret
RECMOD1_01_90_15			;非法标识码
RECMOD1_01_90_16			;非法标识码
RECMOD1_01_90_17			;非法标识码
RECMOD1_01_90_18			;非法标识码
RECMOD1_01_90_19			;非法标识码
RECMOD1_01_90_1A			;非法标识码
RECMOD1_01_90_1B			;非法标识码
RECMOD1_01_90_1C			;非法标识码
RECMOD1_01_90_1D			;非法标识码
RECMOD1_01_90_1E			;非法标识码
RECMOD1_01_90_1F			;非法标识码
            mov.w   #RXDBUF1,R4
            add.w   #8,R4
            mov.b   0(R4),R5
            mov.b   #0c0h,R5
            mov.b   R5,0(R4)
            inc.w   R4
            mov.b   #1,0(R4)
            inc.w   R4
            mov.b   #1,0(R4)
            inc.w   R4
            mov.b   #1,0(R4)
            inc.w   R4
            mov.b   #16h,0(R4)
            mov.b   #0EH,&TXDLEN1
            call    #txd_set_cs1      ;设置CHECKSUM
            mov.b   #1,&TXDPTR1
	    bis.w   #txdbegin1,&COMM_FLAG
            mov.b   #068h,&U1TXBUF
            ret


RECMOD1_01_90_2X
	    ret
RECMOD1_01_90_3X			;非法标识码
RECMOD1_01_90_4X			;非法标识码
RECMOD1_01_90_5X			;非法标识码
RECMOD1_01_90_6X			;非法标识码
RECMOD1_01_90_7X			;非法标识码
RECMOD1_01_90_8X			;非法标识码
RECMOD1_01_90_9X			;非法标识码
RECMOD1_01_90_AX			;非法标识码
RECMOD1_01_90_BX			;非法标识码
RECMOD1_01_90_CX			;非法标识码
RECMOD1_01_90_DX			;非法标识码
RECMOD1_01_90_EX			;非法标识码
RECMOD1_01_90_FX			;非法标识码
	    ret
;-------------------
RECMOD1_02
            ret
RECMOD1_03
            ret
RECMOD1_04
            ret
RECMOD1_05
            ret
RECMOD1_06
            ret
RECMOD1_07
            ret
RECMOD1_08
            ret
RECMOD1_09
            ret
RECMOD1_0A
            ret
RECMOD1_0B
            ret
RECMOD1_0C
            ret
RECMOD1_0D
            ret
RECMOD1_0E
            ret
RECMOD1_0F
            ret
;-------------------
;从站应答:81h
RECMOD1_8X
            ret
;-------------------
;从站应答:A1h
RECMOD1_AX
            ret
;-------------------
;从站应答:C1h
RECMOD1_CX
            ret
;------------------------
;                   Uart0
;------------------------
RECEIVE_CMD_01
            add.w   #8,R4                 
            mov.b   @R4,R5
            mov.b   R5,R6
            and.b   #0f0h,R6            
            clrc

⌨️ 快捷键说明

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