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

📄 newmain.lis

📁 单片机MEGA128的BOOTLOADER程序。
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0220                   .dbsym r File 20 pc
 0220                   .dbend
 0220                   .dbfunc e uart1_init _uart1_init fV
                        .even
 0220           _uart1_init::
 0220                   .dbline -1
 0220                   .dbline 180
 0220           ; }
 0220           ; //UART1 initialize
 0220           ; // desired baud rate:57600
 0220           ; // actual baud rate:57599 (0.0%)
 0220           ; // char size: 8 bit
 0220           ; // parity: Disabled
 0220           ; void uart1_init(void)
 0220           ; {
 0220                   .dbline 181
 0220           ;  UCSR1B = 0x00; //disable while setting baud rate
 0220 2224              clr R2
 0222 20929A00          sts 154,R2
 0226                   .dbline 182
 0226           ;  UCSR1A = 0x00;
 0226 20929B00          sts 155,R2
 022A                   .dbline 183
 022A           ;  UCSR1C = 0x06;
 022A 86E0              ldi R24,6
 022C 80939D00          sts 157,R24
 0230                   .dbline 184
 0230           ;  UBRR1L = 0x0B; //set baud rate lo
 0230 8BE0              ldi R24,11
 0232 80939900          sts 153,R24
 0236                   .dbline 185
 0236           ;  UBRR1H = 0x00; //set baud rate hi
 0236 20929800          sts 152,R2
 023A                   .dbline 186
 023A           ;  UCSR1B = 0x18;
 023A 88E1              ldi R24,24
 023C 80939A00          sts 154,R24
 0240                   .dbline -2
 0240           L51:
 0240                   .dbline 0 ; func end
 0240 0895              ret
 0242                   .dbend
 0242                   .dbfunc e RecChar _RecChar fc
                        .even
 0242           _RecChar::
 0242                   .dbline -1
 0242                   .dbline 203
 0242           ; }
 0242           ; /*//UART1 initialize
 0242           ; // desired baud rate:19200
 0242           ; // actual baud rate:19200 (0.0%)
 0242           ; // char size: 8 bit
 0242           ; // parity: Disabled
 0242           ; void uart1_init(void)
 0242           ; {
 0242           ;  UCSR1B = 0x00; //disable while setting baud rate
 0242           ;  UCSR1A = 0x00;
 0242           ;  UCSR1C = 0x06;
 0242           ;  UBRR1L = 0x23; //set baud rate lo
 0242           ;  UBRR1H = 0x00; //set baud rate hi
 0242           ;  UCSR1B = 0x18;
 0242           ; }*/
 0242           ; unsigned char RecChar(void)
 0242           ;   {
 0242                   .dbline 204
 0242           ;       timenum=0;
 0242 2224              clr R2
 0244 3324              clr R3
 0246 30920700          sts _timenum+1,R3
 024A 20920600          sts _timenum,R2
 024E           L53:
 024E                   .dbline 205
 024E           ;      do{
 024E                   .dbline 206
 024E           ;          timenum++;
 024E 80910600          lds R24,_timenum
 0252 90910700          lds R25,_timenum+1
 0256 0196              adiw R24,1
 0258 90930700          sts _timenum+1,R25
 025C 80930600          sts _timenum,R24
 0260                   .dbline 207
 0260           ;          if(timenum>50000){timenum=0;clr_dog();}
 0260 80E5              ldi R24,50000
 0262 93EC              ldi R25,195
 0264 20900600          lds R2,_timenum
 0268 30900700          lds R3,_timenum+1
 026C 8215              cp R24,R2
 026E 9305              cpc R25,R3
 0270 38F4              brsh L56
 0272                   .dbline 207
 0272                   .dbline 207
 0272 2224              clr R2
 0274 3324              clr R3
 0276 30920700          sts _timenum+1,R3
 027A 20920600          sts _timenum,R2
 027E                   .dbline 207
 027E 5FDF              xcall _clr_dog
 0280                   .dbline 207
 0280           L56:
 0280                   .dbline 208
 0280           L54:
 0280                   .dbline 208
 0280           ;        }while(!(UCSR1A & 0x80));
 0280 20909B00          lds R2,155
 0284 27FE              sbrs R2,7
 0286 E3CF              rjmp L53
 0288                   .dbline 209
 0288           ;      return UDR1;
 0288 00919C00          lds R16,156
 028C                   .dbline -2
 028C           L52:
 028C                   .dbline 0 ; func end
 028C 0895              ret
 028E                   .dbend
 028E                   .dbfunc e Send_ByteUART1 _Send_ByteUART1 fV
 028E           ;             ch -> R16
                        .even
 028E           _Send_ByteUART1::
 028E                   .dbline -1
 028E                   .dbline 223
 028E           ;   }           
 028E           ; /*unsigned char RecChar(void)
 028E           ;   {
 028E           ;        timenum=0;
 028E           ;      do{
 028E           ;          timenum++;
 028E           ;          clr_dog();
 028E           ;        }while((!(UCSR0A & 0x80))&&(timenum<10000000));
 028E           ;      return UDR0;
 028E           ;   }            */ 
 028E           ;   
 028E           ;  /*           字符输出函数             */
 028E           ; void  Send_ByteUART1(char  ch)
 028E           ;       {       
 028E                   .dbline 224
 028E           ;        UDR1=ch;
 028E 00939C00          sts 156,R16
 0292           L59:
 0292                   .dbline 225
 0292           L60:
 0292                   .dbline 225
 0292           ;      while (!(UCSR1A&(1<<UDRE1)));          //UCSRA USART 控制状态寄存器A  UDRE=TI
 0292 20909B00          lds R2,155
 0296 25FE              sbrs R2,5
 0298 FCCF              rjmp L59
 029A                   .dbline -2
 029A           L58:
 029A                   .dbline 0 ; func end
 029A 0895              ret
 029C                   .dbsym r ch 16 c
 029C                   .dbend
 029C                   .dbfunc e send232 _send232 fV
 029C           ;              i -> R20
 029C           ;              l -> R22
 029C           ;              s -> R10,R11
                        .even
 029C           _send232::
 029C 0E940000          xcall push_gset3
 02A0 622F              mov R22,R18
 02A2 5801              movw R10,R16
 02A4                   .dbline -1
 02A4                   .dbline 229
 02A4           ;       } 
 02A4           ;       
 02A4           ; void send232(unsigned char *s,unsigned char l)
 02A4           ; {
 02A4                   .dbline 231
 02A4           ; unsigned char i;
 02A4           ; for(i=0;i<l;i++)
 02A4 4427              clr R20
 02A6 07C0              xjmp L66
 02A8           L63:
 02A8                   .dbline 232
 02A8 E42F              mov R30,R20
 02AA FF27              clr R31
 02AC EA0D              add R30,R10
 02AE FB1D              adc R31,R11
 02B0 0081              ldd R16,z+0
 02B2 EDDF              xcall _Send_ByteUART1
 02B4           L64:
 02B4                   .dbline 231
 02B4 4395              inc R20
 02B6           L66:
 02B6                   .dbline 231
 02B6 4617              cp R20,R22
 02B8 B8F3              brlo L63
 02BA                   .dbline -2
 02BA           L62:
 02BA 0E940000          xcall pop_gset3
 02BE                   .dbline 0 ; func end
 02BE 0895              ret
 02C0                   .dbsym r i 20 c
 02C0                   .dbsym r l 22 c
 02C0                   .dbsym r s 10 pc
 02C0                   .dbend
 02C0                   .dbfunc e sendok _sendok fV
 02C0           ;              i -> R20
                        .even
 02C0           _sendok::
 02C0 0E940000          xcall push_gset1
 02C4                   .dbline -1
 02C4                   .dbline 235
 02C4           ; Send_ByteUART1(*(s+i));
 02C4           ; }      
 02C4           ; void sendok(void)
 02C4           ; {
 02C4                   .dbline 236
 02C4           ; unsigned char i=0;
 02C4 4427              clr R20
 02C6                   .dbline 237
 02C6           ; Senddata[0]='!'; 
 02C6 81E2              ldi R24,33
 02C8 80931200          sts _Senddata,R24
 02CC                   .dbline 238
 02CC           ; Senddata[5]=1;
 02CC 81E0              ldi R24,1
 02CE 80931700          sts _Senddata+5,R24
 02D2                   .dbline 239
 02D2           ; Senddata[6]=0xd;
 02D2 8DE0              ldi R24,13
 02D4 80931800          sts _Senddata+6,R24
 02D8                   .dbline 240
 02D8           ; Senddata[7]=0xa;
 02D8 8AE0              ldi R24,10
 02DA 80931900          sts _Senddata+7,R24
 02DE                   .dbline 241
 02DE           ; send232(Senddata,8);
 02DE 28E0              ldi R18,8
 02E0 00E0              ldi R16,<_Senddata
 02E2 10E0              ldi R17,>_Senddata
 02E4 DBDF              xcall _send232
 02E6                   .dbline -2
 02E6           L67:
 02E6 0E940000          xcall pop_gset1
 02EA                   .dbline 0 ; func end
 02EA 0895              ret
 02EC                   .dbsym r i 20 c
 02EC                   .dbend
 02EC                   .dbfunc e senderror _senderror fV
 02EC           ;              i -> R20
                        .even
 02EC           _senderror::
 02EC 0E940000          xcall push_gset1
 02F0                   .dbline -1
 02F0                   .dbline 244
 02F0           ; }  
 02F0           ; void senderror(void)
 02F0           ; {
 02F0                   .dbline 245
 02F0           ; unsigned char i=0;
 02F0 4427              clr R20
 02F2                   .dbline 246
 02F2           ; Senddata[0]='!';
 02F2 81E2              ldi R24,33
 02F4 80931200          sts _Senddata,R24
 02F8                   .dbline 247
 02F8           ; Senddata[5]=0;
 02F8 2224              clr R2
 02FA 20921700          sts _Senddata+5,R2
 02FE                   .dbline 248
 02FE           ; Senddata[6]=0xd;
 02FE 8DE0              ldi R24,13
 0300 80931800          sts _Senddata+6,R24
 0304                   .dbline 249
 0304           ; Senddata[7]=0xa;
 0304 8AE0              ldi R24,10
 0306 80931900          sts _Senddata+7,R24
 030A                   .dbline 250
 030A           ; send232(Senddata,8);
 030A 28E0              ldi R18,8
 030C 00E0              ldi R16,<_Senddata
 030E 10E0              ldi R17,>_Senddata
 0310 C5DF              xcall _send232
 0312                   .dbline -2
 0312           L71:
 0312 0E940000          xcall pop_gset1
 0316                   .dbline 0 ; func end
 0316 0895              ret
 0318                   .dbsym r i 20 c
 0318                   .dbend
 0318                   .dbfunc e uart0_rx _uart0_rx fV
 0318           ;            jym -> R12
 0318           ;           flag -> R20
 0318           ;           jym1 -> R10
 0318           ;              i -> R22,R23
                        .even
 0318           _uart0_rx::
 0318 0E940000          xcall push_gset4
 031C                   .dbline -1
 031C                   .dbline 253
 031C           ; }   
 031C           ; void uart0_rx(void)
 031C           ; {
 031C                   .dbline 256
 031C           ; char flag,jym,jym1;
 031C           ; int i;
 031C           ; flag=0;
 031C 4427              clr R20
 031E           L76:
 031E                   .dbline 257
 031E           ; do{
 031E                   .dbline 259
 031E           ;   
 031E           ;   if(data[0]!='!')data[0]=RecChar();   
 031E 80913000          lds R24,_data
 0322 8132              cpi R24,33
 0324 21F0              breq L79
 0326                   .dbline 259
 0326 8DDF              xcall _RecChar
 0328 00933000          sts _data,R16
 032C 59C0              xjmp L80
 032E           L79:
 032E                   .dbline 261
 032E           ;   else
 032E           ;        {
 032E                   .dbline 262
 032E           ;         Senddata[1]=RecChar();
 032E 89DF              xcall _RecChar
 0330 00931300          sts _Senddata+1,R16
 0334                   .dbline 263
 0334           ;         Senddata[2]=RecChar();
 0334 86DF              xcall _RecChar
 0336 00931400          sts _Senddata+2,R16
 033A                   .dbline 264
 033A           ;         Senddata[3]=RecChar();
 033A 83DF              xcall _RecChar
 033C 00931500          sts _Senddata+3,R16
 0340                   .dbline 265
 0340           ;         Senddata[4]=RecChar();
 0340 80DF              xcall _RecChar
 0342 00931600          sts _Senddata+4,R16
 0346                   .dbline 267
 0346           ;         
 0346           ;         for(i=0;i<256;i++)
 0346 6627              clr R22
 0348 7727              clr R23
 034A           L85:
 034A                   .dbline 268

⌨️ 快捷键说明

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