⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.lis

📁 ATMEGA16L 驱动的串口12864
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -