📄 lcd_driver.src
字号:
;
; void lcd_write_data(char dat)
RSEG ?PR?_lcd_write_data?LCD_DRIVER
L?0053:
USING 0
CLR A
MOV R7,A
LCALL _lcd_write_data
CLR A
MOV R7,A
_lcd_write_data:
USING 0
; SOURCE LINE # 96
;---- Variable 'dat?552' assigned to Register 'R3' ----
MOV R3,AR7
; {
; SOURCE LINE # 97
; char start_byte;
; int command;
;
; start_byte = SYNC_CHARACTER | START_BYTE_RS;
; SOURCE LINE # 101
;---- Variable 'start_byte?553' assigned to Register 'R7' ----
MOV R7,#0FAH
; lcd_send_byte(start_byte);
; SOURCE LINE # 102
LCALL _lcd_send_byte
;
; command = dat & 0xf0;
; SOURCE LINE # 104
MOV A,R3
ANL A,#0F0H
MOV R7,A
RLC A
SUBB A,ACC
;---- Variable 'command?554' assigned to Register 'R4/R5' ----
MOV R5,AR7
; command <<= 8;
; SOURCE LINE # 105
MOV A,R5
MOV R4,A
; command &= 0xff00;
; SOURCE LINE # 106
; command |= (dat & 0x0f) << 4;
; SOURCE LINE # 107
MOV A,R3
ANL A,#0FH
MOV R7,A
RLC A
SUBB A,ACC
MOV R6,A
MOV A,R7
SWAP A
MOV R0,A
ANL A,#0FH
XCH A,R0
XRL A,R0
MOV R7,A
MOV A,R6
SWAP A
ANL A,#0F0H
ORL A,R0
MOV R6,A
MOV A,R7
MOV R5,A
MOV A,R6
ORL AR4,A
;
; lcd_send_word(command);
; SOURCE LINE # 109
MOV R7,AR5
MOV R6,AR4
LJMP _lcd_send_word
; END OF _lcd_write_data
; }
;
; void lcd_init(void)
RSEG ?PR?lcd_init?LCD_DRIVER
lcd_init:
USING 0
; SOURCE LINE # 112
; {
; SOURCE LINE # 113
; SET_LCD_SCLK(0);
; SOURCE LINE # 114
CLR P2_7
; SET_LCD_CS(1);
; SOURCE LINE # 115
SETB P2_5
; SET_LCD_RESET(0);
; SOURCE LINE # 116
CLR P0_0
; Delay(200);
; SOURCE LINE # 117
MOV R7,#0C8H
MOV R6,#00H
LCALL _Delay
; SET_LCD_RESET(1);
; SOURCE LINE # 118
SETB P0_0
; Delay(200);
; SOURCE LINE # 119
MOV R7,#0C8H
MOV R6,#00H
LCALL _Delay
;
; lcd_write_instruction(0x38, 0);
; SOURCE LINE # 121
CLR A
MOV R5,A
MOV R7,#038H
LCALL _lcd_write_instruction
; Delay(200);
; SOURCE LINE # 122
MOV R7,#0C8H
MOV R6,#00H
LCALL _Delay
; lcd_write_instruction(0x38, 0);
; SOURCE LINE # 123
CLR A
MOV R5,A
MOV R7,#038H
LCALL _lcd_write_instruction
; Delay(200);
; SOURCE LINE # 124
MOV R7,#0C8H
MOV R6,#00H
LCALL _Delay
; lcd_write_instruction(0x38, 0);
; SOURCE LINE # 125
CLR A
MOV R5,A
MOV R7,#038H
LCALL _lcd_write_instruction
; Delay(200);
; SOURCE LINE # 126
MOV R7,#0C8H
MOV R6,#00H
LCALL _Delay
;
; lcd_write_instruction(0x01, 1);
; SOURCE LINE # 128
MOV R5,#01H
MOV R7,#01H
LCALL _lcd_write_instruction
; Delay(3000);
; SOURCE LINE # 129
MOV R7,#0B8H
MOV R6,#0BH
LCALL _Delay
; lcd_write_instruction(0x06, 1);
; SOURCE LINE # 130
MOV R5,#01H
MOV R7,#06H
LCALL _lcd_write_instruction
; Delay(200);
; SOURCE LINE # 131
MOV R7,#0C8H
MOV R6,#00H
LCALL _Delay
; lcd_write_instruction(0x0c, 1);
; SOURCE LINE # 132
MOV R5,#01H
MOV R7,#0CH
LCALL _lcd_write_instruction
; Delay(200);
; SOURCE LINE # 133
MOV R7,#0C8H
MOV R6,#00H
LJMP _Delay
; END OF lcd_init
; }
;
; void lcd_char(int x, int y, unsigned short *buf, int height, int width)
RSEG ?PR?_lcd_char?LCD_DRIVER
_lcd_char:
USING 0
; SOURCE LINE # 136
MOV buf?757,R3
MOV buf?757+01H,R2
MOV buf?757+02H,R1
;---- Variable 'y?756' assigned to Register 'R4/R5' ----
;---- Variable 'x?755' assigned to Register 'R6/R7' ----
; {
; SOURCE LINE # 137
; char row, col, convert_coordinate;
; int i, j;
; //int
;
; if (y < 32)
; SOURCE LINE # 142
CLR C
MOV A,R5
SUBB A,#020H
MOV A,R4
XRL A,#080H
SUBB A,#080H
JNC ?C0024
; {
; SOURCE LINE # 143
; row = y;
; SOURCE LINE # 144
MOV row?760,R5
; convert_coordinate = 0;
; SOURCE LINE # 145
CLR A
MOV convert_coordinate?762,A
; }
; SOURCE LINE # 146
SJMP ?C0025
?C0024:
; else
; {
; SOURCE LINE # 148
; row = y - 32;
; SOURCE LINE # 149
MOV A,R5
ADD A,#0E0H
MOV row?760,A
; convert_coordinate = 8;
; SOURCE LINE # 150
MOV convert_coordinate?762,#08H
; }
; SOURCE LINE # 151
?C0025:
; row |= 0x80;
; SOURCE LINE # 152
ORL row?760,#080H
;
; col = x / 16;
; SOURCE LINE # 154
MOV R4,#00H
MOV R5,#010H
LCALL ?C?SIDIV
MOV col?761,R7
; col += convert_coordinate;
; SOURCE LINE # 155
MOV A,convert_coordinate?762
ADD A,col?761
MOV col?761,A
; col |= 0x80;
; SOURCE LINE # 156
ORL col?761,#080H
;
; lcd_write_instruction(0x3e, 1);
; SOURCE LINE # 158
MOV R5,#01H
MOV R7,#03EH
LCALL _lcd_write_instruction
; Delay(50);
; SOURCE LINE # 159
MOV R7,#032H
MOV R6,#00H
LCALL _Delay
; lcd_write_instruction(row, 1);
; SOURCE LINE # 160
MOV R5,#01H
MOV R7,row?760
LCALL _lcd_write_instruction
; lcd_write_instruction(col, 1);
; SOURCE LINE # 161
MOV R5,#01H
MOV R7,col?761
LCALL _lcd_write_instruction
; Delay(50);
; SOURCE LINE # 162
MOV R7,#032H
MOV R6,#00H
LCALL _Delay
; lcd_write_instruction(0x3a, 1);
; SOURCE LINE # 163
MOV R5,#01H
MOV R7,#03AH
LCALL _lcd_write_instruction
; Delay(50);
; SOURCE LINE # 164
MOV R7,#032H
MOV R6,#00H
LJMP _Delay
; END OF _lcd_char
;
; /*for(i = 0; i < height; i++);
; for(j = 0; j < width; j++)
; *buf*/
; }
;
; void lcd_zh(int x, int y, char mat[16][2])
RSEG ?PR?_lcd_zh?LCD_DRIVER
_lcd_zh:
USING 0
; SOURCE LINE # 171
MOV x?865,R6
MOV x?865+01H,R7
MOV y?866,R4
MOV y?866+01H,R5
MOV mat?867,R3
MOV mat?867+01H,R2
MOV mat?867+02H,R1
; {
; SOURCE LINE # 172
; int i, j;
; for(i = 0; i < 16; i++)
; SOURCE LINE # 174
CLR A
MOV i?868,A
MOV i?868+01H,A
?C0027:
; {
; SOURCE LINE # 175
; lcd_write_instruction(0x3e, 1);
; SOURCE LINE # 176
MOV R5,#01H
MOV R7,#03EH
LCALL _lcd_write_instruction
; //Delay(50);
; lcd_write_instruction(i + 0 | 0x80, 1);
; SOURCE LINE # 178
MOV A,i?868+01H
LCALL L?0052
; //Delay(50);
; lcd_write_instruction(0 + 8| 0x80, 1);
; SOURCE LINE # 180
MOV R5,#01H
MOV R7,#088H
LCALL _lcd_write_instruction
; //Delay(50);
; lcd_write_instruction(0x3a, 1);
; SOURCE LINE # 182
MOV R5,#01H
MOV R7,#03AH
LCALL _lcd_write_instruction
; //Delay(50);
; lcd_write_data(mat[i][0]);
; SOURCE LINE # 184
MOV A,i?868+01H
ADD A,ACC
MOV R7,A
MOV A,i?868
RLC A
MOV R3,mat?867
MOV R2,mat?867+01H
MOV R1,mat?867+02H
MOV DPL,R7
MOV DPH,A
LCALL ?C?CLDOPTR
MOV R7,A
LCALL _lcd_write_data
; lcd_write_data(mat[i][1]);
; SOURCE LINE # 185
MOV A,i?868+01H
ADD A,ACC
MOV R7,A
MOV A,i?868
RLC A
MOV R6,A
MOV R3,mat?867
MOV A,mat?867+02H
ADD A,R7
MOV R1,A
MOV A,mat?867+01H
ADDC A,R6
MOV R2,A
MOV DPTR,#01H
LCALL ?C?CLDOPTR
MOV R7,A
LCALL _lcd_write_data
; }
; SOURCE LINE # 186
INC i?868+01H
MOV A,i?868+01H
JNZ ?C0048
INC i?868
?C0048:
CLR C
SUBB A,#010H
MOV A,i?868
XRL A,#080H
SUBB A,#080H
JC ?C0027
; }
; SOURCE LINE # 187
?C0030:
RET
; END OF _lcd_zh
;
; void lcd_clear(void)
RSEG ?PR?lcd_clear?LCD_DRIVER
lcd_clear:
USING 0
; SOURCE LINE # 189
; {
; SOURCE LINE # 190
; int i, j;
; for(i = 0; i < 32; i++)
; SOURCE LINE # 192
;---- Variable 'i?970' assigned to Register 'DPTR' ----
MOV DPTR,#00H
?C0031:
; {
; SOURCE LINE # 193
; lcd_write_instruction(0x3e, 1);
; SOURCE LINE # 194
MOV R5,#01H
MOV R7,#03EH
LCALL _lcd_write_instruction
; //Delay(50);
; lcd_write_instruction(i | 0x80, 1);
; SOURCE LINE # 196
LCALL L?0051
; //Delay(50);
; lcd_write_instruction(0 | 0x80, 1);
; SOURCE LINE # 198
MOV R5,#01H
MOV R7,#080H
LCALL _lcd_write_instruction
; //Delay(50);
; lcd_write_instruction(0x3a, 1);
; SOURCE LINE # 200
MOV R5,#01H
MOV R7,#03AH
LCALL _lcd_write_instruction
; //Delay(50);
; for(j = 0; j < 8; j++)
; SOURCE LINE # 202
CLR A
MOV j?971,A
MOV j?971+01H,A
?C0034:
; {
; SOURCE LINE # 203
; lcd_write_data(0x00);
; SOURCE LINE # 204
; lcd_write_data(0x00);
; SOURCE LINE # 205
LCALL L?0053
; }
; SOURCE LINE # 206
INC j?971+01H
MOV A,j?971+01H
JNZ ?C0049
INC j?971
?C0049:
CLR C
SUBB A,#08H
MOV A,j?971
XRL A,#080H
SUBB A,#080H
JC ?C0034
; }
; SOURCE LINE # 207
?C0033:
INC DPTR
MOV A,DPL
XRL A,#020H
ORL A,DPH
JNZ ?C0031
?C0032:
;
; for(i = 0; i < 32; i++)
; SOURCE LINE # 209
CLR A
MOV DPH,A
MOV DPL,A
?C0037:
; {
; SOURCE LINE # 210
; lcd_write_instruction(0x3e, 1);
; SOURCE LINE # 211
MOV R5,#01H
MOV R7,#03EH
LCALL _lcd_write_instruction
; //Delay(50);
; lcd_write_instruction(i | 0x80, 1);
; SOURCE LINE # 213
LCALL L?0051
; //Delay(50);
; lcd_write_instruction(8 | 0x80, 1);
; SOURCE LINE # 215
MOV R5,#01H
MOV R7,#088H
LCALL _lcd_write_instruction
; //Delay(50);
; lcd_write_instruction(0x3a, 1);
; SOURCE LINE # 217
MOV R5,#01H
MOV R7,#03AH
LCALL _lcd_write_instruction
; //Delay(50);
; for(j = 0; j < 8; j++)
; SOURCE LINE # 219
CLR A
MOV j?971,A
MOV j?971+01H,A
?C0040:
; {
; SOURCE LINE # 220
; lcd_write_data(0x00);
; SOURCE LINE # 221
; lcd_write_data(0x00);
; SOURCE LINE # 222
LCALL L?0053
; }
; SOURCE LINE # 223
INC j?971+01H
MOV A,j?971+01H
JNZ ?C0050
INC j?971
?C0050:
CLR C
SUBB A,#08H
MOV A,j?971
XRL A,#080H
SUBB A,#080H
JC ?C0040
; }
; SOURCE LINE # 224
?C0039:
INC DPTR
MOV A,DPL
XRL A,#020H
ORL A,DPH
JNZ ?C0037
; }
; SOURCE LINE # 225
?C0043:
RET
; END OF lcd_clear
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -