📄 trace-light.lis
字号:
.module trace-light.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 ; http://www.sl.com.cn
0000 ; PC.1检测右光敏电阻
0000 ; PC.2检测左光敏电阻
0000 ; 功能:
0000 ; 追光程序,小车追着光走。
0000 ; Chip type : ATMEGA16
0000 ; Clock frequency : 8MHz
0000 ; */
0000 ; /**********************************************************/
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include <diy0206.c> //调用sldiy0206机器人的子函数库
0000 ;
0000 ; #define light_delay 100
0000 ;
0000 ; unsigned char cds;
0000 ;
0000 ; void trace_light()
0000 ; {
0000 ; port_init(); //PA,PB,PC,PD 初始化
0000 ;
0000 ; work_status = 0x70; //置对应的工作状态标志
0000 ;
0000 ; mic_startup(); //等待声控启动
0000 ;
0000 ; while(1)
0000 ; {
0000 ; sw_touch(); //检测轻触开关
0000 ;
0000 ; cds = PINC & 0x06; //0b0000,0110
0000 ;
0000 ; if(cds == 0x00) //左右两侧都感测到光
0000 ; {//直行
0000 ; forward();
0000 ; delay_ms(light_delay); //延时
0000 ; }
0000 ; if(cds == 0x02) //0b0000,0010___pc2(右侧)感测到光
0000 ; {//慢速右转
0000 ; turn_right_s();
0000 ; delay_ms(light_delay); //延时
0000 ; }
0000 ; if(cds == 0x04) //0b0000,0100___pc1(左侧)感测到光
0000 ; {//慢速左转
0000 ; turn_left_s();
0000 ; delay_ms(light_delay); //延时
0000 ; }
0000 ; if(cds == 0x06)
0000 ; {//停止动作
0000 ; PORTA = 0x55; //延时后停止动作,等待光照重新动作
0000 ; delay_ms(light_delay*2);
0000 ; stop();
0000 ;
0000 ; }
0000 ; }
0000 ; }
0000 ;
0000 ; void main()
0000 ; {
0000 ; trace_light();
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 .dbline 82
0000 ; }
0000 8FEF ldi R24,255
0002 8ABB out 0x1a,R24
0004 .dbline 82
0004 8BBB out 0x1b,R24
0006 .dbline 84
0006 ; }
0006 ; }
0006 2224 clr R2
0008 27BA out 0x17,R2
000A .dbline 84
000A 88BB out 0x18,R24
000C .dbline 86
000C ; }
000C ; }
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 ; }
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 ; }
001E ; }
001E ; }
001E ; }
001E ; }
001E L3:
001E .dbline 95
001E ; }
001E ; }
001E .dbline 96
001E ; }
001E 0150 subi R16,1
0020 1040 sbci R17,0
0022 .dbline 97
0022 ; }
0022 L4:
0022 .dbline 98
0022 ; }
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 ; }
0034 ; }
0034 ; }
0034 ; }
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 ; }
004C ; }
004C ; }
004C ; }
004C ; }
004C ; }
004C ; }
004C ; }
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -