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

📄 main.lis

📁 AVR单片机mega8上的lcm_12832液晶驱动程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0094                   .dbline 78
 0094           ;       
 0094           ;       wait();
 0094 E9DF              rcall _wait
 0096                   .dbline 79
 0096           ;     PORTB = ((0<<PB0)|(0<<PB1));                      //RW = 0 WRITE  RS =0 INSTRUCTION
 0096 2224              clr R2
 0098 28BA              out 0x18,R2
 009A                   .dbline 80
 009A           ;     DDRD = 0xff;
 009A 8FEF              ldi R24,255
 009C 81BB              out 0x11,R24
 009E                   .dbline 81
 009E           ;       PORTD = i;
 009E 42BB              out 0x12,R20
 00A0                   .dbline 85
 00A0           ;       //setbit(PORTC,PC1);
 00A0           ;       //NOP();
 00A0           ;       //clrbit(PORTC,PC1);
 00A0           ;       PORTC = (1<<PC1);                       //E = 1
 00A0 82E0              ldi R24,2
 00A2 85BB              out 0x15,R24
 00A4                   .dbline 86
 00A4           ;       NOP();
 00A4 0000              nop
 00A6                   .dbline 87
 00A6           ;       PORTC = (0<<PC1);                       //E = 0 
 00A6 25BA              out 0x15,R2
 00A8                   .dbline -2
 00A8                   .dbline 88
 00A8           ; }
 00A8           L25:
 00A8 00D0              rcall pop_gset1
 00AA                   .dbline 0 ; func end
 00AA 0895              ret
 00AC                   .dbsym r i 20 c
 00AC                   .dbend
 00AC                   .dbfunc e send_d _send_d fV
 00AC           ;              d -> R20
                        .even
 00AC           _send_d::
 00AC 00D0              rcall push_gset1
 00AE 402F              mov R20,R16
 00B0                   .dbline -1
 00B0                   .dbline 91
 00B0           ; 
 00B0           ; void send_d(uchar d)
 00B0           ; {
 00B0                   .dbline 92
 00B0           ;       DDRB = ((1<<PB0)|(1<<PB1));
 00B0 83E0              ldi R24,3
 00B2 87BB              out 0x17,R24
 00B4                   .dbline 93
 00B4           ;       DDRC = 1<<PC1;
 00B4 82E0              ldi R24,2
 00B6 84BB              out 0x14,R24
 00B8                   .dbline 95
 00B8           ;       
 00B8           ;       wait();
 00B8 D7DF              rcall _wait
 00BA                   .dbline 96
 00BA           ;     PORTB = ((0<<PB0)|(1<<PB1));                      //RW = 0 WRITE  RS =1 DATA
 00BA 82E0              ldi R24,2
 00BC 88BB              out 0x18,R24
 00BE                   .dbline 97
 00BE           ;     DDRD = 0xff;
 00BE 8FEF              ldi R24,255
 00C0 81BB              out 0x11,R24
 00C2                   .dbline 98
 00C2           ;       PORTD = d;
 00C2 42BB              out 0x12,R20
 00C4                   .dbline 99
 00C4           ;       PORTC = (1<<PC1);                       //E = 1
 00C4 82E0              ldi R24,2
 00C6 85BB              out 0x15,R24
 00C8                   .dbline 100
 00C8           ;       NOP();
 00C8 0000              nop
 00CA                   .dbline 101
 00CA           ;       PORTC = (0<<PC1);                       //E = 0 
 00CA 2224              clr R2
 00CC 25BA              out 0x15,R2
 00CE                   .dbline -2
 00CE                   .dbline 105
 00CE           ;       //setbit(PORTC,PC1);
 00CE           ;       //NOP();
 00CE           ;       //clrbit(PORTC,PC1);
 00CE           ; }
 00CE           L26:
 00CE 00D0              rcall pop_gset1
 00D0                   .dbline 0 ; func end
 00D0 0895              ret
 00D2                   .dbsym r d 20 c
 00D2                   .dbend
 00D2                   .dbfunc e lw _lw fV
 00D2           ;              d -> y+4
 00D2           ;              y -> R22
 00D2           ;              x -> R20
                        .even
 00D2           _lw::
 00D2 00D0              rcall push_gset2
 00D4 622F              mov R22,R18
 00D6 402F              mov R20,R16
 00D8                   .dbline -1
 00D8                   .dbline 108
 00D8           ; 
 00D8           ; void lw(uchar x,uchar y,uchar d)
 00D8           ; {
 00D8                   .dbline 109
 00D8           ;       send_i(0xB8|y);
 00D8 062F              mov R16,R22
 00DA 086B              ori R16,184
 00DC D5DF              rcall _send_i
 00DE                   .dbline 110
 00DE           ;       send_i(0x40|x);
 00DE 042F              mov R16,R20
 00E0 0064              ori R16,64
 00E2 D2DF              rcall _send_i
 00E4                   .dbline 111
 00E4           ;       send_d(d);
 00E4 0C81              ldd R16,y+4
 00E6 E2DF              rcall _send_d
 00E8                   .dbline -2
 00E8                   .dbline 113
 00E8           ;       //PORTD = 0xff;
 00E8           ; }
 00E8           L27:
 00E8 00D0              rcall pop_gset2
 00EA                   .dbline 0 ; func end
 00EA 0895              ret
 00EC                   .dbsym l d 4 c
 00EC                   .dbsym r y 22 c
 00EC                   .dbsym r x 20 c
 00EC                   .dbend
 00EC                   .dbfunc e lcd_init _lcd_init fV
 00EC           ;              y -> <dead>
 00EC           ;              x -> <dead>
                        .even
 00EC           _lcd_init::
 00EC                   .dbline -1
 00EC                   .dbline 116
 00EC           ; 
 00EC           ; void lcd_init(void)
 00EC           ; {
 00EC                   .dbline 118
 00EC           ;       uchar x,y;
 00EC           ;       delay(100);             //>40ms  800
 00EC 04E6              ldi R16,100
 00EE 10E0              ldi R17,0
 00F0 90DF              rcall _delay
 00F2                   .dbline 120
 00F2           ;       
 00F2           ;       send_i(0x30);           //select basic instruction
 00F2 00E3              ldi R16,48
 00F4 C9DF              rcall _send_i
 00F6                   .dbline 121
 00F6           ;       delay(10);              //>100us
 00F6 0AE0              ldi R16,10
 00F8 10E0              ldi R17,0
 00FA 8BDF              rcall _delay
 00FC                   .dbline 122
 00FC           ;       send_i(0x30);           //set basic mode
 00FC 00E3              ldi R16,48
 00FE C4DF              rcall _send_i
 0100                   .dbline 123
 0100           ;       delay(10);              //>37us
 0100 0AE0              ldi R16,10
 0102 10E0              ldi R17,0
 0104 86DF              rcall _delay
 0106                   .dbline 124
 0106           ;       send_i(0x0c);           //turn on lcd  0c
 0106 0CE0              ldi R16,12
 0108 BFDF              rcall _send_i
 010A                   .dbline 125
 010A           ;       delay(10);              //>100us
 010A 0AE0              ldi R16,10
 010C 10E0              ldi R17,0
 010E 81DF              rcall _delay
 0110                   .dbline 126
 0110           ;       send_i(0x01);           //clr screen text
 0110 01E0              ldi R16,1
 0112 BADF              rcall _send_i
 0114                   .dbline 127
 0114           ;       delay(20);              //>10ms
 0114 04E1              ldi R16,20
 0116 10E0              ldi R17,0
 0118 7CDF              rcall _delay
 011A                   .dbline 128
 011A           ;       send_i(0x06);           //enter dot setup  06
 011A 06E0              ldi R16,6
 011C                   .dbline -2
 011C                   .dbline 129
 011C           ; }
 011C           L28:
 011C                   .dbline 0 ; func end
 011C B5CF              rjmp _send_i
 011E                   .dbsym l y 1 c
 011E                   .dbsym l x 1 c
 011E                   .dbend
 011E                   .dbfunc e putstring _putstring fV
 011E           ;              j -> R20
 011E           ;            str -> R20,R21
 011E           ;           addr -> R22
                        .even
 011E           _putstring::
 011E 00D0              rcall push_gset2
 0120 A901              movw R20,R18
 0122 602F              mov R22,R16
 0124                   .dbline -1
 0124                   .dbline 132
 0124           ; 
 0124           ; void putstring(uchar addr,uchar *str)
 0124           ; {
 0124                   .dbline 134
 0124           ;       uchar j;
 0124           ;       send_i(addr|0x80);
 0124 062F              mov R16,R22
 0126 0068              ori R16,128
 0128 AFDF              rcall _send_i
 012A                   .dbline 135
 012A           ;       for(j=0;j<3;j++)
 012A 4427              clr R20
 012C 09C0              rjmp L33
 012E           L30:
 012E                   .dbline 136
 012E                   .dbline 137
 012E 80E0              ldi R24,<_exampl
 0130 90E0              ldi R25,>_exampl
 0132 E42F              mov R30,R20
 0134 FF27              clr R31
 0136 E80F              add R30,R24
 0138 F91F              adc R31,R25
 013A 0081              ldd R16,z+0
 013C B7DF              rcall _send_d
 013E                   .dbline 138
 013E           L31:
 013E                   .dbline 135
 013E 4395              inc R20
 0140           L33:
 0140                   .dbline 135
 0140 4330              cpi R20,3
 0142 A8F3              brlo L30
 0144                   .dbline -2
 0144                   .dbline 139
 0144           ;               {
 0144           ;                       send_d(exampl[j]);      
 0144           ;               }
 0144           ; }
 0144           L29:
 0144 00D0              rcall pop_gset2
 0146                   .dbline 0 ; func end
 0146 0895              ret
 0148                   .dbsym r j 20 c
 0148                   .dbsym r str 20 pc
 0148                   .dbsym r addr 22 c
 0148                   .dbend
 0148                   .dbfunc e locateXY _locateXY fV
 0148           ;           temp -> R20
 0148           ;           posy -> R22
 0148           ;           posx -> R20
                        .even
 0148           _locateXY::
 0148 00D0              rcall push_gset2
 014A 622F              mov R22,R18
 014C 402F              mov R20,R16
 014E                   .dbline -1
 014E                   .dbline 145
 014E           ; 
 014E           ; /*=======================================================
 014E           ;  显示光标定位
 014E           ; =======================================================*/
 014E           ; 
 014E           ; void locateXY( uchar posx,uchar posy) {
 014E                   .dbline 149
 014E           ; 
 014E           ;     uchar temp;
 014E           ; 
 014E           ;       temp = posx & 0xf;
 014E 4F70              andi R20,15
 0150                   .dbline 150
 0150           ;       posy &= 0x1;
 0150 6170              andi R22,1
 0152                   .dbline 151
 0152           ;       if ( posy )temp |= 0x40;
 0152 09F0              breq L35
 0154                   .dbline 151
 0154 4064              ori R20,64
 0156           L35:
 0156                   .dbline 152

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -