📄 newmain.lis
字号:
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 + -