📄 jhd12864.lis
字号:
02A2 8150 subi R24,1
02A4 8983 std y+1,R24
02A6 .dbline 290
02A6 ; white_y = 0x90;
02A6 80E9 ldi R24,144
02A8 8A83 std y+2,R24
02AA .dbline 291
02AA ; clr_x = 0x80;
02AA 40E8 ldi R20,128
02AC .dbline 292
02AC ; clr_y = 0x90;
02AC A82E mov R10,R24
02AE .dbline 293
02AE ; }
02AE 17C0 rjmp L69
02B0 L68:
02B0 .dbline 294
02B0 ; else if(y==3)
02B0 8E2D mov R24,R14
02B2 8330 cpi R24,3
02B4 49F4 brne L70
02B6 X23:
02B6 .dbline 295
02B6 ; {
02B6 .dbline 296
02B6 ; white_x = (0x88+x-1);
02B6 862F mov R24,R22
02B8 8857 subi R24,120 ; addi 136
02BA 8150 subi R24,1
02BC 8983 std y+1,R24
02BE .dbline 297
02BE ; white_y = 0x80;
02BE 80E8 ldi R24,128
02C0 8A83 std y+2,R24
02C2 .dbline 298
02C2 ; clr_x = 0x88;
02C2 48E8 ldi R20,136
02C4 .dbline 299
02C4 ; clr_y = 0x80;
02C4 A82E mov R10,R24
02C6 .dbline 300
02C6 ; }
02C6 0BC0 rjmp L71
02C8 L70:
02C8 .dbline 301
02C8 ; else if(y==4)
02C8 8E2D mov R24,R14
02CA 8430 cpi R24,4
02CC 41F4 brne L72
02CE X24:
02CE .dbline 302
02CE ; {
02CE .dbline 303
02CE ; white_x = (0x88+x-1);
02CE 862F mov R24,R22
02D0 8857 subi R24,120 ; addi 136
02D2 8150 subi R24,1
02D4 8983 std y+1,R24
02D6 .dbline 304
02D6 ; white_y = 0x90;
02D6 80E9 ldi R24,144
02D8 8A83 std y+2,R24
02DA .dbline 305
02DA ; clr_x = 0x88;
02DA 48E8 ldi R20,136
02DC .dbline 306
02DC ; clr_y = 0x90;
02DC A82E mov R10,R24
02DE .dbline 307
02DE ; }
02DE L72:
02DE L71:
02DE L69:
02DE L67:
02DE .dbline 308
02DE ; if(clear==0)//要反白时,先将整行的液晶全部清成不反白(此处行指y)
02DE 0F84 ldd R0,y+15
02E0 0020 tst R0
02E2 E9F4 brne L74
02E4 X25:
02E4 .dbline 309
02E4 ; {
02E4 .dbline 310
02E4 ; for(i=0;i<16;i++ ) //16行
02E4 6627 clr R22
02E6 19C0 rjmp L79
02E8 L76:
02E8 .dbline 311
02E8 ; {
02E8 .dbline 312
02E8 ; W_1byte(0,0,clr_y++); //设置绘图区的Y地址坐标0
02E8 2A2C mov R2,R10
02EA 822D mov R24,R2
02EC 8F5F subi R24,255 ; addi 1
02EE A82E mov R10,R24
02F0 2882 std y+0,R2
02F2 2227 clr R18
02F4 0027 clr R16
02F6 9ADE rcall _W_1byte
02F8 .dbline 313
02F8 ; W_1byte(0,0,clr_x); //设置绘图区的X地址坐标0
02F8 4883 std y+0,R20
02FA 2227 clr R18
02FC 0027 clr R16
02FE 96DE rcall _W_1byte
0300 .dbline 314
0300 ; for(j=0;j<16;j++) //
0300 EE24 clr R14
0302 07C0 rjmp L83
0304 L80:
0304 .dbline 315
0304 ; {
0304 .dbline 316
0304 ; W_1byte(0,1,0x00); //清成不反白
0304 2224 clr R2
0306 2882 std y+0,R2
0308 21E0 ldi R18,1
030A 0027 clr R16
030C 8FDE rcall _W_1byte
030E .dbline 317
030E ; asm("nop");
030E 0000 nop
0310 .dbline 318
0310 ; }
0310 L81:
0310 .dbline 314
0310 E394 inc R14
0312 L83:
0312 .dbline 314
0312 8E2D mov R24,R14
0314 8031 cpi R24,16
0316 B0F3 brlo L80
0318 X26:
0318 .dbline 319
0318 ; }
0318 L77:
0318 .dbline 310
0318 6395 inc R22
031A L79:
031A .dbline 310
031A 6031 cpi R22,16
031C 28F3 brlo L76
031E X27:
031E .dbline 320
031E ; }
031E L74:
031E .dbline 321
031E ; asm("nop");
031E 0000 nop
0320 .dbline 322
0320 ; for(i=0;i<16;i++ ) //16行,因为是16*16汉字
0320 6627 clr R22
0322 22C0 rjmp L87
0324 L84:
0324 .dbline 323
0324 ; {
0324 .dbline 324
0324 ; W_1byte(0,0,white_y++); //设置绘图区的Y地址坐标0
0324 2A80 ldd R2,y+2
0326 822D mov R24,R2
0328 8F5F subi R24,255 ; addi 1
032A 8A83 std y+2,R24
032C 2882 std y+0,R2
032E 2227 clr R18
0330 0027 clr R16
0332 7CDE rcall _W_1byte
0334 .dbline 325
0334 ; W_1byte(0,0,white_x); //设置绘图区的X地址坐标0
0334 0980 ldd R0,y+1
0336 0882 std y+0,R0
0338 2227 clr R18
033A 0027 clr R16
033C 77DE rcall _W_1byte
033E .dbline 326
033E ; for(j=0;j<white_end_x;j++) //
033E EE24 clr R14
0340 10C0 rjmp L91
0342 L88:
0342 .dbline 327
0342 ; {
0342 .dbline 328
0342 ; if(clear==1)
0342 8F85 ldd R24,y+15
0344 8130 cpi R24,1
0346 31F4 brne L92
0348 X28:
0348 .dbline 329
0348 ; {
0348 .dbline 330
0348 ; W_1byte(0,1,0x00); //取消这一行的8个点的反白,液晶地址自动加1
0348 2224 clr R2
034A 2882 std y+0,R2
034C 21E0 ldi R18,1
034E 0027 clr R16
0350 6DDE rcall _W_1byte
0352 .dbline 332
0352 ; //(此处行指一个一个液晶点所组成的行)
0352 ; }
0352 05C0 rjmp L93
0354 L92:
0354 .dbline 334
0354 ; else
0354 ; {
0354 .dbline 335
0354 ; W_1byte(0,1,0xff); //反白这一行的8个点,液晶地址自动加1
0354 8FEF ldi R24,255
0356 8883 std y+0,R24
0358 21E0 ldi R18,1
035A 0027 clr R16
035C 67DE rcall _W_1byte
035E .dbline 337
035E ; //(此处行指一个一个液晶点所组成的行)
035E ; }
035E L93:
035E .dbline 338
035E ; asm("nop");
035E 0000 nop
0360 .dbline 339
0360 ; }
0360 L89:
0360 .dbline 326
0360 E394 inc R14
0362 L91:
0362 .dbline 326
0362 EC14 cp R14,R12
0364 70F3 brlo L88
0366 X29:
0366 .dbline 340
0366 ; }
0366 L85:
0366 .dbline 322
0366 6395 inc R22
0368 L87:
0368 .dbline 322
0368 6031 cpi R22,16
036A E0F2 brlo L84
036C X30:
036C .dbline -2
036C L65:
036C .dbline 0 ; func end
036C 2396 adiw R28,3
036E 00C0 rjmp pop_xgsetF0FC
0370 .dbsym r clr_y 10 c
0370 .dbsym r clr_x 20 c
0370 .dbsym l white_y 2 c
0370 .dbsym l white_x 1 c
0370 .dbsym r i 22 c
0370 .dbsym r white_end_x 12 c
0370 .dbsym r j 14 c
0370 .dbsym l clear 15 c
0370 .dbsym l end_x 13 c
0370 .dbsym r y 14 c
0370 .dbsym r x 22 c
0370 .dbend
0370 .dbfunc e LCD_Init _LCD_Init fV
0370 ; cmd -> R20
.even
0370 _LCD_Init::
0370 4A93 st -y,R20
0372 2197 sbiw R28,1
0374 .dbline -1
0374 .dbline 361
0374 ; }
0374 ;
0374 ;
0374 ;
0374 ;
0374 ;
0374 ;
0374 ; //上面是通用函数,与项目有关的函数在此
0374 ;
0374 ; /*
0374 ; void lcd_port_init(void)
0374 ; {
0374 ; PORTB |=((1<<CS)|(1<<SID)|(1<<SCLK)|(1<<RST)); //
0374 ; DDRB |= ((1<<CS)|(1<<SID)|(1<<SCLK)|(1<<PSB)|(1<<RST)); //PB口全部设为输出模式
0374 ; }
0374 ;
0374 ; */
0374 ;
0374 ; /******************************************************************/
0374 ; void LCD_Init(void)
0374 ; {
0374 .dbline 365
0374 ; uchar cmd;
0374 ;
0374 ; //Clr_PSB();
0374 ; Clr_CS();
0374 AD98 cbi 0x15,5
0376 .dbline 366
0376 ; Clr_SID();
0376 AE98 cbi 0x15,6
0378 .dbline 367
0378 ; Clr_SCLK();
0378 AF98 cbi 0x15,7
037A .dbline 369
037A ;
037A ; cmd=0x30; //功能设置 8位数据,基本指令
037A 40E3 ldi R20,48
037C .dbline 370
037C ; W_1byte(0,0,cmd);
037C 4883 std y+0,R20
037E 2227 clr R18
0380 0027 clr R16
0382 54DE rcall _W_1byte
0384 .dbline 371
0384 ; delay_1ms(2);
0384 02E0 ldi R16,2
0386 10E0 ldi R17,0
0388 45DE rcall _delay_1ms
038A .dbline 372
038A ; cmd=0x0C; //显示状态 ON,游标OFF,反白OFF
038A 4CE0 ldi R20,12
038C .dbline 373
038C ; W_1byte(0,0,cmd); //写指令
038C 4883 std y+0,R20
038E 2227 clr R18
0390 0027 clr R16
0392 4CDE rcall _W_1byte
0394 .dbline 374
0394 ; delay_1ms(2);
0394 02E0 ldi R16,2
0396 10E0 ldi R17,0
0398 3DDE rcall _delay_1ms
039A .dbline 375
039A ; cmd=0x01; //清除显示
039A 41E0 ldi R20,1
039C .dbline 376
039C ; W_1byte(0,0,cmd); //写指令
039C 4883 std y+0,R20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -