📄 触摸键盘、拼音输入法、动态曲线和区域图片切换.txt
字号:
;**************PCF8563 DRIVER*****************
I2CSTA1:PUSH ACC
SETB SDA1
NOP
NOP
NOP
NOP
SETB SCL1 ;STOP AT FIRST
MOV A,#100
DJNZ ACC,$
CLR SDA1
MOV A,#100
DJNZ ACC,$
CLR SCL1
MOV A,#100
DJNZ ACC,$
POP ACC
RET
I2CSTP1:PUSH ACC
CLR SDA1
MOV A,#100
DJNZ ACC,$
SETB SCL1
MOV A,#100
DJNZ ACC,$
CLR SDA1
MOV A,#100
DJNZ ACC,$
SETB SDA1
MOV A,#100
DJNZ ACC,$
POP ACC
RET
MACK1: PUSH ACC
CLR SDA1
NOP
NOP
SETB SCL1
MOV A,#100
DJNZ ACC,$
CLR SCL1
POP ACC
RET
MNAK1: PUSH ACC
SETB SDA1
NOP
NOP
SETB SCL1
MOV A,#50
DJNZ ACC,$
CLR SCL1
MOV A,#50
DJNZ ACC,$
POP ACC
RET
CACK1: PUSH ACC
SETB SDA1
NOP
NOP
SETB SCL1
MOV A,#50
DJNZ ACC,$
JB SDA1,$
CLR SCL1
MOV A,#50
DJNZ ACC,$
POP ACC
RET
I2CBW1: MOV R2,#08H
ICBW1: RLC A
MOV SDA1,C
NOP
PUSH ACC
MOV A,#50
DJNZ ACC,$
SETB SCL1
MOV A,#50
DJNZ ACC,$
CLR SCL1
MOV A,#50
DJNZ ACC,$
POP ACC
DJNZ R2,ICBW1
NOP
RET
I2CBR1: MOV R2,#08H
ICBR1: SETB SDA1
NOP
SETB SCL1
PUSH ACC
MOV A,#50
DJNZ ACC,$
POP ACC
MOV C,SDA1
CLR SCL1
RLC A
PUSH ACC
MOV A,#50
DJNZ ACC,$
POP ACC
DJNZ R2,ICBR1
RET
RDRTC: PUSH ACC
PUSH PSW
MOV A,R1
PUSH ACC
MOV A,R2
PUSH ACC
MOV A,R3
PUSH ACC
LCALL I2CSTA1 ;START
MOV A,#SADDW1
LCALL I2CBW1
LCALL CACK1
MOV A,#00H ;ADDRESS
LCALL I2CBW1
LCALL CACK1
LCALL I2CSTA1
MOV A,#SADDR
LCALL I2CBW1
LCALL CACK1
MOV R1,#CSTA1
MOV R3,#09H
RDRTC0: LCALL I2CBR1
LCALL MACK1
MOV @R1,A
INC R1
DJNZ R3,RDRTC0
LCALL I2CBR1
LCALL MNAK1
LCALL I2CSTP1 ;STOP
ANL TIMES,#7FH
ANL TIMEM,#7FH
ANL TIMEH,#3FH
ANL TIMED,#3FH
ANL TIMEW,#07H
ANL TIMEMM,#1FH
POP ACC
MOV R3,A
POP ACC
MOV R2,A
POP ACC
MOV R1,A
POP PSW
POP ACC
RET
;WRITE RTC
WRRTC: PUSH ACC
PUSH PSW
MOV A,R1
PUSH ACC
MOV A,R2
PUSH ACC
MOV A,R3
PUSH ACC
MOV CSTA1,#00H
MOV CSTA2,#00H
LCALL I2CSTA1
MOV A,#SADDW1
LCALL I2CBW1
LCALL CACK1
MOV A,#00H
LCALL I2CBW1
LCALL CACK1
MOV R1,#CSTA1
MOV R3,#09H
WRTC0: MOV A,@R1
INC R1
LCALL I2CBW1
LCALL CACK1
DJNZ R3,WRTC0
LCALL I2CSTP1
POP ACC
MOV R3,A
POP ACC
MOV R2,A
POP ACC
MOV R1,A
POP PSW
POP ACC
RET
;显示时钟
;2007-04-11 12:47:58 星期三
RTCDSP: MOV DPTR,#RTCS1
LCALL TXROMS
MOV A,#20H
LCALL BCDDSP
MOV A,TIMEY
LCALL BCDDSP
MOV A,#"-"
LCALL TXBYTE
MOV A,TIMEMM
LCALL BCDDSP
MOV A,#"-"
LCALL TXBYTE
MOV A,TIMED
LCALL BCDDSP
MOV A,#" "
LCALL TXBYTE
MOV A,TIMEH
LCALL BCDDSP
MOV A,#":"
LCALL TXBYTE
MOV A,TIMEM
LCALL BCDDSP
MOV A,#":"
LCALL TXBYTE
MOV A,TIMES
LCALL BCDDSP
MOV A,#" "
LCALL TXBYTE
MOV A,#" "
LCALL TXBYTE
MOV A,TIMEW
MOV B,#7
MUL AB
MOV DPTR,#WEKDSP
ADD A,DPL
MOV DPL,A
CLR A
ADDC A,DPH
MOV DPH,A
LCALL TXROMS
LCALL TXFEND
RET
RTCS1: DB 0AAH,40H,07H,0E0H,00H,00H,0CCH,033H,0C3H,3CH
DB 0AAH,42H ;取颜色到背景色
DW 265,470
DB 0CCH,33H,0C3H,03CH
DB 0AAH,54H
DW 410,458
DB 0FFH
WEKDSP: DB "星期日",0FFH
DB "星期一",0FFH
DB "星期二",0FFH
DB "星期三",0FFH
DB "星期四",0FFH
DB "星期五",0FFH
DB "星期六",0FFH
;***************底层显示接口函数**************
NUMDSP: MOV B,#100
DIV AB
ADD A,#30H
LCALL TXBYTE
MOV A,B
MOV B,#10
DIV AB
ADD A,#30H
LCALL TXBYTE
MOV A,B
ADD A,#30H
LCALL TXBYTE
RET
BCDDSP: MOV B,#16
DIV AB
ADD A,#30H
LCALL TXBYTE
MOV A,B
ADD A,#30H
LCALL TXBYTE
RET
TXBYTE: MOV SBUF0,A
JNB TI0FLG,$
CLR TI0FLG
RET
TXROMS: CLR A
MOVC A,@A+DPTR
CJNE A,#0FFH,TXROMS1
RET
TXROMS1:MOV SBUF0,A
INC DPTR
JNB TI0FLG,$
CLR TI0FLG
SJMP TXROMS
RET
TXRAMS: MOV SBUF0,@R0
INC R0
JNB TI0FLG,$
CLR TI0FLG
DJNZ R7,TXRAMS
RET
;发送帧结束符
TXFEND: MOV DPTR,#CMDTTL
LCALL TXROMS
RET
CMDTTL: DB 0CCH,33H,0C3H,03CH,0FFH
;图片显示,ACC=PICNUM
PICDSP: PUSH ACC
MOV DPTR,#CMD70
LCALL TXROMS
POP ACC
LCALL TXBYTE
LCALL TXFEND
RET
CMD70: DB 0AAH,70H,0FFH
;设置调色板
COLORSET:MOV DPTR,#CMD40
LCALL TXROMS
MOV A,COLORH
LCALL TXBYTE
MOV A,COLORL
LCALL TXBYTE
MOV A,BCOLORH
LCALL TXBYTE
MOV A,BCOLORL
LCALL TXBYTE
LCALL TXFEND
RET
CMD40: DB 0AAH,40H,0FFH
;检查LCD终端是否上电OK
ACKLCD: PUSH IE
CLR EA
CLR RI0
CLR TI0
ACKLCD1:MOV SBUF0,#0AAH
JNB TI0,$
CLR TI0
MOV SBUF0,#00H
JNB TI0,$
CLR TI0
MOV SBUF0,#0CCH
JNB TI0,$
CLR TI0
MOV SBUF0,#33H
JNB TI0,$
CLR TI0
MOV SBUF0,#0C3H
JNB TI0,$
CLR TI0
MOV SBUF0,#3CH
JNB TI0,$
CLR TI0
MOV R7,#100 ;100mS MUST ACK
LCALL RXBLCD
JNB RI0,ACKLCD1
CLR RI0
CJNE A,#0AAH,ACKLCD1
NOP
ACKLCD2:MOV R7,#50
LCALL RXBLCD
JB RI0,ACKLCD2 ;WAIT FOR RECEIVED DATA END
CLR RI0
NOP
POP IE
RET
;DELAY R7 mS OVER TIME FOR RX A BYTE
RXBLCD: CLR RI0
RXBLCD1:MOV R6,#50 ;1mS
RXBLCD2:MOV A,#0FFH ;20uS
DJNZ ACC,$
JB RI0,RXBLCDE
DJNZ R6,RXBLCD2
NOP
DJNZ R7,RXBLCD1
NOP
RET
RXBLCDE:NOP
MOV A,SBUF0
RET
DELAY: MOV A,DL200MS
JNZ DELAY
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -