📄 3510i.s
字号:
.dbline -1
.dbline 155
; //done
; }
;
; void LCD_ReadDummy(void)
; {
.dbline 156
; clr_bit(LCD_SIO_DDR, LCD_SIO); //set SDI.DDR = 0
cbi 0x17,5
.dbline 157
; set_bit(LCD_SIO_PORT, LCD_SIO);
sbi 0x18,5
.dbline 158
; clr_bit(LCD_CS_PORT, LCD_CS); //set CS = L
cbi 0x18,4
.dbline 159
; clr_bit(LCD_SCL_PORT, LCD_SCL);
cbi 0x18,7
.dbline 160
; set_bit(LCD_SCL_PORT, LCD_SCL);
sbi 0x18,7
.dbline -2
L41:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_ReadData _LCD_ReadData fc
; r -> R16
.even
_LCD_ReadData::
.dbline -1
.dbline 164
; }
;
; uchar LCD_ReadData(void)
; {
.dbline 165
; uchar r = 0;
clr R16
.dbline 166
; clr_bit(LCD_SIO_DDR, LCD_SIO); //set SDI.DDR = 0
cbi 0x17,5
.dbline 167
; set_bit(LCD_SIO_PORT, LCD_SIO);
sbi 0x18,5
.dbline 168
; clr_bit(LCD_CS_PORT, LCD_CS); //set CS = L
cbi 0x18,4
.dbline 170
; //Bit 0(MSB)
; clr_bit(LCD_SCL_PORT, LCD_SCL);
cbi 0x18,7
.dbline 171
; set_bit(LCD_SCL_PORT, LCD_SCL);
sbi 0x18,7
.dbline 172
; if(set_bit(LCD_SIO_PIN, LCD_SIO))
in R24,0x16
ori R24,32
out 0x16,R24
tst R24
breq L43
.dbline 173
; r |= 0x80;
ori R16,128
xjmp L44
L43:
.dbline 175
; else
; r &= ~0x80;
andi R16,127
L44:
.dbline 177
; //Bit 1
; clr_bit(LCD_SCL_PORT, LCD_SCL);
cbi 0x18,7
.dbline 178
; set_bit(LCD_SCL_PORT, LCD_SCL);
sbi 0x18,7
.dbline 179
; if(set_bit(LCD_SIO_PIN, LCD_SIO))
in R24,0x16
ori R24,32
out 0x16,R24
tst R24
breq L45
.dbline 180
; r |= 0x40;
ori R16,64
xjmp L46
L45:
.dbline 182
; else
; r &= ~0x40;
andi R16,191
L46:
.dbline 184
; //Bit 2
; clr_bit(LCD_SCL_PORT, LCD_SCL);
cbi 0x18,7
.dbline 185
; set_bit(LCD_SCL_PORT, LCD_SCL);
sbi 0x18,7
.dbline 186
; if(set_bit(LCD_SIO_PIN, LCD_SIO))
in R24,0x16
ori R24,32
out 0x16,R24
tst R24
breq L47
.dbline 187
; r |= 0x20;
ori R16,32
xjmp L48
L47:
.dbline 189
; else
; r &= ~0x20;
andi R16,223
L48:
.dbline 191
; //Bit 3
; clr_bit(LCD_SCL_PORT, LCD_SCL);
cbi 0x18,7
.dbline 192
; set_bit(LCD_SCL_PORT, LCD_SCL);
sbi 0x18,7
.dbline 193
; if(set_bit(LCD_SIO_PIN, LCD_SIO))
in R24,0x16
ori R24,32
out 0x16,R24
tst R24
breq L49
.dbline 194
; r |= 0x10;
ori R16,16
xjmp L50
L49:
.dbline 196
; else
; r &= ~0x10;
andi R16,239
L50:
.dbline 198
; //Bit 4
; clr_bit(LCD_SCL_PORT, LCD_SCL);
cbi 0x18,7
.dbline 199
; set_bit(LCD_SCL_PORT, LCD_SCL);
sbi 0x18,7
.dbline 200
; if(set_bit(LCD_SIO_PIN, LCD_SIO))
in R24,0x16
ori R24,32
out 0x16,R24
tst R24
breq L51
.dbline 201
; r |= 0x08;
ori R16,8
xjmp L52
L51:
.dbline 203
; else
; r &= ~0x08;
andi R16,247
L52:
.dbline 205
; //Bit 5
; clr_bit(LCD_SCL_PORT, LCD_SCL);
cbi 0x18,7
.dbline 206
; set_bit(LCD_SCL_PORT, LCD_SCL);
sbi 0x18,7
.dbline 207
; if(set_bit(LCD_SIO_PIN, LCD_SIO))
in R24,0x16
ori R24,32
out 0x16,R24
tst R24
breq L53
.dbline 208
; r |= 0x04;
ori R16,4
xjmp L54
L53:
.dbline 210
; else
; r &= ~0x04;
andi R16,251
L54:
.dbline 212
; //Bit 6
; clr_bit(LCD_SCL_PORT, LCD_SCL);
cbi 0x18,7
.dbline 213
; set_bit(LCD_SCL_PORT, LCD_SCL);
sbi 0x18,7
.dbline 214
; if(set_bit(LCD_SIO_PIN, LCD_SIO))
in R24,0x16
ori R24,32
out 0x16,R24
tst R24
breq L55
.dbline 215
; r |= 0x02;
ori R16,2
xjmp L56
L55:
.dbline 217
; else
; r &= ~0x02;
andi R16,253
L56:
.dbline 219
; //Bit 7(LSB)
; clr_bit(LCD_SCL_PORT, LCD_SCL);
cbi 0x18,7
.dbline 220
; set_bit(LCD_SCL_PORT, LCD_SCL);
sbi 0x18,7
.dbline 221
; if(set_bit(LCD_SIO_PIN, LCD_SIO))
in R24,0x16
ori R24,32
out 0x16,R24
tst R24
breq L57
.dbline 222
; r |= 0x01;
ori R16,1
xjmp L58
L57:
.dbline 224
; else
; r &= ~0x01;
andi R16,254
L58:
.dbline 226
; //done
; return r;
.dbline -2
L42:
.dbline 0 ; func end
ret
.dbsym r r 16 c
.dbend
.dbfunc e LCD_Initialize _LCD_Initialize fV
; i -> R10
.even
_LCD_Initialize::
xcall push_gset3x
.dbline -1
.dbline 230
; }
;
; void LCD_Initialize(void)
; {
.dbline 233
; uchar i;
;
; set_bit(LCD_RST_PORT, LCD_RST); //set RST = H
sbi 0x18,3
.dbline 234
; set_bit(LCD_RST_DDR, LCD_RST); //set RST.DDR = 1
sbi 0x17,3
.dbline 235
; set_bit(LCD_CS_PORT, LCD_CS); //set CS = H
sbi 0x18,4
.dbline 236
; set_bit(LCD_CS_DDR, LCD_CS); //set CS.DDR = 1
sbi 0x17,4
.dbline 237
; clr_bit(LCD_SIO_PORT, LCD_SIO); //set SDI = L
cbi 0x18,5
.dbline 238
; clr_bit(LCD_SIO_DDR, LCD_SIO); //set SDI.DDR = 0
cbi 0x17,5
.dbline 239
; set_bit(LCD_SCL_PORT, LCD_SCL); //set SCK = H
sbi 0x18,7
.dbline 240
; set_bit(LCD_SCL_DDR, LCD_SCL); //set SCK.DDR = 1
sbi 0x17,7
.dbline 242
;
; LCD_Reset();
xcall _LCD_Reset
.dbline 244
;
; LCD_SendCommand(0x01); //software reset
ldi R16,1
xcall _LCD_SendCommand
.dbline 245
; LCD_DataOver();
sbi 0x18,4
.dbline 246
; LCD_Delay();
xcall _LCD_Delay
.dbline 248
;
; LCD_SendCommand(0xc6); //initial escape
ldi R16,198
xcall _LCD_SendCommand
.dbline 249
; LCD_DataOver();
sbi 0x18,4
.dbline 251
;
; LCD_SendCommand(0xb9); //refresh set
ldi R16,185
xcall _LCD_SendCommand
.dbline 252
; LCD_SendData(0x00);
clr R16
xcall _LCD_SendData
.dbline 253
; LCD_DataOver();
sbi 0x18,4
.dbline 255
;
; LCD_SendCommand(0xb6); //display control
ldi R16,182
xcall _LCD_SendCommand
.dbline 256
; LCD_SendData(0x80);
ldi R16,128
xcall _LCD_SendData
.dbline 257
; LCD_SendData(0x80);
ldi R16,128
xcall _LCD_SendData
.dbline 258
; LCD_SendData(0x81);
ldi R16,129
xcall _LCD_SendData
.dbline 261
; //LCD_SendData(0x7f);
; //LCD_SendData(0x14);
; LCD_SendData(84);
ldi R16,84
xcall _LCD_SendData
.dbline 262
; LCD_SendData(69);
ldi R16,69
xcall _LCD_SendData
.dbline 263
; LCD_SendData(82);
ldi R16,82
xcall _LCD_SendData
.dbline 264
; LCD_SendData(67);
ldi R16,67
xcall _LCD_SendData
.dbline 265
; LCD_DataOver();
sbi 0x18,4
.dbline 267
;
; LCD_SendCommand(0xb3); //gray scale position set
ldi R16,179
xcall _LCD_SendCommand
.dbline 268
; LCD_SendData(1);
ldi R16,1
xcall _LCD_SendData
.dbline 269
; LCD_SendData(2);
ldi R16,2
xcall _LCD_SendData
.dbline 270
; LCD_SendData(4);
ldi R16,4
xcall _LCD_SendData
.dbline 271
; LCD_SendData(8);
ldi R16,8
xcall _LCD_SendData
.dbline 272
; LCD_SendData(16);
ldi R16,16
xcall _LCD_SendData
.dbline 273
; LCD_SendData(30);
ldi R16,30
xcall _LCD_SendData
.dbline 274
; LCD_SendData(40);
ldi R16,40
xcall _LCD_SendData
.dbline 275
; LCD_SendData(50);
ldi R16,50
xcall _LCD_SendData
.dbline 276
; LCD_SendData(60);
ldi R16,60
xcall _LCD_SendData
.dbline 277
; LCD_SendData(70);
ldi R16,70
xcall _LCD_SendData
.dbline 278
; LCD_SendData(80);
ldi R16,80
xcall _LCD_SendData
.dbline 279
; LCD_SendData(90);
ldi R16,90
xcall _LCD_SendData
.dbline 280
; LCD_SendData(100);
ldi R16,100
xcall _LCD_SendData
.dbline 281
; LCD_SendData(110);
ldi R16,110
xcall _LCD_SendData
.dbline 282
; LCD_SendData(127);
ldi R16,127
xcall _LCD_SendData
.dbline 283
; LCD_DataOver();
sbi 0x18,4
.dbline 285
;
; LCD_SendCommand(0xb5); //gamma curve set
ldi R16,181
xcall _LCD_SendCommand
.dbline 286
; LCD_SendData(0x01);
ldi R16,1
xcall _LCD_SendData
.dbline 287
; LCD_DataOver();
sbi 0x18,4
.dbline 289
;
; LCD_SendCommand(0x36); //memery access control
ldi R16,54
xcall _LCD_SendCommand
.dbline 290
; LCD_SendData(0x00);
clr R16
xcall _LCD_SendData
.dbline 291
; LCD_DataOver();
sbi 0x18,4
.dbline 293
;
; LCD_SendCommand(0xbd); //common driver output select//很重要的
ldi R16,189
xcall _LCD_SendCommand
.dbline 294
; LCD_SendData(0x04);
ldi R16,4
xcall _LCD_SendData
.dbline 295
; LCD_DataOver();
sbi 0x18,4
.dbline 297
;
; LCD_SendCommand(0xbe); //power control
ldi R16,190
xcall _LCD_SendCommand
.dbline 298
; LCD_SendData(0x04);
ldi R16,4
xcall _LCD_SendData
.dbline 299
; LCD_DataOver();
sbi 0x18,4
.dbline 301
;
; LCD_SendCommand(0x11); //sleep out
ldi R16,17
xcall _LCD_SendCommand
.dbline 302
; LCD_DataOver();
sbi 0x18,4
.dbline 304
;
; LCD_SendCommand(0xba); //voltage control
ldi R16,186
xcall _LCD_SendCommand
.dbline 305
; LCD_SendData(127);
ldi R16,127
xcall _LCD_SendData
.dbline 306
; LCD_SendData(3);
ldi R16,3
xcall _LCD_SendData
.dbline 307
; LCD_DataOver();
sbi 0x18,4
.dbline 309
;
; LCD_SendCommand(0xb7); //temperature gradient set
ldi R16,183
xcall _LCD_SendCommand
.dbline 310
; for(i = 0; i < 14; i ++)
clr R10
xjmp L63
L60:
.dbline 311
clr R16
xcall _LCD_SendData
L61:
.dbline 310
inc R10
L63:
.dbline 310
mov R24,R10
cpi R24,14
brlo L60
.dbline 312
; LCD_SendData(0x00);
; LCD_DataOver();
sbi 0x18,4
.dbline 314
;
; LCD_SendCommand(0x29); //display ON
ldi R16,41
xcall _LCD_SendCommand
.dbline 315
; LCD_DataOver();
sbi 0x18,4
.dbline 317
;
; LCD_SendCommand(0x03); //booster voltage ON
ldi R16,3
xcall _LCD_SendCommand
.dbline 318
; LCD_DataOver();
sbi 0x18,4
.dbline 319
; LCD_Delay();
xcall _LCD_Delay
.dbline 321
;
; LCD_SendCommand(0x20); //display inversion OFF
ldi R16,32
xcall _LCD_SendCommand
.dbline 322
; LCD_DataOver();
sbi 0x18,4
.dbline 324
;
; LCD_SendCommand(0x3a); //interface pixel format
ldi R16,58
xcall _LCD_SendCommand
.dbline 325
; LCD_SendData(0x02);
ldi R16,2
xcall _LCD_SendData
.dbline 326
; LCD_DataOver();
sbi 0x18,4
.dbline 328
;
; LCD_SendCommand(0x2d); //colour set
ldi R16,45
xcall _LCD_SendCommand
.dbline 330
; //red
; LCD_SendData(0x00);
clr R16
xcall _LCD_SendData
.dbline 331
; LCD_SendData(0x02);
ldi R16,2
xcall _LCD_SendData
.dbline 332
; LCD_SendData(0x03);
ldi R16,3
xcall _LCD_SendData
.dbline 333
; LCD_SendData(0x04);
ldi R16,4
xcall _LCD_SendData
.dbline 334
; LCD_SendData(0x05);
ldi R16,5
xcall _LCD_SendData
.dbline 335
; LCD_SendData(0x06);
ldi R16,6
xcall _LCD_SendData
.dbline 336
; LCD_SendData(0x08);
ldi R16,8
xcall _LCD_SendData
.dbline 338
; //green
; LCD_SendData(0x0f);
ldi R16,15
xcall _LCD_SendData
.dbline 339
; LCD_SendData(0x00);
clr R16
xcall _LCD_SendData
.dbline 340
; LCD_SendData(0x02);
ldi R16,2
xcall _LCD_SendData
.dbline 341
; LCD_SendData(0x03);
ldi R16,3
xcall _LCD_SendData
.dbline 342
; LCD_SendData(0x04);
ldi R16,4
xcall _LCD_SendData
.dbline 343
; LCD_SendData(0x05);
ldi R16,5
xcall _LCD_SendData
.dbline 344
; LCD_SendData(0x06);
ldi R16,6
xcall _LCD_SendData
.dbline 345
; LCD_SendData(0x08);
ldi R16,8
xcall _LCD_SendData
.dbline 346
; LCD_SendData(0x0f);
ldi R16,15
xcall _LCD_SendData
.dbline 348
; //blue
; LCD_SendData(0x00);
clr R16
xcall _LCD_SendData
.dbline 349
; LCD_SendData(0x03);
ldi R16,3
xcall _LCD_SendData
.dbline 350
; LCD_SendData(0x06);
ldi R16,6
xcall _LCD_SendData
.dbline 351
; LCD_SendData(0x0f);
ldi R16,15
xcall _LCD_SendData
.dbline 352
; LCD_DataOver();
sbi 0x18,4
.dbline 354
;
; LCD_SendCommand(0x25); //write contrast
ldi R16,37
xcall _LCD_SendCommand
.dbline 355
; LCD_SendData(71);
ldi R16,71
xcall _LCD_SendData
.dbline 356
; LCD_DataOver();
sbi 0x18,4
.dbline 358
;
; LCD_BGColor = 0x00;
clr R2
sts _LCD_BGColor,R2
.dbline 359
; LCD_PenColor = 0xff;
ldi R24,255
sts _LCD_PenColor,R24
.dbline -2
L59:
xcall pop_gset3x
.dbline 0 ; func end
ret
.dbsym r i 10 c
.dbend
.dbfunc e LCD_ClearScreen _LCD_ClearScreen fV
; y -> R10
; x -> R12
.even
_LCD_ClearScreen::
xcall push_gset4x
.dbline -1
.dbline 363
; }
;
; void LCD_ClearScreen(void)
; {
.dbline 365
; uchar x, y;
; LCD_SendCommand(0x2a); //column address set
ldi R16,42
xcall _LCD_SendCommand
.dbline 366
; LCD_SendData(0);
clr R16
xcall _LCD_SendData
.dbline 367
; LCD_SendData(97);
ldi R16,97
xcall _LCD_SendData
.dbline 368
; LCD_DataOver();
sbi 0x18,4
.dbline 370
;
; LCD_SendCommand(0x2b); //page address set
ldi R16,43
xcall _LCD_SendCommand
.dbline 371
; LCD_SendData(0);
clr R16
xcall _LCD_SendData
.dbline 372
; LCD_SendData(66);
ldi R16,66
xcall _LCD_SendData
.dbline 373
; LCD_DataOver();
sbi 0x18,4
.dbline 375
;
; LCD_SendCommand(0x2c); //memory write
ldi R16,44
xcall _LCD_SendCommand
.dbline 376
; for(y = 0; y < 67; y ++)
clr R10
xjmp L68
L65:
.dbline 377
; for(x = 0; x < 98; x ++)
clr R12
xjmp L72
L69:
.dbline 378
lds R16,_LCD_BGColor
xcall _LCD_SendData
L70:
.dbline 377
inc R12
L72:
.dbline 377
mov R24,R12
cpi R24,98
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -