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

📄 sl3010.lis

📁 单片机开发资料光盘-双龙-686M.zip
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module sl3010.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\icc\iccavr\sl3010\sl3010\sl3010.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 80
 0000           ; //sl3010.c    sl3010机器人常用函数库
 0000           ; #include <io8515v.h>
 0000           ; 
 0000           ; // 更新日期: 2003.03.18
 0000           ; 
 0000           ; /*
 0000           ; void port_init();         //PA,PB,PC,PD 初始化
 0000           ; void delay_us(int time);  //微妙级延时
 0000           ; void delay_ms(unsigned int time);//毫秒级延时
 0000           ; void sw_touch();          //检测轻触开关
 0000           ; void mic_startup();       //等待声控启动
 0000           ; void remote_auto_time();  //遥控器控制直行和转弯时间
 0000           ; void turn_right();        //右转
 0000           ; void turn_left();         //左转
 0000           ; void turn_right_s();      //慢速右转
 0000           ; void turn_left_s();       //慢速左转
 0000           ; void backward();          //后退
 0000           ; void forward();           //前行
 0000           ; void stop();              //停止运动
 0000           ; */
 0000           ; /*
 0000           ; sl-3010 运行不同的程序其对应的工作状态由 work_status 变量指示
 0000           ; 对应数据表如下:
 0000           ;   程序名            程序功能简介        work_status 值
 0000           ; cny_car 程序    白底黑线,探黑线行走        0x10
 0000           ; xuanya_car      走悬崖,避障碍              0x20
 0000           ; music_car       音乐车                      0x30
 0000           ; led_car         霓虹灯                      0x40
 0000           ; auto_car1       自走车                      0x51
 0000           ; auto_car8       走<8>字                     0x50
 0000           ; remote_car      智能遥控机器人              0x60
 0000           ; trace_light     追光行进机器人              0x70
 0000           ; remote_light    遥控和追光                  0x67
 0000           ; ……  
 0000           ; */
 0000           ; //  电机驱动信号                       led灯指示电机状态 
 0000           ; //PORTD = 0xA0;//前行    //1010 0000//PORTA = 0xC3;//1100,0011
 0000           ; //PORTD = 0x90;//快速左转//1001 0000//PORTA = 0x33;//0011,0011
 0000           ; //PORTD = 0x80;//慢速左转//1000 0000//PORTA = 0xF3;//1111,0011
 0000           ; //PORTD = 0x60;//快速右转//0110 0000//PORTA = 0xCC;//1100,1100
 0000           ; //PORTD = 0x20;//慢速右转//0010 0000//PORTA = 0xCF;//1100,1111
 0000           ; //PORTD = 0x50;//后退    //0101 0000//PORTA = 0x3C;//0011,1100
 0000           ; 
 0000           ; //#define A 0x04      //0b0000,0100
 0000           ; //#define B 0x02      //0b0000,0010
 0000           ; //#define C 0x08      //0b0000,1000
 0000           ; //#define D 0x01      //0b0000,0001
 0000           ; 
 0000           ; 
 0000           ; /*             音阶常数=65536-8000000/8/2/f     */
 0000           ; #define DO    64580   //523
 0000           ; #define RE    64684   //587
 0000           ; #define       MI      64777   //659
 0000           ; #define FA    64820   //698
 0000           ; #define       SO      64898   //784
 0000           ; #define LA    64968   //880
 0000           ; #define       TI      65030   //988                                                   
 0000           ; #define DO_H  65058   //1046
 0000           ; #define RE_H  65110   //1174
 0000           ; #define MI_H  65157   //1318
 0000           ; #define FA_H  65178   //1397
 0000           ; #define SO_H  65217   //1568
 0000           ; #define LA_H  65252   //1760
 0000           ; #define TI_H  65283   //1976
 0000           ; #define DO_HH 65297   //2093
 0000           ; /*                             位操作宏                               */
 0000           ; #define set_bit(x,y)  (x|=(1<<y))
 0000           ; #define clr_bit(x,y)  (x&=~(1<<y))
 0000           ; #define get_bit(x,y)  (x&(1<<y))
 0000           ; 
 0000           ; #define fosc 8000000
 0000           ; #define baud 19200
 0000           ; #define device 0x38
 0000           ; 
 0000           ; #define touch_time 250
 0000           ; 
 0000           ; unsigned char work_status;
 0000           ;  
 0000           ; void port_init(void)
 0000           ; {//PA,PB,PC,PD 初始化
 0000                   .dbline 81
 0000           ;  DDRA  = 0xFF;PORTA = 0xFF;  //PA口输出,接8路LED指示灯
 0000 8FEF              ldi R24,255
 0002 8ABB              out 0x1a,R24
 0004                   .dbline 81
 0004 8BBB              out 0x1b,R24
 0006                   .dbline 82
 0006           ;  DDRB  = 0x80;PORTB = 0xFF;  //PB7输出口,PB6~PB4输入(轻触开关)PB4~PB0输入(遥控器)
 0006 80E8              ldi R24,128
 0008 87BB              out 0x17,R24
 000A                   .dbline 82
 000A 8FEF              ldi R24,255
 000C 88BB              out 0x18,R24
 000E                   .dbline 83
 000E           ;  DDRC  = 0x01;PORTC = 0xFF;  //PC0蜂鸣器输出,PC7~PC1检测信号输入端
 000E 81E0              ldi R24,1
 0010 84BB              out 0x14,R24
 0012                   .dbline 83
 0012 8FEF              ldi R24,255
 0014 85BB              out 0x15,R24
 0016                   .dbline 84
 0016           ;  DDRD  = 0xF0;PORTD = 0xFF;  //PD7~PD4输出驱动电机,PD3~PD0输入
 0016 80EF              ldi R24,240
 0018 81BB              out 0x11,R24
 001A                   .dbline 84
 001A 8FEF              ldi R24,255
 001C 82BB              out 0x12,R24
 001E                   .dbline -2
 001E                   .dbline 85
 001E           ; }
 001E           L1:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbend
 0020                   .dbfunc e delay_us _delay_us fV
 0020           ;           time -> R16,R17
                        .even
 0020           _delay_us::
 0020                   .dbline -1
 0020                   .dbline 88
 0020           ;  
 0020           ; void delay_us(int time)
 0020           ; {//微秒级延时程序     
 0020           L3:
 0020                   .dbline 90
 0020           ;  do
 0020           ;  {
 0020                   .dbline 91
 0020           ;   time--;
 0020 0150              subi R16,1
 0022 1040              sbci R17,0
 0024                   .dbline 92
 0024           ;  }    
 0024           L4:
 0024                   .dbline 93
 0024           ;   while (time>1);
 0024 81E0              ldi R24,1
 0026 90E0              ldi R25,0
 0028 8017              cp R24,R16
 002A 9107              cpc R25,R17
 002C CCF3              brlt L3
 002E                   .dbline -2
 002E                   .dbline 94
 002E           ; }       
 002E           L2:
 002E                   .dbline 0 ; func end
 002E 0895              ret
 0030                   .dbsym r time 16 I
 0030                   .dbend
 0030                   .dbfunc e delay_ms _delay_ms fV
 0030           ;           time -> R20,R21
                        .even
 0030           _delay_ms::
 0030 00D0              rcall push_gset1
 0032 402F              mov R20,R16
 0034 512F              mov R21,R17
 0036                   .dbline -1
 0036                   .dbline 97
 0036           ; 
 0036           ; void delay_ms(unsigned int time)
 0036           ; {//毫秒级延时程序
 0036 05C0              rjmp L8
 0038           L7:
 0038                   .dbline 99
 0038                   .dbline 100
 0038 08EE              ldi R16,1000
 003A 13E0              ldi R17,3
 003C F1DF              rcall _delay_us
 003E                   .dbline 101
 003E 4150              subi R20,1
 0040 5040              sbci R21,0
 0042                   .dbline 102
 0042           L8:
 0042                   .dbline 98
 0042           ;  while(time!=0)
 0042 4030              cpi R20,0
 0044 4507              cpc R20,R21
 0046 C1F7              brne L7
 0048           X0:
 0048                   .dbline -2
 0048                   .dbline 103
 0048           ;  {            
 0048           ;   delay_us(1000);
 0048           ;   time--;
 0048           ;  }
 0048           ; }             
 0048           L6:
 0048 00D0              rcall pop_gset1
 004A                   .dbline 0 ; func end
 004A 0895              ret
 004C                   .dbsym r time 20 i
 004C                   .dbend
 004C                   .dbfunc e turn_right _turn_right fV
                        .even
 004C           _turn_right::
 004C                   .dbline -1
 004C                   .dbline 106
 004C           ; 
 004C           ; void turn_right()//右转
 004C           ;     {
 004C                   .dbline 107
 004C           ;                PORTD = 0x60;   //右转//0110 0000   
 004C 80E6              ldi R24,96
 004E 82BB              out 0x12,R24
 0050                   .dbline 108
 0050           ;                PORTA = 0xCC;     //1100,1100 指示灯
 0050 8CEC              ldi R24,204
 0052 8BBB              out 0x1b,R24
 0054                   .dbline -2
 0054                   .dbline 109
 0054           ;     }
 0054           L10:
 0054                   .dbline 0 ; func end
 0054 0895              ret
 0056                   .dbend
 0056                   .dbfunc e turn_left _turn_left fV
                        .even
 0056           _turn_left::
 0056                   .dbline -1
 0056                   .dbline 112
 0056           ; 
 0056           ; void turn_left()//左转
 0056           ;     {
 0056                   .dbline 113
 0056           ;          PORTD = 0x90;   //左转//1001 0000   
 0056 80E9              ldi R24,144
 0058 82BB              out 0x12,R24
 005A                   .dbline 114
 005A           ;                PORTA = 0x33;     //0011,0011 指示灯
 005A 83E3              ldi R24,51
 005C 8BBB              out 0x1b,R24
 005E                   .dbline -2
 005E                   .dbline 115
 005E           ;     }
 005E           L11:
 005E                   .dbline 0 ; func end
 005E 0895              ret
 0060                   .dbend
 0060                   .dbfunc e turn_right_s _turn_right_s fV
                        .even
 0060           _turn_right_s::
 0060                   .dbline -1
 0060                   .dbline 117
 0060           ; void turn_right_s()      //慢速右转
 0060           ;     {
 0060                   .dbline 118
 0060           ;          PORTD = 0x20;   //慢速右转//0010 0000
 0060 80E2              ldi R24,32
 0062 82BB              out 0x12,R24
 0064                   .dbline 119
 0064           ;                PORTA = 0xCF;   //1100,1111
 0064 8FEC              ldi R24,207
 0066 8BBB              out 0x1b,R24
 0068                   .dbline -2
 0068                   .dbline 120
 0068           ;     }
 0068           L12:
 0068                   .dbline 0 ; func end
 0068 0895              ret
 006A                   .dbend
 006A                   .dbfunc e turn_left_s _turn_left_s fV
                        .even
 006A           _turn_left_s::
 006A                   .dbline -1
 006A                   .dbline 123
 006A           ; 
 006A           ; void turn_left_s()       //慢速左转
 006A           ;     {
 006A                   .dbline 124
 006A           ;          PORTD = 0x80;   //慢速左转//1000 0000
 006A 80E8              ldi R24,128
 006C 82BB              out 0x12,R24
 006E                   .dbline 125
 006E           ;                PORTA = 0xF3;     //1111,0011
 006E 83EF              ldi R24,243
 0070 8BBB              out 0x1b,R24
 0072                   .dbline -2
 0072                   .dbline 126
 0072           ;     }
 0072           L13:
 0072                   .dbline 0 ; func end

⌨️ 快捷键说明

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