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

📄 test_pc10_main.lis

📁 AVR单片机开发中
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 01BC           ; 
 01BC           ;     send_buffer[0] = s;
 01BC 40930900          sts _send_buffer,R20
 01C0                   .dbline 216
 01C0           ;     char_len = 1;
 01C0 81E0              ldi R24,1
 01C2 80930000          sts _char_len,R24
 01C6                   .dbline 217
 01C6           ;       serial_send(0);  
 01C6 0027              clr R16
 01C8 6ADF              xcall _serial_send
 01CA                   .dbline 218
 01CA           ;       return ;
 01CA                   .dbline -2
 01CA           L51:
 01CA 0E940000          xcall pop_gset1
 01CE                   .dbline 0 ; func end
 01CE 0895              ret
 01D0                   .dbsym r s 20 c
 01D0                   .dbend
 01D0                   .dbfunc e printf_hex _printf_hex fV
 01D0           ;           temp -> R20,R21
 01D0           ;              s -> R22
                        .even
 01D0           _printf_hex::
 01D0 0E940000          xcall push_gset2
 01D4 602F              mov R22,R16
 01D6                   .dbline -1
 01D6                   .dbline 223
 01D6           ;       
 01D6           ; }
 01D6           ; 
 01D6           ; 
 01D6           ; void printf_hex(unsigned char s){
 01D6                   .dbline 224
 01D6           ;      unsigned int temp = 0;
 01D6 4427              clr R20
 01D8 5527              clr R21
 01DA                   .dbline 226
 01DA           ;        
 01DA           ;        temp = hextochar(s);
 01DA 062F              mov R16,R22
 01DC 1127              clr R17
 01DE 0E940000          xcall _hextochar
 01E2 A801              movw R20,R16
 01E4                   .dbline 227
 01E4           ;        send_buffer[1] = temp;
 01E4 40930A00          sts _send_buffer+1,R20
 01E8                   .dbline 228
 01E8           ;        temp = temp >> 8;
 01E8 452F              mov R20,R21
 01EA 5527              clr R21
 01EC                   .dbline 229
 01EC           ;      send_buffer[0] = temp;
 01EC 40930900          sts _send_buffer,R20
 01F0                   .dbline 230
 01F0           ;      char_len = 2;
 01F0 82E0              ldi R24,2
 01F2 80930000          sts _char_len,R24
 01F6                   .dbline 231
 01F6           ;        serial_send(0);
 01F6 0027              clr R16
 01F8 52DF              xcall _serial_send
 01FA                   .dbline 232
 01FA           ;        return;
 01FA                   .dbline -2
 01FA           L52:
 01FA 0E940000          xcall pop_gset2
 01FE                   .dbline 0 ; func end
 01FE 0895              ret
 0200                   .dbsym r temp 20 i
 0200                   .dbsym r s 22 c
 0200                   .dbend
 0200                   .dbfunc e printf_int _printf_int fV
 0200           ;              c -> R20,R21
                        .even
 0200           _printf_int::
 0200 0E940000          xcall push_gset1
 0204 A801              movw R20,R16
 0206                   .dbline -1
 0206                   .dbline 237
 0206           ; }
 0206           ; 
 0206           ; 
 0206           ; void printf_int(int c )
 0206           ; {
 0206                   .dbline 238
 0206           ;     char_len = bcd_char( c, send_buffer);
 0206 20E0              ldi R18,<_send_buffer
 0208 30E0              ldi R19,>_send_buffer
 020A 8A01              movw R16,R20
 020C 0E940000          xcall _bcd_char
 0210 00930000          sts _char_len,R16
 0214                   .dbline 239
 0214           ;       serial_send(0);
 0214 0027              clr R16
 0216 43DF              xcall _serial_send
 0218                   .dbline 240
 0218           ;     return;
 0218                   .dbline -2
 0218           L54:
 0218 0E940000          xcall pop_gset1
 021C                   .dbline 0 ; func end
 021C 0895              ret
 021E                   .dbsym r c 20 I
 021E                   .dbend
 021E                   .dbfunc e printf_str _printf_str fV
 021E           ;              i -> R20
 021E           ;              s -> R22,R23
                        .even
 021E           _printf_str::
 021E 0E940000          xcall push_gset2
 0222 B801              movw R22,R16
 0224                   .dbline -1
 0224                   .dbline 244
 0224           ; }
 0224           ; 
 0224           ; 
 0224           ; void printf_str(char *s ){
 0224                   .dbline 245
 0224           ;     unsigned char i=0;
 0224 4427              clr R20
 0226 0CC0              xjmp L57
 0228           L56:
 0228                   .dbline 247
 0228                   .dbline 249
 0228 80E0              ldi R24,<_send_buffer
 022A 90E0              ldi R25,>_send_buffer
 022C E42F              mov R30,R20
 022E FF27              clr R31
 0230 E80F              add R30,R24
 0232 F91F              adc R31,R25
 0234 DB01              movw R26,R22
 0236 2C90              ld R2,x
 0238 2082              std z+0,R2
 023A                   .dbline 250
 023A 4395              inc R20
 023C                   .dbline 251
 023C 6F5F              subi R22,255  ; offset = 1
 023E 7F4F              sbci R23,255
 0240                   .dbline 252
 0240           L57:
 0240                   .dbline 247
 0240           ;       
 0240           ;       while( *s ){
 0240 FB01              movw R30,R22
 0242 2080              ldd R2,z+0
 0244 2220              tst R2
 0246 81F7              brne L56
 0248                   .dbline 253
 0248           ;          
 0248           ;          send_buffer[i] = *s ;
 0248           ;          i ++;
 0248           ;          s++;
 0248           ;       }
 0248           ;     char_len = i;
 0248 40930000          sts _char_len,R20
 024C                   .dbline 254
 024C           ;       serial_send( 0 );
 024C 0027              clr R16
 024E 27DF              xcall _serial_send
 0250                   .dbline 256
 0250           ;       
 0250           ;     return;
 0250                   .dbline -2
 0250           L55:
 0250 0E940000          xcall pop_gset2
 0254                   .dbline 0 ; func end
 0254 0895              ret
 0256                   .dbsym r i 20 c
 0256                   .dbsym r s 22 pc
 0256                   .dbend
 0256                   .dbfunc e outp _outp fV
 0256           ;              p -> R20,R21
 0256           ;           data -> R18
 0256           ;            add -> R16,R17
                        .even
 0256           _outp::
 0256 0E940000          xcall push_gset1
 025A                   .dbline -1
 025A                   .dbline 264
 025A           ; }
 025A           ; /////////////////////////////////////////////////////////////////////////////////
 025A           ; 
 025A           ; /////////////////////////////////////////////////////////////////////////////
 025A           ; //////            104bus io 操作
 025A           ; //////////////////////////////////////////////////////////////////////////////
 025A           ; void outp(unsigned int add,unsigned char data)
 025A           ;         {
 025A                   .dbline 266
 025A           ;                unsigned char *p;
 025A           ;                p = (unsigned char *) (add+0x2000);
 025A A801              movw R20,R16
 025C 4050              subi R20,0  ; offset = 8192
 025E 504E              sbci R21,224
 0260                   .dbline 268
 0260           ;                
 0260           ;                     *p=data;
 0260 FA01              movw R30,R20
 0262 2083              std z+0,R18
 0264                   .dbline -2
 0264                   .dbline 270
 0264           ;    
 0264           ;          }
 0264           L59:
 0264 0E940000          xcall pop_gset1
 0268                   .dbline 0 ; func end
 0268 0895              ret
 026A                   .dbsym r p 20 pc
 026A                   .dbsym r data 18 c
 026A                   .dbsym r add 16 i
 026A                   .dbend
 026A                   .dbfunc e inp _inp fc
 026A           ;              p -> R20,R21
 026A           ;            add -> R16,R17
                        .even
 026A           _inp::
 026A 0E940000          xcall push_gset1
 026E                   .dbline -1
 026E                   .dbline 274
 026E           ; 
 026E           ; 
 026E           ; unsigned char inp(unsigned int add)     
 026E           ; {
 026E                   .dbline 277
 026E           ; 
 026E           ;        unsigned char *p;
 026E           ;          p = (unsigned char *) (add+0x2000);
 026E A801              movw R20,R16
 0270 4050              subi R20,0  ; offset = 8192
 0272 504E              sbci R21,224
 0274                   .dbline 278
 0274           ;        return   *p;
 0274 FA01              movw R30,R20
 0276 0081              ldd R16,z+0
 0278                   .dbline -2
 0278           L60:
 0278 0E940000          xcall pop_gset1
 027C                   .dbline 0 ; func end
 027C 0895              ret
 027E                   .dbsym r p 20 pc
 027E                   .dbsym r add 16 i
 027E                   .dbend
 027E                   .dbfunc e init_gyro _init_gyro fV
                        .even
 027E           _init_gyro::
 027E                   .dbline -1
 027E                   .dbline 298
 027E           ; 
 027E           ; } 
 027E           ;       
 027E           ; ////////////////////////////////////////////////////////////////////////////////      
 027E           ; //////////////////////////////////////////////////////////////////////
 027E           ; //
 027E           ; //    gyro_sample
 027E           ; //
 027E           ; //    参数    无
 027E           ; //
 027E           ; //    说明    陀螺仪采样函数,首先运行500次,求得零漂平均值,然后处理
 027E           ; //              陀螺仪数据,最终用算出的角度更新全局变量rob_angle
 027E           ; //
 027E           ; //    返回值  无
 027E           ; //
 027E           ; //    创建人  张辉
 027E           ; //
 027E           ; //////////////////////////////////////////////////////////////////////        
 027E           ; 
 027E           ; void init_gyro(){
 027E                   .dbline 299
 027E           ;       outp(GYRO_BASE+4,0x00);                         /*陀螺仪标志位置0*/     
 027E 2227              clr R18
 0280 04E9              ldi R16,660
 0282 12E0              ldi R17,2
 0284                   .dbline -2
 0284                   .dbline 301
 0284           ;       
 0284           ;       }
 0284           L61:
 0284                   .dbline 0 ; func end
 0284 E8CF              xjmp _outp
 0286                   .dbend
 0286                   .dbfunc e gyro_sample _gyro_sample fI
 0286           ;          angle -> y+6
 0286           ;          cmplt -> R10,R11
 0286           ;       low_byte -> R10,R11
 0286           ;       mid_byte -> R12,R13
 0286           ;      high_byte -> y+2
                        .even
 0286           _gyro_sample::
 0286 0E940000          xcall push_gset4
 028A 2A97              sbiw R28,10
 028C                   .dbline -1
 028C                   .dbline 303
 028C           ; int gyro_sample()
 028C           ; {
 028C                   .dbline 308
 028C           ;       int     cmplt;
 028C           ;       long    angle;
 028C           ;       unsigned long high_byte;
 028C           ;       unsigned int  mid_byte,low_byte;
 028C           ;       high_byte = 0;
 028C 40E0              ldi R20,0
 028E 50E0              ldi R21,0
 0290 60E0              ldi R22,0
 0292 70E0              ldi R23,0
 0294 FE01              movw R30,R28
 0296 4283              std z+2,R20
 0298 5383              std z+3,R21
 029A 6483              std z+4,R22
 029C 7583              std z+5,R23
 029E                   .dbline 309
 029E           ;       cmplt=inp(GYRO_BASE+0);
 029E 00E9              ldi R16,656
 02A0 12E0              ldi R17,2
 02A2 E3DF              xcall _inp
 02A4 A02E              mov R10,R16
 02A6 BB24              clr R11
 02A8                   .dbline 311
 02A8           ; 
 02A8           ;       if((cmplt&0x01)==0x01)
 02A8 C501              movw R24,R10
 02AA 8170              andi R24,1
 02AC 9070              andi R25,0
 02AE 8130              cpi R24,1
 02B0 E0E0              ldi R30,0
 02B2 9E07              cpc R25,R30
 02B4 19F4              brne L63
 02B6                   .dbline 312
 02B6           ;       {    
 02B6                   .dbline 313
 02B6           ;               return 0;
 02B6 0027              clr R16
 02B8 1127              clr R17
 02BA 89C0              xjmp L62
 02BC           L63:
 02BC                   .dbline 315
 02BC           ;       }
 02BC           ;       outp(GYRO_BASE+4,0x01);
 02BC 21E0              ldi R18,1
 02BE 04E9              ldi R16,660
 02C0 12E0              ldi R17,2
 02C2 C9DF              xcall _outp
 02C4                   .dbline 316
 02C4           ;       high_byte=inp(GYRO_BASE+1);

⌨️ 快捷键说明

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