📄 ytcpg01.lis
字号:
007E .dbfunc e uart_init _uart_init fV
.even
007E _uart_init::
007E .dbline -1
007E .dbline 117
007E ; while(!(SPSR&0x80));
007E ; }
007E ; //delayXms(1);
007E ;
007E ; }//unsigned
007E ;
007E ;
007E ;
007E ; void uart_init(void)
007E ; {
007E .dbline 118
007E ; UCSRB=0x00;
007E 2224 clr R2
0080 2AB8 out 0xa,R2
0082 .dbline 119
0082 ; UBRR=0x33; //9600bps
0082 83E3 ldi R24,51
0084 89B9 out 0x9,R24
0086 .dbline 121
0086 ; //UCR=0xd8;
0086 ; UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
0086 88E9 ldi R24,152
0088 8AB9 out 0xa,R24
008A .dbline 122
008A ; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
008A 86E8 ldi R24,134
008C 80BD out 0x20,R24
008E .dbline -2
008E L21:
008E .dbline 0 ; func end
008E 0895 ret
0090 .dbend
.area vector(rom, abs)
.org 22
0016 48C0 rjmp _uart0_tx_isr
.area text(rom, con, rel)
0090 .dbfile E:\job\elite\云台控制器\avr\ytcpg01.c
0090 .dbfunc e uart0_tx_isr _uart0_tx_isr fV
.even
0090 _uart0_tx_isr::
0090 .dbline -1
0090 .dbline 128
0090 ; }
0090 ;
0090 ;
0090 ; #pragma interrupt_handler uart0_tx_isr:12
0090 ; void uart0_tx_isr(void)
0090 ; {
0090 .dbline 129
0090 ; ;
0090 .dbline -2
0090 L22:
0090 .dbline 0 ; func end
0090 1895 reti
0092 .dbend
.area vector(rom, abs)
.org 18
0012 49C0 rjmp _uart0_rx_isr
.area text(rom, con, rel)
0092 .dbfile E:\job\elite\云台控制器\avr\ytcpg01.c
0092 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
0092 ; i -> R20
.even
0092 _uart0_rx_isr::
0092 00D0 rcall push_lset
0094 00D0 rcall push_gset1
0096 .dbline -1
0096 .dbline 135
0096 ;
0096 ; }
0096 ;
0096 ; #pragma interrupt_handler uart0_rx_isr:10
0096 ; void uart0_rx_isr(void)
0096 ; {
0096 .dbline 139
0096 ;
0096 ; unsigned char i;
0096 ; //SEI();
0096 ; tmpRx=UDR;
0096 2CB0 in R2,0xc
0098 20920000 sts _tmpRx,R2
009C .dbline 145
009C ; ////while(!(UCSRA & (1<<UDRE)))
009C ; //// ;
009C ; ////UDR=tmpRx; //TX the data of rx
009C ;
009C ; //OUTrunON;
009C ; if (tmpRx=='%')
009C 822D mov R24,R2
009E 8532 cpi R24,37
00A0 31F4 brne L24
00A2 .dbline 146
00A2 ; {
00A2 .dbline 149
00A2 ;
00A2 ; //PORTC=0xff;
00A2 ; RXCR=0;
00A2 2224 clr R2
00A4 20920100 sts _RXCR,R2
00A8 .dbline 150
00A8 ; RXstartFlag=1;
00A8 81E0 ldi R24,1
00AA 80930200 sts _RXstartFlag,R24
00AE .dbline 151
00AE ; }//if tmprx
00AE L24:
00AE .dbline 153
00AE ;
00AE ; if (RXCR>16)
00AE 80E1 ldi R24,16
00B0 20900100 lds R2,_RXCR
00B4 8215 cp R24,R2
00B6 18F4 brsh L26
00B8 .dbline 154
00B8 ; {
00B8 .dbline 155
00B8 ; RXCR=0;
00B8 2224 clr R2
00BA 20920100 sts _RXCR,R2
00BE .dbline 157
00BE ; //
00BE ; }
00BE L26:
00BE .dbline 159
00BE ;
00BE ; RXbuf[RXCR]=tmpRx;
00BE 80E0 ldi R24,<_RXbuf
00C0 90E0 ldi R25,>_RXbuf
00C2 E0910100 lds R30,_RXCR
00C6 FF27 clr R31
00C8 E80F add R30,R24
00CA F91F adc R31,R25
00CC 20900000 lds R2,_tmpRx
00D0 2082 std z+0,R2
00D2 .dbline 160
00D2 ; RXCR++;
00D2 80910100 lds R24,_RXCR
00D6 8F5F subi R24,255 ; addi 1
00D8 80930100 sts _RXCR,R24
00DC .dbline 163
00DC ; //SEI();
00DC ;
00DC ; if(RXstartFlag==1 && RXCR==15 && RXbuf[0]=='%')
00DC 80910200 lds R24,_RXstartFlag
00E0 8130 cpi R24,1
00E2 09F0 breq X1
00E4 72C0 rjmp L28
00E6 X1:
00E6 80910100 lds R24,_RXCR
00EA 8F30 cpi R24,15
00EC 09F0 breq X2
00EE 6DC0 rjmp L28
00F0 X2:
00F0 80910200 lds R24,_RXbuf
00F4 8532 cpi R24,37
00F6 09F0 breq X3
00F8 68C0 rjmp L28
00FA X3:
00FA .dbline 164
00FA ; {
00FA .dbline 165
00FA ; RXstartFlag=0;
00FA 2224 clr R2
00FC 20920200 sts _RXstartFlag,R2
0100 .dbline 167
0100 ; // OUTau1Pulse;
0100 ; if(RXbuf[1]==BOARDID && RXbuf[14]=='$')
0100 80910300 lds R24,_RXbuf+1
0104 8133 cpi R24,49
0106 09F0 breq X4
0108 59C0 rjmp L30
010A X4:
010A 80911000 lds R24,_RXbuf+14
010E 8432 cpi R24,36
0110 09F0 breq X5
0112 54C0 rjmp L30
0114 X5:
0114 .dbline 169
0114 ; //if(RXbuf[1]==BOARDID)
0114 ; {
0114 .dbline 171
0114 ; //OUTau1Pulse;
0114 ; CRCT.TXCRC=0;
0114 3324 clr R3
0116 30920100 sts _CRCT+1,R3
011A 20920000 sts _CRCT,R2
011E .dbline 172
011E ; for(i=0;i<12;i++)
011E 4427 clr R20
0120 13C0 rjmp L37
0122 L34:
0122 .dbline 173
0122 .dbline 174
0122 80E0 ldi R24,<_RXbuf
0124 90E0 ldi R25,>_RXbuf
0126 E42F mov R30,R20
0128 FF27 clr R31
012A E80F add R30,R24
012C F91F adc R31,R25
012E 2080 ldd R2,z+0
0130 3324 clr R3
0132 40900000 lds R4,_CRCT
0136 50900100 lds R5,_CRCT+1
013A 420C add R4,R2
013C 531C adc R5,R3
013E 50920100 sts _CRCT+1,R5
0142 40920000 sts _CRCT,R4
0146 .dbline 175
0146 L35:
0146 .dbline 172
0146 4395 inc R20
0148 L37:
0148 .dbline 172
0148 4C30 cpi R20,12
014A 58F3 brlo L34
014C .dbline 177
014C ; {
014C ; CRCT.TXCRC=CRCT.TXCRC+RXbuf[i];
014C ; }//for(i=0;i<12;i++)
014C ;
014C ; if(CRCT.txCRC[0]==RXbuf[12] && CRCT.txCRC[1]==RXbuf[13])
014C 20900E00 lds R2,_RXbuf+12
0150 30900000 lds R3,_CRCT
0154 3214 cp R3,R2
0156 09F0 breq X6
0158 31C0 rjmp L38
015A X6:
015A 20900F00 lds R2,_RXbuf+13
015E 30900100 lds R3,_CRCT+1
0162 3214 cp R3,R2
0164 59F5 brne L38
0166 .dbline 178
0166 ; {
0166 .dbline 179
0166 ; if(RXbuf[2]=='1')
0166 80910400 lds R24,_RXbuf+2
016A 8133 cpi R24,49
016C B9F4 brne L43
016E .dbline 180
016E ; {
016E .dbline 182
016E ;
016E ; for(i=3;i<12;i++)
016E 43E0 ldi R20,3
0170 0FC0 rjmp L49
0172 L46:
0172 .dbline 183
0172 .dbline 184
0172 80E0 ldi R24,<_RXbuf
0174 90E0 ldi R25,>_RXbuf
0176 E42F mov R30,R20
0178 FF27 clr R31
017A E80F add R30,R24
017C F91F adc R31,R25
017E 2080 ldd R2,z+0
0180 80E0 ldi R24,<_OPDATA-3
0182 90E0 ldi R25,>_OPDATA-3
0184 E42F mov R30,R20
0186 FF27 clr R31
0188 E80F add R30,R24
018A F91F adc R31,R25
018C 2082 std z+0,R2
018E .dbline 185
018E L47:
018E .dbline 182
018E 4395 inc R20
0190 L49:
0190 .dbline 182
0190 4C30 cpi R20,12
0192 78F3 brlo L46
0194 .dbline 187
0194 ; {
0194 ; OPDATA[i-3]=RXbuf[i];
0194 ; }//for(i=2;i<10;i++)
0194 ;
0194 ; PORTC=OPDATA[0];
0194 20902600 lds R2,_OPDATA
0198 25BA out 0x15,R2
019A .dbline 188
019A ; SPI_Tran();
019A 60DF rcall _SPI_Tran
019C .dbline 189
019C ; }//if(RXbuf[2]=='1')
019C L43:
019C .dbline 192
019C ;
019C ; //ANSWER
019C ; TXbufINIT();
019C 19D0 rcall _TXbufINIT
019E .dbline 193
019E ; for (i=0;i<15;i++)
019E 4427 clr R20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -