📄 lcd.s43
字号:
; =============================================================================
; 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 + -