📄 m03.asm
字号:
LCALL DISP_WORD
MOV A,#1EH
LCALL DISP_BYTE
SJMP DISP_INFO3
DISP_YUANN4:
MOV A,#48H
LCALL DISP_WORD
MOV A,#20H
LCALL DISP_BYTE
SJMP DISP_INFO3
DISP_YUANN5:
MOV A,#50H
LCALL DISP_WORD
MOV A,#0F8H
LCALL DISP_WORD
MOV A,#54H
LCALL DISP_WORD
DISP_INFO3:
MOV DPS,#00H
MOV DPTR,#DIDT_
LCALL DISP_STR
MOV ADDS_PL,#09H ;ADDRESS POINTER
MOV ADDS_PH,#01H
MOV A,ZONE
JB ACC.4,DISP_
MOV A,#2CH
LCALL DISP_BYTE
SJMP DISP_INFO4
DISP_:
MOV A,#16H
LCALL DISP_BYTE
DISP_INFO4:
MOV A,ZONE
ANL A,#0FH
CLR 19H
LCALL DISP_BYTEB
MOV ADDS_PL,#08H ;ADDRESS POINTER
MOV ADDS_PH,#12H
MOV A,STAU_GPS
JNB ACC.7,DISP_UTCP0
JNB ACC.6,DISP_UTCP0
MOV DPTR,#BLOCK_UTCP
LCALL DISP_BLOCK
SJMP DISP_ANTE
DISP_UTCP0:
MOV DPTR,#BLOCK__
LCALL DISP_BLOCK
DISP_ANTE:
MOV A,STAU_GPS
JB ACC.5,DISP_ANTE0
JB ACC.4,DISP_ANTE0
MOV DPTR,#BLOCK_ANTE
LCALL DISP_BLOCK
SJMP DISP_SATE
DISP_ANTE0:
MOV DPTR,#BLOCK__
LCALL DISP_BLOCK
DISP_SATE:
MOV DPTR,#BLOCK_SATE
LCALL DISP_BLOCK
MOV ADDS_PL,#57H ;ADDRESS POINTER
MOV ADDS_PH,#01H
MOV A,STAU_GPS
ANL A,#0FH
CLR 19H
LCALL DISP_BYTEB
MOV ADDS_PL,#09H ;ADDRESS POINTER
MOV ADDS_PH,#14H
MOV PID4,#00H
DISP_BD:
INC PID4
MOV A,PID4
ANL A,#0E0H
JZ DISP_BD1
MOV DPTR,#BLOCK__
LCALL DISP_BLOCK
MOV DPTR,#BLOCK__
LCALL DISP_BLOCK
MOV ADDS_PL,#89H ;ADDRESS POINTER
MOV ADDS_PH,#01H
MOV DPS,#00H
MOV DPTR,#DIDT_
LCALL DISP_STR
RET
DISP_BD1:
MOV A,PID4
RL A
RL A
ANL A,#7CH
MOV DPL,A
MOV DPH,#00H
MOV DPS,#00H
MOVX A,@DPTR
CJNE A,#07H,DISP_BD
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV DPH1,A
INC DPTR
MOVX A,@DPTR
MOV DPL1,A
ORL DPL1,#0AH
MOV DPS,#01H
MOVX A,@DPTR
MOV TEMP3,A
ANL A,#0F0H
CJNE A,#10H,DISP_OK0
MOV DPTR,#BLOCK_OK
LCALL DISP_BLOCK
SJMP DISP_STAE1
DISP_OK0:
MOV DPTR,#BLOCK__
LCALL DISP_BLOCK
DISP_STAE1:
MOV DPTR,#BLOCK_SATE
LCALL DISP_BLOCK
MOV ADDS_PL,#93H ;ADDRESS POINTER
MOV ADDS_PH,#01H
MOV A,TEMP3
ANL A,#0FH
CLR 19H
LCALL DISP_BYTEB
RET
;=====================================
;显示屏幕固定信息
;=====================================
DISP_GA:
MOV ADDS_PL,#48H ;ADDRESS POINTER
MOV ADDS_PH,#00H
MOV DPS,#00H
MOV DPTR,#SCREENA
LCALL DISP_STR
RET
DISP_GB:
MOV ADDS_PL,#0AH ;ADDRESS POINTER
MOV ADDS_PH,#00H
MOV DPS,#00H
MOV DPTR,#SCREENB
LCALL DISP_STR
RET
;=====================================
;显示在线模块
;=====================================
DISP_MODE:
MOV ADDS_PL,#0C0H ;ADDRESS POINTER
MOV ADDS_PH,#00H
MOV DPL1,#0CFH
MOV DPH1,#03H
MOV PID4,#00H
DISP_MODE1:
INC PID4
MOV A,PID4
ANL A,#0E0H
JZ DISP_MODE2
DISP_MODE0:
MOV DPS,#01H
INC DPTR
MOVX A,@DPTR
JZ DISP_MEND
MOV A,#00H
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
MOV DPS,#00H
MOV DPTR,#DIDT__
LCALL DISP_STR
SJMP DISP_MODE0
DISP_MEND:
RET
DISP_MODE2:
MOV A,PID4
RL A
RL A
ANL A,#7CH
MOV DPL,A
MOV DPH,#00H
MOV DPS,#00H
MOVX A,@DPTR
JZ DISP_MODE1
MOV B,A
MOV DPS,#01H
INC DPTR
MOVX A,@DPTR
CJNE A,PID4,DISP_MODE3
INC DPTR
MOVX A,@DPTR
CJNE A,B,DISP_MODE4
LCALL ENTER
SJMP DISP_MODE1
DISP_MODE3:
MOV A,PID4
MOVX @DPTR,A
INC DPTR
DISP_MODE4:
MOV A,B
MOVX @DPTR,A
XRL A,#06H
JZ DISP_MG04
MOV A,B
XRL A,#07H
JZ DISP_MG07
MOV A,B
XRL A,#0AH
JZ DISP_ML02
MOV A,B
XRL A,#0BH
JZ DISP_MM05
MOV A,B
XRL A,#09H
JZ DISP_MM04
SJMP DISP_MODE1
DISP_MG04:
MOV DPS,#00H
MOV DPTR,#DIDT_G04
LCALL DISP_STR
SJMP DISP_MODE5
DISP_MG07:
MOV DPS,#00H
MOV DPTR,#DIDT_G07
LCALL DISP_STR
SJMP DISP_MODE5
DISP_ML02:
MOV DPS,#00H
MOV DPTR,#DIDT_L02
LCALL DISP_STR
SJMP DISP_MODE5
DISP_MM05:
MOV DPS,#00H
MOV DPTR,#DIDT_M05
LCALL DISP_STR
SJMP DISP_MODE5
DISP_MM04:
MOV DPS,#00H
MOV DPTR,#DIDT_M04
LCALL DISP_STR
DISP_MODE5:
MOV A,ADDS_PL
ANL A,#0E0H
ORL A,#12H
MOV ADDS_PL,A
MOV A,PID4
CLR 19H
LCALL DISP_BYTEB
LCALL ENTER
LJMP DISP_MODE1
;========================================
;显示初始化
;========================================
INI_LCD:
CLR P2.0 ;FS
MOV DIS_DL,#00H ;TEXT HOME ADDRESS 0000H
MOV DIS_DH,#00H
MOV DIS_COM,#40H
LCALL SENDCOM
MOV DIS_DL,#20H ;TEXT AREA 32 COLUMNS
MOV DIS_DH,#00H ;0000H~0200H(可扩展至400H)
MOV DIS_COM,#41H
LCALL SENDCOM
MOV DIS_DL,#00H ;GRAPHIC HOME ADDRESS 0800H
MOV DIS_DH,#08H
MOV DIS_COM,#42H
LCALL SENDCOM
MOV DIS_DL,#20H ;GRAPHIC AREA 32 COLUMNS
MOV DIS_DH,#00H ;0800H~1800H
MOV DIS_COM,#43H
LCALL SENDCOM
MOV DIS_COM,#88H
LCALL SENDCON ;External CG,OR mode
MOV DIS_DL,#03H ;SET OFFSET
MOV DIS_DH,#00H ;CG RAM 1800H~1FFFH
MOV DIS_COM,#22H
LCALL SENDCOM
MOV DIS_COM,#9CH ;TEXT ON GRAPHICS ON CURSOR OFF
LCALL SENDCON
LCALL CLEAR_TXT ;CLR TEXT AREA
LCALL CLEAR_GIF ;CLR GIF AREA
MOV DIS_DL,#00H ;CG RAM 首地址
MOV DIS_DH,#18H ;
MOV DIS_COM,#24H
LCALL SENDCOM
MOV DIS_COM,#0B0H ;AUTO WRITE
LCALL SENDCON
MOV COUNT,#00H ;LOAD EXCG
MOV COUNT1,#08H
MOV DPTR,#WORD_ROOM
LOAD_CG:
LCALL T_STAU3
MOV A,#00H
MOVC A,@A+DPTR
LCALL DT
INC DPTR
DJNZ COUNT,LOAD_CG
DJNZ COUNT1,LOAD_CG
MOV DIS_COM,#0B2H ;AUTO WRITE STOP
LCALL SENDCON
RET
;======================================
;6963命令
;======================================
DISP_STR:
MOV COUNT,#00H
DISP_STR1:
MOV A,COUNT
MOVC A,@A+DPTR
MOV B,A
INC COUNT
XRL A,#0FEH
JZ DISP_STR4
MOV A,B
XRL A,#0FFH
JNZ DISP_STR2
RET
DISP_STR2:
MOV A,B
CLR C
SUBB A,#44H
MOV A,B
JNC DISP_STR3
LCALL DISP_BYTE
SJMP DISP_STR1
DISP_STR3:
LCALL DISP_WORD
AJMP DISP_STR1
DISP_STR4:
LCALL ENTER
AJMP DISP_STR1
;--------------------------------------
DISP_WORD:
MOV CGP,A
MOV DIS_DL,ADDS_PL
MOV DIS_DH,ADDS_PH
MOV DIS_COM,#24H
LCALL SENDCOM
MOV DIS_DH,CGP
MOV DIS_COM,#0C0H
LCALL SENDCOM1
INC CGP
MOV DIS_DH,CGP
MOV DIS_COM,#0C4H
LCALL SENDCOM1
MOV DIS_DL,ADDS_PL
MOV DIS_DH,ADDS_PH
MOV A,#20H
ADD A,DIS_DL
MOV DIS_DL,A
MOV A,#00H
ADDC A,DIS_DH
MOV DIS_DH,A
MOV DIS_COM,#24H
LCALL SENDCOM
INC CGP
MOV DIS_DH,CGP
MOV DIS_COM,#0C0H
LCALL SENDCOM1
INC CGP
MOV DIS_DH,CGP
MOV DIS_COM,#0C4H
LCALL SENDCOM1
MOV A,#02H
ADD A,ADDS_PL
MOV ADDS_PL,A
MOV A,#00H
ADDC A,ADDS_PH
MOV ADDS_PH,A
RET
;-------------------------------------
DISP_BIN:
MOVX A,@DPTR
MOV BIN1,A
INC DPTR
MOVX A,@DPTR
MOV BIN2,A
INC DPTR
MOVX A,@DPTR
MOV BIN3,A
INC DPTR
MOVX A,@DPTR
MOV BIN4,A
INC DPTR
MOV COUNT,#20H
LCALL BIN_BCD
MOV COUNT,#05H
CLR RS0
CLR RS1
MOV R1,#0EH
DISP_BIN1:
MOV A,@R1
MOV @R0,A
SWAP A
RL A
ANL A,#1EH
ADD A,#18H
LCALL DISP_BYTE
MOV A,@R1
RL A
ANL A,#1EH
ADD A,#18H
LCALL DISP_BYTE
DEC R1
INC R0
DJNZ COUNT,DISP_BIN1
RET
;-----------------------------------------
DISP_BYTED:
MOV BIN4,A
MOV COUNT,#08H
LCALL BIN_BCD
MOV A,BCD2
RL A
ANL A,#1EH
ADD A,#18H
LCALL DISP_BYTE
MOV A,BCD1
SWAP A
RL A
ANL A,#1EH
ADD A,#18H
LCALL DISP_BYTE
MOV A,BCD1
RL A
ANL A,#1EH
ADD A,#18H
LCALL DISP_BYTE
RET
;-------------------------------------
DISP_BYTEB:
MOV BIN4,A
MOV COUNT,#08H
LCALL BIN_BCD
MOV A,BCD1
SWAP A
RL A
ANL A,#1EH
JB 19H,DISP_BYTEB1
ADD A,#18H
DISP_BYTEB1:
ACALL DISP_BYTE
MOV A,BCD1
RL A
ANL A,#1EH
JB 19H,DISP_BYTEB2
ADD A,#18H
DISP_BYTEB2:
ACALL DISP_BYTE
RET
;-------------------------------------
DISP_BYTE:
MOV CGP,A
MOV DIS_DL,ADDS_PL
MOV DIS_DH,ADDS_PH
MOV DIS_COM,#24H
LCALL SENDCOM
MOV DIS_DH,CGP
MOV DIS_COM,#0C4H
LCALL SENDCOM1
MOV DIS_DL,ADDS_PL
MOV DIS_DH,ADDS_PH
MOV A,#20H
ADD A,DIS_DL
MOV DIS_DL,A
MOV A,#00H
ADDC A,DIS_DH
MOV DIS_DH,A
MOV DIS_COM,#24H
LCALL SENDCOM
INC CGP
MOV DIS_DH,CGP
MOV DIS_COM,#0C4H
LCALL SENDCOM1
MOV A,#01H
ADD A,ADDS_PL
MOV ADDS_PL,A
MOV A,#00H
ADDC A,ADDS_PH
MOV ADDS_PH,A
RET
;-------------------------------------
ENTER:
MOV A,#40H
ADD A,ADDS_PL
MOV ADDS_PL,A
MOV A,ADDS_PH
ADDC A,#00H
MOV ADDS_PH,A
ANL ADDS_PL,#0E0H
RET
;-------------------------------------
CLEAR_TXT:
MOV DIS_DL,#00H ;TEXT RAM 首地址
MOV DIS_DH,#00H ;
MOV DIS_COM,#24H
LCALL SENDCOM
MOV DIS_COM,#0B0H ;AUTO WRITE
LCALL SENDCON
MOV COUNT,#00H
MOV COUNT1,#08H
CLEAR_TXT1:
LCALL T_STAU3
MOV A,#3EH
LCALL DT
DJNZ COUNT,CLEAR_TXT1
DJNZ COUNT1,CLEAR_TXT1
MOV DIS_COM,#0B2H ;AUTO WRITE STOP
LCALL SENDCON
RET
;--------------------------------------
DISP_BLOCK:
MOV CGP,#00H
MOV DIS_DL,ADDS_PL
MOV DIS_DH,ADDS_PH
MOV DIS_COM,#24H
LCALL SENDCOM
MOV TEMP1,ADDS_PL
MOV TEMP2,ADDS_PH
MOV COUNT1,#10H
DISP_BLOCK1:
MOV COUNT,#05H
DISP_BLOCK2:
MOV A,CGP
MOVC A,@A+DPTR
MOV DIS_DH,A
MOV DIS_COM,#0C0H
LCALL SENDCOM1
INC CGP
DJNZ COUNT,DISP_BLOCK2
MOV A,#20H
ADD A,ADDS_PL
MOV ADDS_PL,A
MOV A,#00H
ADDC A,ADDS_PH
MOV ADDS_PH,A
MOV DIS_DL,ADDS_PL
MOV DIS_DH,ADDS_PH
MOV DIS_COM,#24H
LCALL SENDCOM
DJNZ COUNT1,DISP_BLOCK1
MOV ADDS_PL,TEMP1
MOV ADDS_PH,TEMP2
MOV A,#05H
ADD A,ADDS_PL
MOV ADDS_PL,A
MOV A,#00H
ADDC A,ADDS_PH
MOV ADDS_PH,A
RET
;--------------------------------
CLEAR_GIF:
MOV DIS_DL,#00H ;TEXT RAM 首地址
MOV DIS_DH,#08H ;
MOV DIS_COM,#24H
LCALL SENDCOM
MOV DIS_COM,#0B0H ;AUTO WRITE
LCALL SENDCON
MOV COUNT,#00H
MOV COUNT1,#10H
CLEAR_GIF1:
LCALL T_STAU3
MOV A,#00H
LCALL DT
DJNZ COUNT,CLEAR_GIF1
DJNZ COUNT1,CLEAR_GIF1
MOV DIS_COM,#0B2H ;AUTO WRITE STOP
LCALL SENDCON
RET
;----------------------------
SENDCOM:
ACALL T_STAU1
MOV A,DIS_DL
ACALL DT
SENDCOM1:
ACALL T_STAU1
MOV A,DIS_DH
ACALL DT
SENDCON:
ACALL T_STAU1
MOV A,DIS_COM
ACALL CMD
RET
;===================================
;操作6963时序
;===================================
T_STAU1:
MOV P0,#0FFH ;READ STATUS 0,1
SETB P2.2 ;C/D
CLR P2.1 ;/CE
CLR P2.4 ;/RD
T_STAU11:
NOP
MOV A,P0
ANL A,#03H
CJNE A,#03H,T_STAU11
SETB P2.4 ;/RD
SETB P2.1 ;/CE
RET
CMD: ;WRITE COMMAND
SETB P2.2 ;C/D
CLR P2.1 ;/CE
MOV P0,A
CLR P2.3 ;/WR
NOP
SETB P2.3 ;/WR
SETB P2.1 ;/CE
RET
DT: ;WRITE DATA
CLR P2.2 ;C/D
CLR P2.1 ;/CE
MOV P0,A
CLR P2.3 ;/WR
NOP
SETB P2.3 ;/WR
SETB P2.1 ;/CE
RET
T_STAU3:
MOV P0,#0FFH ;READ STATUS 3
SETB P2.2 ;C/D
CLR P2.1 ;/CE
CLR P2.4 ;/RD
T_STAU31:
NOP
MOV A,P0
ANL A,#08H
CJNE A,#08H,T_STAU31
SETB P2.4 ;/RD
SETB P2.1 ;/CE
RET
;***********************************
;1161的IIC子程序
;***********************************
RD_EEPROM:
LCALL EEPROM_ADR
MOV LONG_IIC,#10H
SETB RS0
SETB RS1
MOV R0,#0F0H
LCALL IIC_RD
RET
;--------------------------------
WE_EEPROM:
; LCALL EEPROM_ADR
MOV LONG_IIC,#10H
SETB RS0
SETB RS1
MOV R1,#0F0H
LCALL IIC_WR
RET
;---------------------------
EEPROM_ADR:
SWAP A
MOV ADDH_IIC,A
MOV ADDL_IIC,A
ANL ADDH_IIC,#0FH
ANL ADDL_IIC,#0F0H
CLR C
MOV A,ADDL_IIC
RLC A
MOV ADDL_IIC,A
MOV A,ADDH_IIC
RLC A
MOV ADDH_IIC,A
RET
;***********************************
IIC_WR:
CLR WP
LCALL IIC_STAR
MOV A,ADDH_IIC
RL A
ANL A,#0EH
ORL A,#0A0H
LCALL IIC_WRB
JB 1EH,IIC_WR
MOV A,ADDL_IIC
LCALL IIC_WRB
JB 1EH,IIC_WR
SETB RS0
SETB RS1
IIC_WR1:
MOV A,@R1
LCALL IIC_WRB
INC R1
DJNZ LONG_IIC,IIC_WR1
LCALL IIC_STOP
CLR WP
RET
;-------------------------------------
IIC_RD:
LCALL IIC_STAR
MOV A,ADDH_IIC
RL A
ANL A,#0EH
ORL A,#0A0H
LCALL IIC_WRB
JB 1EH,IIC_RD
MOV A,ADDL_IIC
LCALL IIC_WRB
JB 1EH,IIC_RD
LCALL IIC_STAR
MOV A,ADDH_IIC
RL A
ANL A,#0EH
ORL A,#0A1H
LCALL IIC_WRB
JB 1EH,IIC_RD
SETB RS0
SETB RS1
IIC_RD1:
LCALL IIC_RDB
MOV @R0,A
INC R0
DJNZ LONG_IIC,IIC_RD2
LCALL IIC_NACK
LCALL IIC_STOP
RET
IIC_RD2:
LCALL IIC_ACK
SJMP IIC_RD1
;=====================================
IIC_STAR: ;启动IIC总线
SETB SDA
SETB SCL
NOP
NOP
JB SDA,IIC_STAR1
CLR SCL
SJMP IIC_STAR
IIC_STAR1:
CLR SDA
NOP
NOP
CLR SCL
RET
;------------------------------
IIC_STOP: ;停止IIC总线
CLR SDA
SETB SCL
NOP
NOP
SETB SDA
NOP
NOP
CLR SCL
RET
;------------------------------
IIC_WRB: ;向SDA线上发送一个数据字节
MOV COUNT,#08H
IIC_WRB1:
RLC A
MOV SDA,C
NOP
SETB SCL
NOP
NOP
CLR SCL
DJNZ COUNT,IIC_WRB1
SETB SDA ;应答位检查
NOP
MOV C,SDA
MOV 1EH,C
SETB SCL
NOP
NOP
CLR SCL
RET
;------------------------------
IIC_RDB: ;从SDA线上读取一个数据字节
MOV COUNT,#08H
IIC_RDB1:
SETB SDA
NOP
SETB SCL
MOV C,SDA
RLC A
CLR SCL
DJNZ COUNT,IIC_RDB1
RET
;-------------------------------
IIC_ACK: ;发送应答位
CLR SDA
NOP
SETB SCL
NOP
NOP
CLR SCL
RET
;-------------------------------
IIC_NACK: ;发送非应答位
SETB SDA
NOP
SETB SCL
NOP
NOP
CLR SCL
RET
;***********************************
;通用子程序
;***********************************
;二进制转十进制
BIN_BCD:
MOV BCD1,#00H
MOV BCD2,#00H
MOV BCD3,#00H
MOV BCD4,#00H
MOV BCD5,#00H
BIN_BCD1:
MOV A,BIN1
RLC A
MOV BIN1,A
MOV A,BIN2
RLC A
MOV BIN2,A
MOV A,BIN3
RLC A
MOV BIN3,A
MOV A,BIN4
RLC A
MOV BIN4,A
MOV A,BCD1
ADDC A,BCD1
DA A
MOV BCD1,A
MOV A,BCD2
ADDC A,BCD2
DA A
MOV BCD2,A
MOV A,BCD3
ADDC A,BCD3
DA A
MOV BCD3,A
MOV A,BCD4
ADDC A,BCD4
DA A
MOV BCD4,A
MOV A,BCD5
ADDC A,BCD5
DA A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -