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

📄 main.lis

📁 avr单片机与flash存储器通信程序,调试通过,希望对大家有所帮助.
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 01FE AA9A              sbi 0x15,2
 0200                   .dbline 120
 0200           ; // RW=0;
 0200           ;  PORTA=lcddata;
 0200 4BBB              out 0x1b,R20
 0202                   .dbline 122
 0202           ; // E=0;
 0202           ;  PORTC&=~E;
 0202 AC98              cbi 0x15,4
 0204                   .dbline 123
 0204           ;  delay(1);
 0204 01E0              ldi R16,1
 0206 10E0              ldi R17,0
 0208 8ADF              rcall _delay
 020A                   .dbline -2
 020A           L50:
 020A 00D0              rcall pop_gset1
 020C                   .dbline 0 ; func end
 020C 0895              ret
 020E                   .dbsym r lcddata 20 c
 020E                   .dbend
 020E                   .dbfunc e writecom _writecom fV
 020E           ;        lcddata -> R20
                        .even
 020E           _writecom::
 020E 00D0              rcall push_gset1
 0210 402F              mov R20,R16
 0212                   .dbline -1
 0212                   .dbline 127
 0212           ; }
 0212           ; /////////////////////////////////
 0212           ; void writecom(uchar lcddata)
 0212           ; {
 0212                   .dbline 129
 0212           ; // E=1;
 0212           ;  PORTC|=E;
 0212 AC9A              sbi 0x15,4
 0214                   .dbline 131
 0214           ; // RS=0;
 0214           ;  PORTC&=~RS;
 0214 AA98              cbi 0x15,2
 0216                   .dbline 133
 0216           ; // RW=0;
 0216           ;  PORTA=lcddata;
 0216 4BBB              out 0x1b,R20
 0218                   .dbline 135
 0218           ; // E=0; 
 0218           ;  PORTC&=~E;
 0218 AC98              cbi 0x15,4
 021A                   .dbline 136
 021A           ;  delay(1);
 021A 01E0              ldi R16,1
 021C 10E0              ldi R17,0
 021E 7FDF              rcall _delay
 0220                   .dbline -2
 0220           L51:
 0220 00D0              rcall pop_gset1
 0222                   .dbline 0 ; func end
 0222 0895              ret
 0224                   .dbsym r lcddata 20 c
 0224                   .dbend
 0224                   .dbfunc e writeline _writeline fV
 0224           ;             pt -> R20,R21
 0224           ;              x -> R22
                        .even
 0224           _writeline::
 0224 00D0              rcall push_gset2
 0226 A901              movw R20,R18
 0228 602F              mov R22,R16
 022A                   .dbline -1
 022A                   .dbline 140
 022A           ; }
 022A           ; 
 022A           ; void writeline(uchar x,uchar const *pt)
 022A           ; {
 022A                   .dbline 141
 022A           ;  if(x==0)
 022A 6623              tst R22
 022C 29F4              brne L53
 022E                   .dbline 142
 022E           ;  {
 022E                   .dbline 143
 022E           ;   writecom(0x01);
 022E 01E0              ldi R16,1
 0230 EEDF              rcall _writecom
 0232                   .dbline 144
 0232           ;   writecom(0x80);
 0232 00E8              ldi R16,128
 0234 ECDF              rcall _writecom
 0236                   .dbline 145
 0236           ;  }
 0236 07C0              rjmp L54
 0238           L53:
 0238                   .dbline 147
 0238                   .dbline 148
 0238 E62F              mov R30,R22
 023A FF27              clr R31
 023C 3197              sbiw R30,1
 023E E40F              add R30,R20
 0240 F51F              adc R31,R21
 0242 0491              lpm R16,Z
 0244 D9DF              rcall _writedata
 0246                   .dbline 149
 0246           L54:
 0246                   .dbline -2
 0246           L52:
 0246 00D0              rcall pop_gset2
 0248                   .dbline 0 ; func end
 0248 0895              ret
 024A                   .dbsym r pt 20 pkc
 024A                   .dbsym r x 22 c
 024A                   .dbend
 024A                   .dbfunc e initlcd _initlcd fV
                        .even
 024A           _initlcd::
 024A                   .dbline -1
 024A                   .dbline 154
 024A           ;  else
 024A           ;  {
 024A           ;   writedata(pt[x-1]);
 024A           ;  }
 024A           ; }
 024A           ; 
 024A           ; ///////////////////////////////////
 024A           ; void initlcd()
 024A           ; {
 024A                   .dbline 155
 024A           ;  writecom(0x01);
 024A 01E0              ldi R16,1
 024C E0DF              rcall _writecom
 024E                   .dbline 156
 024E           ;  writecom(0x38);
 024E 08E3              ldi R16,56
 0250 DEDF              rcall _writecom
 0252                   .dbline 157
 0252           ;  writecom(0x0f);
 0252 0FE0              ldi R16,15
 0254 DCDF              rcall _writecom
 0256                   .dbline 158
 0256           ;  writecom(0x06);
 0256 06E0              ldi R16,6
 0258 DADF              rcall _writecom
 025A                   .dbline 159
 025A           ;  writecom(0x01);
 025A 01E0              ldi R16,1
 025C D8DF              rcall _writecom
 025E                   .dbline 160
 025E           ;  writecom(0x80);
 025E 00E8              ldi R16,128
 0260 D6DF              rcall _writecom
 0262                   .dbline -2
 0262           L55:
 0262                   .dbline 0 ; func end
 0262 0895              ret
 0264                   .dbend
 0264                   .dbfunc e GetKey _GetKey fc
 0264           ;           temp -> R20
 0264           ;            key -> R22
                        .even
 0264           _GetKey::
 0264 00D0              rcall push_gset2
 0266                   .dbline -1
 0266                   .dbline 169
 0266           ; }
 0266           ; ///////////////////////////////////
 0266           ; 
 0266           ; 
 0266           ; 
 0266           ; 
 0266           ; //////////////////////////////////
 0266           ; uchar GetKey(void)
 0266           ; {
 0266                   .dbline 174
 0266           ;  uchar key;
 0266           ;  uchar temp;
 0266           ;  //temp的高4位是按下的列
 0266           ;  //temp低4位是按下的行
 0266           ;  DDRD&=~(C0+C1+C2);//输
 0266 81B3              in R24,0x11
 0268 837E              andi R24,227
 026A 81BB              out 0x11,R24
 026C                   .dbline 175
 026C           ;  DDRD|=R0+R1;//输
 026C 81B3              in R24,0x11
 026E 806C              ori R24,192
 0270 81BB              out 0x11,R24
 0272                   .dbline 176
 0272           ;  PORTD&=~(R0+R1);
 0272 82B3              in R24,0x12
 0274 8F73              andi R24,63
 0276 82BB              out 0x12,R24
 0278                   .dbline 177
 0278           ;  key=PIND;
 0278 60B3              in R22,0x10
 027A                   .dbline 178
 027A           ;  key>>=2;
 027A 6695              lsr R22
 027C 6695              lsr R22
 027E                   .dbline 179
 027E           ;  key&=0x07;
 027E 6770              andi R22,7
 0280                   .dbline 180
 0280           ;  if(key!=0x07)
 0280 6730              cpi R22,7
 0282 D1F0              breq L57
 0284                   .dbline 181
 0284           ;  {
 0284                   .dbline 182
 0284           ;         delay(1);
 0284 01E0              ldi R16,1
 0286 10E0              ldi R17,0
 0288 4ADF              rcall _delay
 028A                   .dbline 183
 028A           ;         key=PIND;
 028A 60B3              in R22,0x10
 028C                   .dbline 184
 028C           ;         key>>=2;
 028C 6695              lsr R22
 028E 6695              lsr R22
 0290                   .dbline 185
 0290           ;         key&=0x07;
 0290 6770              andi R22,7
 0292                   .dbline 186
 0292           ;         if(key!=0x07) 
 0292 6730              cpi R22,7
 0294 89F0              breq L59
 0296                   .dbline 187
 0296           ;                 {
 0296                   .dbline 189
 0296           ;                  //确实有键按下
 0296           ;                       temp=key;
 0296 462F              mov R20,R22
 0298                   .dbline 190
 0298           ;                       DDRD|=C0+C1+C2;//输出
 0298 81B3              in R24,0x11
 029A 8C61              ori R24,28
 029C 81BB              out 0x11,R24
 029E                   .dbline 191
 029E           ;                       DDRD&=~(R0+R1);//输入
 029E 81B3              in R24,0x11
 02A0 8F73              andi R24,63
 02A2 81BB              out 0x11,R24
 02A4                   .dbline 192
 02A4           ;                       PORTD|=C0+C1+C2;
 02A4 82B3              in R24,0x12
 02A6 8C61              ori R24,28
 02A8 82BB              out 0x12,R24
 02AA                   .dbline 193
 02AA           ;                       key=PIND;
 02AA 60B3              in R22,0x10
 02AC                   .dbline 194
 02AC           ;                       key>>=2;
 02AC 6695              lsr R22
 02AE 6695              lsr R22
 02B0                   .dbline 195
 02B0           ;                       key&=0x30;
 02B0 6073              andi R22,48
 02B2                   .dbline 196
 02B2           ;                       temp+=key;
 02B2 460F              add R20,R22
 02B4                   .dbline 197
 02B4           ;                       return temp;
 02B4 042F              mov R16,R20
 02B6 01C0              rjmp L56
 02B8           L59:
 02B8                   .dbline 199
 02B8           ;                  }
 02B8           ;  }
 02B8           L57:
 02B8                   .dbline 200
 02B8           ;   return 0xff;
 02B8 0FEF              ldi R16,255
 02BA                   .dbline -2
 02BA           L56:
 02BA 00D0              rcall pop_gset2
 02BC                   .dbline 0 ; func end
 02BC 0895              ret
 02BE                   .dbsym r temp 20 c
 02BE                   .dbsym r key 22 c
 02BE                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\ATMega8515\测试程序\main.c
 0000           _temp::
 0000                   .blkb 1
 0001                   .dbsym e temp _temp c
 0001           _key::
 0001                   .blkb 1
 0002                   .dbsym e key _key c
                        .area data(ram, con, rel)
 0008                   .dbfile C:\ATMega8515\测试程序\main.c
 0008           L2:
 0008                   .blkb 46
                        .area idata
 0008 2D2D2D2D2D2D2D2D2D2D2D5465737420  .byte 45,45,45,45,45,45,45,45,45,45,45,'T,'e,'s,'t,32
 0018 466F722041544D656761383531352D2D  .byte 'F,'o,'r,32,'A,'T,'M,'e,'g,'a,56,53,49,53,45,45
 0028 2D2D2D2D2D2D2D2D2D2D2D2D0A00      .byte 45,45,45,45,45,45,45,45,45,45,45,45,10,0
                        .area data(ram, con, rel)
 0036                   .dbfile C:\ATMega8515\测试程序\main.c

⌨️ 快捷键说明

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