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

📄 ytcpg01.lis

📁 使用AVR的云台控制器程序,通过串口和PC机通讯实现在监控电脑上控制摄像机云台.通过SPI口进行串并转换实现单片机IO扩展.
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -