📄 lcd.lis
字号:
00BC 07D0 xcall _write
00BE .dbline 53
00BE ; delaynms(10);
00BE 0AE0 ldi R16,10
00C0 10E0 ldi R17,0
00C2 CEDF xcall _delaynms
00C4 .dbline 54
00C4 ; write(0,0x60);
00C4 20E6 ldi R18,96
00C6 0027 clr R16
00C8 01D0 xcall _write
00CA .dbline -2
00CA L27:
00CA .dbline 0 ; func end
00CA 0895 ret
00CC .dbend
00CC .dbfunc e write _write fV
00CC ; Ldata -> R20
00CC ; Hdata -> R22
00CC ; start_data -> R10
00CC ; ddata -> R20
00CC ; start -> R22
.even
00CC _write::
00CC 0E940000 xcall push_gset3
00D0 422F mov R20,R18
00D2 602F mov R22,R16
00D4 .dbline -1
00D4 .dbline 58
00D4 ; }
00D4 ;
00D4 ; void write(uchar start,uchar ddata) //写指令或数据
00D4 ; {
00D4 .dbline 60
00D4 ; uchar start_data,Hdata,Ldata;
00D4 ; if(start==0)
00D4 6623 tst R22
00D6 19F4 brne L29
00D8 .dbline 61
00D8 ; start_data = 0xf8; //写指令
00D8 88EF ldi R24,248
00DA A82E mov R10,R24
00DC 02C0 xjmp L30
00DE L29:
00DE .dbline 63
00DE ; else
00DE ; start_data = 0xfa; //写数据
00DE 8AEF ldi R24,250
00E0 A82E mov R10,R24
00E2 L30:
00E2 .dbline 64
00E2 ; Hdata = ddata&0xf0; //取高4位
00E2 642F mov R22,R20
00E4 607F andi R22,240
00E6 .dbline 65
00E6 ; Ldata = (ddata<<4)&0xf0; //取低4位
00E6 842F mov R24,R20
00E8 8F70 andi R24,#0x0F
00EA 8295 swap R24
00EC 807F andi R24,240
00EE 482F mov R20,R24
00F0 .dbline 66
00F0 ; sendbyte(start_data); //发送起始信号
00F0 0A2D mov R16,R10
00F2 10D0 xcall _sendbyte
00F4 .dbline 67
00F4 ; delaynms(100);
00F4 04E6 ldi R16,100
00F6 10E0 ldi R17,0
00F8 B3DF xcall _delaynms
00FA .dbline 68
00FA ; sendbyte(Hdata); //发送高四位
00FA 062F mov R16,R22
00FC 0BD0 xcall _sendbyte
00FE .dbline 69
00FE ; delaynms(50);
00FE 02E3 ldi R16,50
0100 10E0 ldi R17,0
0102 AEDF xcall _delaynms
0104 .dbline 70
0104 ; sendbyte(Ldata); //发送低四位
0104 042F mov R16,R20
0106 06D0 xcall _sendbyte
0108 .dbline 71
0108 ; delaynms(50);
0108 02E3 ldi R16,50
010A 10E0 ldi R17,0
010C A9DF xcall _delaynms
010E .dbline -2
010E L28:
010E 0E940000 xcall pop_gset3
0112 .dbline 0 ; func end
0112 0895 ret
0114 .dbsym r Ldata 20 c
0114 .dbsym r Hdata 22 c
0114 .dbsym r start_data 10 c
0114 .dbsym r ddata 20 c
0114 .dbsym r start 22 c
0114 .dbend
0114 .dbfunc e sendbyte _sendbyte fV
0114 ; i -> R20
0114 ; bbyte -> R22
.even
0114 _sendbyte::
0114 0E940000 xcall push_gset2
0118 602F mov R22,R16
011A .dbline -1
011A .dbline 75
011A ; }
011A ;
011A ; void sendbyte(uchar bbyte) //发送一个字节
011A ; {
011A .dbline 77
011A ; unsigned char i;
011A ; for(i=0;i<8;i++)
011A 4427 clr R20
011C 11C0 xjmp L35
011E L32:
011E .dbline 78
011E ; {
011E .dbline 80
011E ;
011E ; if((bbyte&0x80)==1) //取出最高位
011E 862F mov R24,R22
0120 8078 andi R24,128
0122 8130 cpi R24,1
0124 11F4 brne L36
0126 .dbline 81
0126 ; {ST_SID;}
0126 .dbline 81
0126 DE9A sbi 0x1b,6
0128 .dbline 81
0128 01C0 xjmp L37
012A L36:
012A .dbline 83
012A ; else
012A ; {CLS_SID;}
012A .dbline 83
012A DE98 cbi 0x1b,6
012C .dbline 83
012C L37:
012C .dbline 84
012C DF9A sbi 0x1b,7
012E .dbline 85
012E 04E6 ldi R16,100
0130 10E0 ldi R17,0
0132 68DF xcall _delay_nus
0134 .dbline 86
0134 DF98 cbi 0x1b,7
0136 .dbline 87
0136 660F lsl R22
0138 .dbline 88
0138 04E6 ldi R16,100
013A 10E0 ldi R17,0
013C 63DF xcall _delay_nus
013E .dbline 89
013E L33:
013E .dbline 77
013E 4395 inc R20
0140 L35:
0140 .dbline 77
0140 4830 cpi R20,8
0142 68F3 brlo L32
0144 .dbline -2
0144 L31:
0144 0E940000 xcall pop_gset2
0148 .dbline 0 ; func end
0148 0895 ret
014A .dbsym r i 20 c
014A .dbsym r bbyte 22 c
014A .dbend
014A .dbfunc e lcdtest _lcdtest fV
014A ; i -> R20
014A ; j -> R22
.even
014A _lcdtest::
014A 0E940000 xcall push_gset2
014E .dbline -1
014E .dbline 93
014E ; ST_SCLK;
014E ; delay_nus(100);
014E ; CLS_SCLK;
014E ; bbyte<<=1;
014E ; delay_nus(100);
014E ; }
014E ; }
014E ;
014E ; void lcdtest(void) //图形方式下屏幕全黑
014E ; {
014E .dbline 95
014E ; uchar i,j;
014E ; for(i=0;i<32;i++)
014E 4427 clr R20
0150 10C0 xjmp L42
0152 L39:
0152 .dbline 96
0152 ; {
0152 .dbline 97
0152 ; write(0,0x80+i);write(0,0x80);
0152 242F mov R18,R20
0154 2058 subi R18,128 ; addi 128
0156 0027 clr R16
0158 B9DF xcall _write
015A .dbline 97
015A 20E8 ldi R18,128
015C 0027 clr R16
015E B6DF xcall _write
0160 .dbline 98
0160 6627 clr R22
0162 04C0 xjmp L46
0164 L43:
0164 .dbline 98
0164 2FEF ldi R18,255
0166 01E0 ldi R16,1
0168 B1DF xcall _write
016A L44:
016A .dbline 98
016A 6395 inc R22
016C L46:
016C .dbline 98
016C 6031 cpi R22,16
016E D0F3 brlo L43
0170 .dbline 99
0170 L40:
0170 .dbline 95
0170 4395 inc R20
0172 L42:
0172 .dbline 95
0172 4032 cpi R20,32
0174 70F3 brlo L39
0176 .dbline 100
0176 ; for(j=0;j<16;j++)write(1,0xff);
0176 ; }
0176 ; for(i=0;i<32;i++)
0176 4427 clr R20
0178 10C0 xjmp L50
017A L47:
017A .dbline 101
017A ; {
017A .dbline 102
017A ; write(0,0x80+i);write(0,0x88);
017A 242F mov R18,R20
017C 2058 subi R18,128 ; addi 128
017E 0027 clr R16
0180 A5DF xcall _write
0182 .dbline 102
0182 28E8 ldi R18,136
0184 0027 clr R16
0186 A2DF xcall _write
0188 .dbline 103
0188 6627 clr R22
018A 04C0 xjmp L54
018C L51:
018C .dbline 103
018C 2FEF ldi R18,255
018E 01E0 ldi R16,1
0190 9DDF xcall _write
0192 L52:
0192 .dbline 103
0192 6395 inc R22
0194 L54:
0194 .dbline 103
0194 6031 cpi R22,16
0196 D0F3 brlo L51
0198 .dbline 104
0198 L48:
0198 .dbline 100
0198 4395 inc R20
019A L50:
019A .dbline 100
019A 4032 cpi R20,32
019C 70F3 brlo L47
019E .dbline -2
019E L38:
019E 0E940000 xcall pop_gset2
01A2 .dbline 0 ; func end
01A2 0895 ret
01A4 .dbsym r i 20 c
01A4 .dbsym r j 22 c
01A4 .dbend
01A4 .dbfunc e lcdcls _lcdcls fV
01A4 ; i -> R20
01A4 ; j -> R22
.even
01A4 _lcdcls::
01A4 0E940000 xcall push_gset2
01A8 .dbline -1
01A8 .dbline 108
01A8 ; for(j=0;j<16;j++) write(1,0xff);
01A8 ; }
01A8 ; }
01A8 ;
01A8 ; void lcdcls(void) //图形方式下清屏
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -