📄 remote.s
字号:
.module remote.c
.area text(rom, con, rel)
.dbfile D:/icc/include/diy0206.c
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 81
; /*******************************************/
; /* 广州天河双龙电子公司
; http://www.sl.com.cn
;
;
;
; 功能:
; 遥控机器人
; 通过无线遥控调节机器人行走路线
; 按下A键:机器人右转
; 按下B键:机器人后退
; 按下C键:停止运动
; 按下D键:机器人左转
; */
; /********************************************/
; #include <iom16v.h>
; #include <macros.h>
; #include <diy0206.c>
;
; unsigned char remote_in;
;
; void remote_car()
; {//遥控车程序
;
; port_init();//调用端口初始化函数
; PORTA = 0xFF;
; mic_startup();//等待声控启动函数
; PORTA = 0x00;
; delay_ms(20);
; while(1)
; {
; remote_in = PINB & 0xF0;
; switch (remote_in)
; {//检测遥控器是否有键按下
; case 0x00:
; forward(); //前行
; delay_ms(10);
; break;
; case 0x20: // < A >
; turn_right(); //右转
; delay_ms(10);
; break;
; case 0x40: // < B >
; backward(); //后退
; delay_ms(10);
; break;
; case 0x10: // < C >
; stop(); //停止运动
; delay_ms(10);
; break;
; case 0x80: // < D >
; turn_left(); //左转
; delay_ms(10);
; break;
; }
;
;
; }
; }
;
; void main()
; {
; remote_car();
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 82
; }
ldi R24,255
out 0x1a,R24
.dbline 82
out 0x1b,R24
.dbline 84
; }
; }
clr R2
out 0x17,R2
.dbline 84
out 0x18,R24
.dbline 86
; }
; }
ldi R24,1
out 0x14,R24
.dbline 86
ldi R24,255
out 0x15,R24
.dbline 88
; }
; }
ldi R24,240
out 0x11,R24
.dbline 88
ldi R24,255
out 0x12,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay_us _delay_us fV
; time -> R16,R17
.even
_delay_us::
.dbline -1
.dbline 93
; }
; }
; }
; }
; }
L3:
.dbline 95
; }
; }
.dbline 96
; }
subi R16,1
sbci R17,0
.dbline 97
; }
L4:
.dbline 98
; }
ldi R24,1
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L3
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbsym r time 16 I
.dbend
.dbfunc e delay_ms _delay_ms fV
; time -> R20,R21
.even
_delay_ms::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 102
; }
; }
; }
; }
xjmp L8
L7:
.dbline 104
.dbline 105
ldi R16,1000
ldi R17,3
xcall _delay_us
.dbline 106
subi R20,1
sbci R21,0
.dbline 107
L8:
.dbline 103
; }
cpi R20,0
cpc R20,R21
brne L7
X0:
.dbline -2
L6:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r time 20 i
.dbend
.dbfunc e turn_right _turn_right fV
.even
_turn_right::
.dbline -1
.dbline 111
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 112
; }
ldi R24,144
out 0x12,R24
.dbline 113
; }
ldi R24,204
out 0x1b,R24
.dbline -2
L10:
.dbline 0 ; func end
ret
.dbend
.dbfunc e turn_left _turn_left fV
.even
_turn_left::
.dbline -1
.dbline 117
; }
; }
; }
; }
.dbline 118
; }
ldi R24,96
out 0x12,R24
.dbline 119
; }
ldi R24,51
out 0x1b,R24
.dbline -2
L11:
.dbline 0 ; func end
ret
.dbend
.dbfunc e turn_right_s _turn_right_s fV
.even
_turn_right_s::
.dbline -1
.dbline 122
; }
; }
; }
.dbline 123
; }
ldi R24,128
out 0x12,R24
.dbline 124
; }
ldi R24,207
out 0x1b,R24
.dbline -2
L12:
.dbline 0 ; func end
ret
.dbend
.dbfunc e turn_left_s _turn_left_s fV
.even
_turn_left_s::
.dbline -1
.dbline 128
; }
; }
; }
; }
.dbline 129
; }
ldi R24,32
out 0x12,R24
.dbline 130
; }
ldi R24,243
out 0x1b,R24
.dbline -2
L13:
.dbline 0 ; func end
ret
.dbend
.dbfunc e backward _backward fV
.even
_backward::
.dbline -1
.dbline 134
; }
; }
; }
; }
.dbline 135
; }
ldi R24,80
out 0x12,R24
.dbline 136
; }
ldi R24,60
out 0x1b,R24
.dbline -2
L14:
.dbline 0 ; func end
ret
.dbend
.dbfunc e forward _forward fV
.even
_forward::
.dbline -1
.dbline 140
; }
; }
; }
; }
.dbline 141
; }
ldi R24,160
out 0x12,R24
.dbline 142
; }
ldi R24,195
out 0x1b,R24
.dbline -2
L15:
.dbline 0 ; func end
ret
.dbend
.dbfunc e stop _stop fV
.even
_stop::
.dbline -1
.dbline 146
; }
; }
; }
; }
.dbline 147
; }
ldi R24,255
out 0x12,R24
.dbline 148
; }
out 0x1b,R24
.dbline -2
L16:
.dbline 0 ; func end
ret
.dbend
.dbfunc e sw_touch _sw_touch fV
; sw_in -> R20
; remote_in -> R22
.even
_sw_touch::
xcall push_gset2
.dbline -1
.dbline 165
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 167
; }
; }
in R20,0x13
andi R20,16
.dbline 168
; }
brne L18
.dbline 169
; }
.dbline 170
; }
xcall _backward
.dbline 171
; }
ldi R16,250
ldi R17,0
xcall _delay_ms
.dbline 173
; }
; }
lds R24,_work_status
cpi R24,112
brne L20
.dbline 174
; }
.dbline 175
; }
xcall _stop
xjmp L23
L22:
.dbline 177
.dbline 178
ldi R24,85
out 0x1b,R24
.dbline 179
ldi R16,250
ldi R17,0
xcall _delay_ms
.dbline 180
ldi R24,170
out 0x1b,R24
.dbline 181
ldi R16,250
ldi R17,0
xcall _delay_ms
.dbline 182
L23:
.dbline 176
; }
xjmp L22
X1:
.dbline 183
; }
; }
; }
; }
; }
; }
; }
L20:
.dbline 185
; }
; }
xcall _turn_left
.dbline 186
; }
ldi R16,250
ldi R17,0
xcall _delay_ms
.dbline 187
; }
L18:
.dbline 189
; }
; }
in R20,0x16
andi R20,11
.dbline 190
; }
cpi R20,9
brne L25
.dbline 191
; }
.dbline 192
; }
xcall _forward
.dbline 193
; }
ldi R16,250
ldi R17,0
xcall _delay_ms
.dbline 195
; }
; }
xcall _turn_left
.dbline 196
; }
ldi R16,250
ldi R17,0
xcall _delay_ms
.dbline 197
; }
L25:
.dbline 198
; }
cpi R20,10
brne L27
.dbline 199
; }
.dbline 200
; }
xcall _backward
.dbline 201
; }
ldi R16,250
ldi R17,0
xcall _delay_ms
.dbline 203
; }
; }
xcall _turn_left
.dbline 204
; }
ldi R16,250
ldi R17,0
xcall _delay_ms
.dbline 205
; }
L27:
.dbline 206
; }
cpi R20,3
brne L29
.dbline 207
; }
.dbline 208
; }
xcall _backward
.dbline 209
; }
ldi R16,250
ldi R17,0
xcall _delay_ms
.dbline 211
; }
; }
xcall _turn_left
.dbline 212
; }
ldi R16,250
ldi R17,0
xcall _delay_ms
.dbline 213
; }
L29:
.dbline 214
; }
cpi R20,2
brne L31
.dbline 215
; }
.dbline 216
; }
xcall _stop
.dbline 217
; }
ldi R16,1000
ldi R17,3
xcall _delay_ms
xjmp L34
L33:
.dbline 219
; }
; }
.dbline 220
; }
in R20,0x13
andi R20,16
.dbline 221
; }
brne L36
.dbline 222
; }
.dbline 222
xjmp L35
L36:
.dbline 223
; }
ldi R24,85
out 0x1b,R24
.dbline 224
; }
ldi R16,250
ldi R17,0
xcall _delay_ms
.dbline 225
; }
ldi R24,170
out 0x1b,R24
.dbline 226
; }
ldi R16,250
ldi R17,0
xcall _delay_ms
.dbline 227
; }
in R22,0x16
andi R22,240
.dbline 228
; }
cpi R22,16
breq L42
cpi R22,32
breq L42
cpi R22,64
breq L42
cpi R22,128
brne L38
L42:
.dbline 229
; }
.dbline 229
xjmp L35
L38:
.dbline 230
L34:
.dbline 218
xjmp L33
L35:
.dbline 231
L31:
.dbline -2
L17:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r sw_in 20 c
.dbsym r remote_in 22 c
.dbend
.dbfunc e mic_startup _mic_startup fV
; mic_in -> R16
.even
_mic_startup::
.dbline -1
.dbline 235
; }
; }
; }
; }
; }
; }
xjmp L45
L44:
.dbline 238
; }
; }
; }
.dbline 239
; }
in R16,0x16
andi R16,4
.dbline 240
; }
brne L47
.dbline 240
.dbline 240
xjmp L46
L47:
.dbline 241
L45:
.dbline 237
xjmp L44
L46:
.dbline -2
L43:
.dbline 0 ; func end
ret
.dbsym r mic_in 16 c
.dbend
.dbfunc e remote_auto_time _remote_auto_time fV
; remote_in -> R16
.even
_remote_auto_time::
.dbline -1
.dbline 259
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 261
; }
; }
in R16,0x16
andi R16,240
.dbline 262
; }
clr R17
cpi R16,32
ldi R30,0
cpc R17,R30
breq L53
ldi R24,32
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L67
L66:
cpi R16,0
cpc R16,R17
brne X4
xjmp L51
X4:
X2:
cpi R16,0
ldi R30,0
cpc R17,R30
brge X5
xjmp L50
X5:
L68:
cpi R16,16
ldi R30,0
cpc R17,R30
brne X6
xjmp L59
X6:
xjmp L50
L67:
cpi R16,64
ldi R30,0
cpc R17,R30
breq L56
cpi R16,64
ldi R30,0
cpc R17,R30
brge X7
xjmp L50
X7:
L69:
cpi R16,128
ldi R30,0
cpc R17,R30
brne X8
xjmp L62
X8:
xjmp L50
X3:
.dbline 263
; }
L53:
.dbline 265
; }
; }
lds R24,_delay_time2
lds R25,_delay_time2+1
sbiw R24,50
sts _delay_time2+1,R25
sts _delay_time2,R24
.dbline 266
; }
cpi R24,50
ldi R30,0
cpc R25,R30
breq X9
xjmp L51
X9:
.dbline 267
; }
.dbline 267
ldi R24,100
ldi R25,0
sts _delay_time2+1,R25
sts _delay_time2,R24
.dbline 267
.dbline 268
; }
xjmp L51
L56:
.dbline 270
; }
; }
lds R24,_delay_time1
lds R25,_delay_time1+1
adiw R24,50
sts _delay_time1+1,R25
sts _delay_time1,R24
.dbline 271
; }
cpi R24,2
ldi R30,8
cpc R25,R30
brne L51
.dbline 272
; }
.dbline 272
ldi R24,2000
ldi R25,7
sts _delay_time1+1,R25
sts _delay_time1,R24
.dbline 272
.dbline 273
; }
xjmp L51
L59:
.dbline 275
; }
; }
lds R24,_delay_time1
lds R25,_delay_time1+1
sbiw R24,50
sts _delay_time1+1,R25
sts _delay_time1,R24
.dbline 276
; }
cpi R24,50
ldi R30,0
cpc R25,R30
brne L51
.dbline 277
; }
.dbline 277
ldi R24,100
ldi R25,0
sts _delay_time1+1,R25
sts _delay_time1,R24
.dbline 277
.dbline 278
; }
xjmp L51
L62:
.dbline 280
; }
; }
lds R24,_delay_time2
lds R25,_delay_time2+1
adiw R24,50
sts _delay_time2+1,R25
sts _delay_time2,R24
.dbline 281
; }
cpi R24,2
ldi R30,8
cpc R25,R30
brne L51
.dbline 282
; }
.dbline 282
ldi R24,2000
ldi R25,7
sts _delay_time2+1,R25
sts _delay_time2,R24
.dbline 282
.dbline 283
; }
.dbline 285
; }
; }
L50:
L51:
.dbline -2
L49:
.dbline 0 ; func end
ret
.dbsym r remote_in 16 c
.dbend
.dbfile D:\afish\工作内容\DIY-08-16\M16\DIY-08-16\遥控车\remote.c
.dbfunc e remote_car _remote_car fV
.even
_remote_car::
xcall push_gset1
.dbline -1
.dbline 23
.dbline 25
xcall _port_init
.dbline 26
ldi R24,255
out 0x1b,R24
.dbline 27
xcall _mic_startup
.dbline 28
clr R2
out 0x1b,R2
.dbline 29
ldi R16,20
ldi R17,0
xcall _delay_ms
xjmp L72
L71:
.dbline 31
.dbline 32
in R24,0x16
andi R24,240
sts _remote_in,R24
.dbline 33
mov R20,R24
clr R21
cpi R20,32
ldi R30,0
cpc R21,R30
breq L78
ldi R24,32
ldi R25,0
cp R24,R20
cpc R25,R21
brlt L83
L82:
cpi R20,0
cpc R20,R21
breq L77
X10:
cpi R20,0
ldi R30,0
cpc R21,R30
brlt L74
L84:
cpi R20,16
ldi R30,0
cpc R21,R30
breq L80
xjmp L74
L83:
cpi R20,64
ldi R30,0
cpc R21,R30
breq L79
cpi R20,64
ldi R30,0
cpc R21,R30
brlt L74
L85:
cpi R20,128
ldi R30,0
cpc R21,R30
breq L81
xjmp L74
X11:
.dbline 34
L77:
.dbline 36
xcall _forward
.dbline 37
ldi R16,10
ldi R17,0
xcall _delay_ms
.dbline 38
xjmp L75
L78:
.dbline 40
xcall _turn_right
.dbline 41
ldi R16,10
ldi R17,0
xcall _delay_ms
.dbline 42
xjmp L75
L79:
.dbline 44
xcall _backward
.dbline 45
ldi R16,10
ldi R17,0
xcall _delay_ms
.dbline 46
xjmp L75
L80:
.dbline 48
xcall _stop
.dbline 49
ldi R16,10
ldi R17,0
xcall _delay_ms
.dbline 50
xjmp L75
L81:
.dbline 52
xcall _turn_left
.dbline 53
ldi R16,10
ldi R17,0
xcall _delay_ms
.dbline 54
L74:
L75:
.dbline 58
L72:
.dbline 30
xjmp L71
X12:
.dbline -2
L70:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 62
.dbline 63
xcall _remote_car
.dbline -2
L86:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile D:\afish\工作内容\DIY-08-16\M16\DIY-08-16\遥控车\remote.c
_remote_in::
.blkb 1
.dbsym e remote_in _remote_in c
_delay_time2::
.blkb 2
.dbfile D:/icc/include/diy0206.c
.dbsym e delay_time2 _delay_time2 i
_delay_time1::
.blkb 2
.dbsym e delay_time1 _delay_time1 i
_work_status::
.blkb 1
.dbsym e work_status _work_status c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -