📄 xuanya.lis
字号:
.module xuanya.c
.area text(rom, con, rel)
0000 .dbfile D:/icc/include/diy0206.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 81
0000 ; /************功能介绍************************
0000 ; 广州双龙电子
0000 ; WWW.SL.COM.CN
0000 ; Chip type : ATMEGA16
0000 ; Clock frequency : 8MHz
0000 ; ********************************************
0000 ;
0000 ; 自走车,机器人向前方行走,实现自动避悬崖障碍
0000 ; PB2声控启动
0000 ; 前方碰到障碍,机器人后退,左转,前进
0000 ; 左方碰到障碍,机器人后退,右转,前进
0000 ; 右方碰到障碍,机器人后退,左转,前进
0000 ; 前方碰到悬涯,机器人后退,左转,前进
0000 ; 左方碰到悬涯,机器人后退,右转,前进
0000 ; 右方碰到悬涯,机器人后退,左转,前进
0000 ; 左侧和右侧同时碰到悬涯,机器人停止待命,同时PA口的LED流水灯显示,
0000 ; 电机驱动信号 led灯指示电机状态
0000 ; PD = 0xA0;//前行 //1010 0000//P0 = 0xC3;//1100,0011
0000 ; PD = 0x60;//快速左转//0110 0000//P0 = 0x33;//0011,0011
0000 ; PD = 0x20;//慢速左转//0010 0000//P0 = 0xF3;//1111,0011
0000 ; PD = 0x90;//快速右转//1001 0000//P0 = 0xCC;//1100,1100
0000 ; PD = 0x80;//慢速右转//1000 0000//P0 = 0xCF;//1100,1111
0000 ; PD = 0x50;//后退 //0101 0000//P0 = 0x3C;//0011,1100
0000 ;
0000 ; ********************************************/
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #define xuanya_delayms 300
0000 ; #include <diy0206.c>
0000 ;
0000 ;
0000 ; unsigned char pa,pb,pc,pd;
0000 ;
0000 ; void xuanya_car(void)
0000 ; {
0000 ; port_init(); //PA,PB,PC,PD 初始化
0000 ;
0000 ; mic_startup(); //等待声控启动
0000 ;
0000 ; while(1)
0000 ; {//左(pc7) 中(pc6) 右(pc5)
0000 ;
0000 ; switch(PINB&0x0b)
0000 ; {
0000 ; case 0x09:forward();delay_ms(touch_time); turn_left();delay_ms(touch_time);break;
0000 ; // 0b 0000,1001 尾部开关接触 ,前行,左转
0000 ;
0000 ; case 0x0a:backward();delay_ms(touch_time);turn_left();delay_ms(touch_time); break;
0000 ; //右侧开关接触 ,后退,左转
0000 ;
0000 ; case 0x03:backward();delay_ms(touch_time);turn_left();delay_ms(touch_time);break;
0000 ; //左侧开关接触,后退,左转
0000 ;
0000 ; case 0x02:stop();delay_ms(touch_time*4); break;
0000 ; // 0b 0000,0010 两侧开关同时接触,停止运动,熄灭指示灯
0000 ; }
0000 ; pc = PINC & 0xE0;
0000 ; if(pc == 0x40)
0000 ; {//后退//左转
0000 ; backward();//后退
0000 ; delay_ms(xuanya_delayms);
0000 ; turn_left();//左转
0000 ; delay_ms(xuanya_delayms/2);
0000 ; }
0000 ; if(pc == 0x80)
0000 ; {//后退//左转
0000 ; backward();//后退
0000 ; delay_ms(xuanya_delayms);
0000 ; turn_left();//左转
0000 ; delay_ms(xuanya_delayms/2);
0000 ; }
0000 ; if(pc == 0x20)
0000 ; {//后退//左转
0000 ; backward();//后退
0000 ; delay_ms(xuanya_delayms);
0000 ; turn_left();//左转
0000 ; delay_ms(xuanya_delayms/2);
0000 ; }
0000 ; if(pc == 0xc0)
0000 ; {//后退//左转
0000 ; backward();//后退
0000 .dbline 82
0000 ; delay_ms(xuanya_delayms);
0000 8FEF ldi R24,255
0002 8ABB out 0x1a,R24
0004 .dbline 82
0004 8BBB out 0x1b,R24
0006 .dbline 84
0006 ; turn_left();//左转
0006 ; delay_ms(xuanya_delayms/2);
0006 2224 clr R2
0008 27BA out 0x17,R2
000A .dbline 84
000A 88BB out 0x18,R24
000C .dbline 86
000C ; }
000C ; if(pc == 0x60)
000C 81E0 ldi R24,1
000E 84BB out 0x14,R24
0010 .dbline 86
0010 8FEF ldi R24,255
0012 85BB out 0x15,R24
0014 .dbline 88
0014 ; {//后退//左转
0014 ; backward();//后退
0014 80EF ldi R24,240
0016 81BB out 0x11,R24
0018 .dbline 88
0018 8FEF ldi R24,255
001A 82BB out 0x12,R24
001C .dbline -2
001C L1:
001C .dbline 0 ; func end
001C 0895 ret
001E .dbend
001E .dbfunc e delay_us _delay_us fV
001E ; time -> R16,R17
.even
001E _delay_us::
001E .dbline -1
001E .dbline 93
001E ; delay_ms(xuanya_delayms);
001E ; turn_left();//左转
001E ; delay_ms(xuanya_delayms/2);
001E ; }
001E ; if(pc == 0xE0)
001E L3:
001E .dbline 95
001E ; {
001E ; //刹车 //led灯为流水灯
001E .dbline 96
001E ; stop();
001E 0150 subi R16,1
0020 1040 sbci R17,0
0022 .dbline 97
0022 ; PORTA = 0x3C;
0022 L4:
0022 .dbline 98
0022 ; delay_ms(xuanya_delayms);
0022 81E0 ldi R24,1
0024 90E0 ldi R25,0
0026 8017 cp R24,R16
0028 9107 cpc R25,R17
002A CCF3 brlt L3
002C .dbline -2
002C L2:
002C .dbline 0 ; func end
002C 0895 ret
002E .dbsym r time 16 I
002E .dbend
002E .dbfunc e delay_ms _delay_ms fV
002E ; time -> R20,R21
.even
002E _delay_ms::
002E 0E940000 xcall push_gset1
0032 A801 movw R20,R16
0034 .dbline -1
0034 .dbline 102
0034 ; PORTA = 0xC3;
0034 ; delay_ms(xuanya_delayms);
0034 ; }
0034 ; else
0034 05C0 xjmp L8
0036 L7:
0036 .dbline 104
0036 .dbline 105
0036 08EE ldi R16,1000
0038 13E0 ldi R17,3
003A F1DF xcall _delay_us
003C .dbline 106
003C 4150 subi R20,1
003E 5040 sbci R21,0
0040 .dbline 107
0040 L8:
0040 .dbline 103
0040 ; {
0040 4030 cpi R20,0
0042 4507 cpc R20,R21
0044 C1F7 brne L7
0046 X0:
0046 .dbline -2
0046 L6:
0046 0E940000 xcall 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 111
004C ; forward();//前行
004C ; }
004C ; }
004C ; }
004C ;
004C ; void main()
004C ; {
004C ; xuanya_car();
004C .dbline 112
004C ; }
004C 80E9 ldi R24,144
004E 82BB out 0x12,R24
0050 .dbline 113
0050 ; }
0050 8CEC ldi R24,204
0052 8BBB out 0x1b,R24
0054 .dbline -2
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 117
0056 ; }
0056 ; }
0056 ; }
0056 ; }
0056 .dbline 118
0056 ; }
0056 80E6 ldi R24,96
0058 82BB out 0x12,R24
005A .dbline 119
005A ; }
005A 83E3 ldi R24,51
005C 8BBB out 0x1b,R24
005E .dbline -2
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 122
0060 ; }
0060 ; }
0060 ; }
0060 .dbline 123
0060 ; }
0060 80E8 ldi R24,128
0062 82BB out 0x12,R24
0064 .dbline 124
0064 ; }
0064 8FEC ldi R24,207
0066 8BBB out 0x1b,R24
0068 .dbline -2
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 128
006A ; }
006A ; }
006A ; }
006A ; }
006A .dbline 129
006A ; }
006A 80E2 ldi R24,32
006C 82BB out 0x12,R24
006E .dbline 130
006E ; }
006E 83EF ldi R24,243
0070 8BBB out 0x1b,R24
0072 .dbline -2
0072 L13:
0072 .dbline 0 ; func end
0072 0895 ret
0074 .dbend
0074 .dbfunc e backward _backward fV
.even
0074 _backward::
0074 .dbline -1
0074 .dbline 134
0074 ; }
0074 ; }
0074 ; }
0074 ; }
0074 .dbline 135
0074 ; }
0074 80E5 ldi R24,80
0076 82BB out 0x12,R24
0078 .dbline 136
0078 ; }
0078 8CE3 ldi R24,60
007A 8BBB out 0x1b,R24
007C .dbline -2
007C L14:
007C .dbline 0 ; func end
007C 0895 ret
007E .dbend
007E .dbfunc e forward _forward fV
.even
007E _forward::
007E .dbline -1
007E .dbline 140
007E ; }
007E ; }
007E ; }
007E ; }
007E .dbline 141
007E ; }
007E 80EA ldi R24,160
0080 82BB out 0x12,R24
0082 .dbline 142
0082 ; }
0082 83EC ldi R24,195
0084 8BBB out 0x1b,R24
0086 .dbline -2
0086 L15:
0086 .dbline 0 ; func end
0086 0895 ret
0088 .dbend
0088 .dbfunc e stop _stop fV
.even
0088 _stop::
0088 .dbline -1
0088 .dbline 146
0088 ; }
0088 ; }
0088 ; }
0088 ; }
0088 .dbline 147
0088 ; }
0088 8FEF ldi R24,255
008A 82BB out 0x12,R24
008C .dbline 148
008C ; }
008C 8BBB out 0x1b,R24
008E .dbline -2
008E L16:
008E .dbline 0 ; func end
008E 0895 ret
0090 .dbend
0090 .dbfunc e sw_touch _sw_touch fV
0090 ; sw_in -> R20
0090 ; remote_in -> R22
.even
0090 _sw_touch::
0090 0E940000 xcall push_gset2
0094 .dbline -1
0094 .dbline 165
0094 ; }
0094 ; }
0094 ; }
0094 ; }
0094 ; }
0094 ; }
0094 ; }
0094 ; }
0094 ; }
0094 ; }
0094 ; }
0094 ; }
0094 ; }
0094 ; }
0094 ; }
0094 ; }
0094 ; }
0094 .dbline 167
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -