📄 uart-16sm.lis
字号:
00B0 ; i -> R20,R21
00B0 ; j -> R22,R23
00B0 ; count -> R16,R17
.even
00B0 _delay::
00B0 0E940000 xcall push_xgsetF000
00B4 .dbline -1
00B4 .dbline 86
00B4 ; }
00B4 ;
00B4 ; void delay(int count)
00B4 ; {
00B4 .dbline 88
00B4 ; int i, j;
00B4 ; for(i=count; i>0; i--)
00B4 A801 movw R20,R16
00B6 0BC0 xjmp L10
00B8 L7:
00B8 .dbline 89
00B8 ; for(j=10; j>0; j--)
00B8 6AE0 ldi R22,10
00BA 70E0 ldi R23,0
00BC L11:
00BC .dbline 90
00BC ; ;
00BC L12:
00BC .dbline 89
00BC 6150 subi R22,1
00BE 7040 sbci R23,0
00C0 .dbline 89
00C0 2224 clr R2
00C2 3324 clr R3
00C4 2616 cp R2,R22
00C6 3706 cpc R3,R23
00C8 CCF3 brlt L11
00CA X1:
00CA L8:
00CA .dbline 88
00CA 4150 subi R20,1
00CC 5040 sbci R21,0
00CE L10:
00CE .dbline 88
00CE 2224 clr R2
00D0 3324 clr R3
00D2 2416 cp R2,R20
00D4 3506 cpc R3,R21
00D6 84F3 brlt L7
00D8 X2:
00D8 .dbline -2
00D8 L6:
00D8 .dbline 0 ; func end
00D8 0C940000 xjmp pop_xgsetF000
00DC .dbsym r i 20 I
00DC .dbsym r j 22 I
00DC .dbsym r count 16 I
00DC .dbend
00DC .dbfunc e transmit _transmit fV
00DC ; abyte -> R16
.even
00DC _transmit::
00DC .dbline -1
00DC .dbline 94
00DC ; }
00DC ;
00DC ; void transmit(unsigned char abyte)
00DC ; {
00DC .dbline 95
00DC ; UDR=abyte;
00DC 0CB9 out 0xc,R16
00DE L16:
00DE .dbline 97
00DE ; while(!(UCSRA&0b01000000)) //b6=1 TXE
00DE ; ;
00DE L17:
00DE .dbline 96
00DE 5E9B sbis 0xb,6
00E0 FECF rjmp L16
00E2 X3:
00E2 .dbline -2
00E2 L15:
00E2 .dbline 0 ; func end
00E2 0895 ret
00E4 .dbsym r abyte 16 c
00E4 .dbend
00E4 .dbfunc e main _main fV
00E4 ; outd -> R10
00E4 ; outc -> R10
00E4 ; outb -> R20
00E4 ; outa -> R20
00E4 ; dswin -> R10,R11
.even
00E4 _main::
00E4 .dbline -1
00E4 .dbline 101
00E4 ; }
00E4 ; //*****************************************************************
00E4 ; void main(void)
00E4 ; {
00E4 .dbline 102
00E4 ; unsigned char outa=0b01010101, outb=0b10101010, outc=0x00, outd=0x00;
00E4 .dbline 102
00E4 4AEA ldi R20,170
00E6 .dbline 102
00E6 AA24 clr R10
00E8 .dbline 102
00E8 .dbline 104
00E8 ; int dswin;
00E8 ; port_init();
00E8 B9DF xcall _port_init
00EA .dbline 105
00EA ; USART_init();
00EA C1DF xcall _USART_init
00EC .dbline 106
00EC ; SEI();
00EC 7894 sei
00EE 43C0 xjmp L21
00F0 L20:
00F0 .dbline 108
00F0 ; while(1)
00F0 ; {
00F0 .dbline 109
00F0 ; WDR(); //Watchdog reset
00F0 A895 wdr
00F2 .dbline 110
00F2 ; if(rec_head!=rec_tail)
00F2 20900200 lds R2,_rec_tail
00F6 30900300 lds R3,_rec_tail+1
00FA 40900000 lds R4,_rec_head
00FE 50900100 lds R5,_rec_head+1
0102 4214 cp R4,R2
0104 5304 cpc R5,R3
0106 B9F1 breq L23
0108 X4:
0108 .dbline 111
0108 ; {
0108 .dbline 112
0108 ; rec_data=RecBuf[rec_tail];
0108 80E0 ldi R24,<_RecBuf
010A 90E0 ldi R25,>_RecBuf
010C F101 movw R30,R2
010E E80F add R30,R24
0110 F91F adc R31,R25
0112 2080 ldd R2,z+0
0114 3324 clr R3
0116 30920100 sts _rec_data+1,R3
011A 20920000 sts _rec_data,R2
011E .dbline 113
011E ; rec_tail++;
011E 80910200 lds R24,_rec_tail
0122 90910300 lds R25,_rec_tail+1
0126 0196 adiw R24,1
0128 90930300 sts _rec_tail+1,R25
012C 80930200 sts _rec_tail,R24
0130 .dbline 114
0130 ; if(rec_tail>=40)
0130 8832 cpi R24,40
0132 E0E0 ldi R30,0
0134 9E07 cpc R25,R30
0136 2CF0 brlt L25
0138 X5:
0138 .dbline 115
0138 ; rec_tail=0;
0138 2224 clr R2
013A 30920300 sts _rec_tail+1,R3
013E 20920200 sts _rec_tail,R2
0142 L25:
0142 .dbline 117
0142 ;
0142 ; dswin=rec_head<<2;
0142 A0900000 lds R10,_rec_head
0146 B0900100 lds R11,_rec_head+1
014A AA0C lsl R10
014C BB1C rol R11
014E AA0C lsl R10
0150 BB1C rol R11
0152 .dbline 118
0152 ; PORTD=dswin;
0152 A2BA out 0x12,R10
0154 .dbline 119
0154 ; PORTA=rec_data;
0154 20900000 lds R2,_rec_data
0158 30900100 lds R3,_rec_data+1
015C 2BBA out 0x1b,R2
015E .dbline 120
015E ; transmit(rec_data);
015E 022D mov R16,R2
0160 BDDF xcall _transmit
0162 .dbline 121
0162 ; if(rec_data==13)
0162 80910000 lds R24,_rec_data
0166 90910100 lds R25,_rec_data+1
016A 8D30 cpi R24,13
016C E0E0 ldi R30,0
016E 9E07 cpc R25,R30
0170 11F4 brne L27
0172 X6:
0172 .dbline 122
0172 ; transmit(10);
0172 0AE0 ldi R16,10
0174 B3DF xcall _transmit
0176 L27:
0176 .dbline 124
0176 ;
0176 ; }
0176 L23:
0176 .dbline 125
0176 ; }
0176 L21:
0176 .dbline 107
0176 BCCF xjmp L20
0178 X7:
0178 .dbline -2
0178 L19:
0178 .dbline 0 ; func end
0178 0895 ret
017A .dbsym r outd 10 c
017A .dbsym r outc 10 c
017A .dbsym r outb 20 c
017A .dbsym r outa 20 c
017A .dbsym r dswin 10 I
017A .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\+samples-16small\UART-16sm\uart-16sm.c
0000 _rec_data::
0000 .blkb 2
0002 .dbsym e rec_data _rec_data i
0002 _RecBuf::
0002 .blkb 40
002A .dbsym e RecBuf _RecBuf A[40:40]c
002A ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -