📄 双足机器人.lis
字号:
.module _双足机器人.c
.area data(ram, con, rel)
0000 _turn_state0::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
0001 .dbsym e turn_state0 _turn_state0 c
0001 _turn_state1::
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
0002 .dbsym e turn_state1 _turn_state1 c
0002 _minute::
0002 .blkb 1
.area idata
0002 00 .byte 0
.area data(ram, con, rel)
0003 .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
0003 .dbsym e minute _minute c
0003 _number::
0003 .blkb 2
.area idata
0003 88BB .byte 136,187
.area data(ram, con, rel)
0005 .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
0005 .blkb 2
.area idata
0005 C191 .byte 193,145
.area data(ram, con, rel)
0007 .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
0007 .blkb 2
.area idata
0007 B294 .byte 178,148
.area data(ram, con, rel)
0009 .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
0009 .blkb 2
.area idata
0009 84B9 .byte 132,185
.area data(ram, con, rel)
000B .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
000B .blkb 2
.area idata
000B 8090 .byte 128,144
.area data(ram, con, rel)
000D .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
000D .blkb 2
.area idata
000D 00FF .byte 0,255
.area data(ram, con, rel)
000F .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
000F .dbsym e number _number A[12:12]c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
0000 .dbfunc e delay_us _delay_us fV
0000 ; time -> R16,R17
.even
0000 _delay_us::
0000 .dbline -1
0000 .dbline 13
0000 ; //电机在第一次使用之前,都得先调零,即调用stop()子程序旋转调整螺丝直到其转速为零
0000 ; //PD6\7分别控制左、右电机为白线。红黑先分别接电源和地
0000 ; //电机转速通过脉冲信号控制,
0000 ; //1.5ms停转、1.3ms正转、1.7ms为反转(都为高电平)中间插入20ms的低电平
0000 ; //PC3,4控制显示,PC3传送数据,PC4为时钟信号线
0000 ; // PC0 1分别为探测光源的左 右端口,
0000 ; //创建时间:2005年7月28日19:44~8。10
0000 ; #include "iom16v.h"
0000 ; #include "macros.h"
0000 ; unsigned char turn_state0=0,turn_state1=0,sec,second,mini,minute=0,minisecond,number[12]={0x88,0xbb,0xc1,0x91,0xb2,0x94,0x84,0xb9,0x80,0x90,0x00,0xff};
0000 ; unsigned int left,right,zhong,interval;
0000 ; void delay_us(unsigned int time)
0000 ; {//微秒级延时程序
0000 L2:
0000 .dbline 15
0000 ; do
0000 ; {
0000 .dbline 16
0000 ; time--;
0000 0150 subi R16,1
0002 1040 sbci R17,0
0004 .dbline 17
0004 ; }
0004 L3:
0004 .dbline 18
0004 ; while (time>1);
0004 81E0 ldi R24,1
0006 90E0 ldi R25,0
0008 8017 cp R24,R16
000A 9107 cpc R25,R17
000C C8F3 brlo L2
000E .dbline -2
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbsym r time 16 i
0010 .dbend
0010 .dbfunc e delay_ms _delay_ms fV
0010 ; time -> R20,R21
.even
0010 _delay_ms::
0010 0E940000 xcall push_gset1
0014 A801 movw R20,R16
0016 .dbline -1
0016 .dbline 22
0016 ; }
0016 ;
0016 ; void delay_ms(unsigned int time)
0016 ; {//毫秒级延时程序
0016 05C0 xjmp L7
0018 L6:
0018 .dbline 24
0018 .dbline 25
0018 08EE ldi R16,1000
001A 13E0 ldi R17,3
001C F1DF xcall _delay_us
001E .dbline 26
001E 4150 subi R20,1
0020 5040 sbci R21,0
0022 .dbline 27
0022 L7:
0022 .dbline 23
0022 ; while(time!=0)
0022 4030 cpi R20,0
0024 4507 cpc R20,R21
0026 C1F7 brne L6
0028 X0:
0028 .dbline -2
0028 L5:
0028 0E940000 xcall pop_gset1
002C .dbline 0 ; func end
002C 0895 ret
002E .dbsym r time 20 i
002E .dbend
002E .dbfunc e delay_20ms _delay_20ms fV
002E ; time -> R20
.even
002E _delay_20ms::
002E 0E940000 xcall push_gset1
0032 .dbline -1
0032 .dbline 33
0032 ; {
0032 ; delay_us(1000);
0032 ; time--;
0032 ; }
0032 ; }
0032 ;
0032 ;
0032 ; /////////////////小车运动////////////////////////////////////////
0032 ; void delay_20ms()//延时20ms,用于插入低电平
0032 ; {//毫秒级延时程序
0032 .dbline 34
0032 ; unsigned char time=20;
0032 44E1 ldi R20,20
0034 04C0 xjmp L11
0036 L10:
0036 .dbline 36
0036 .dbline 37
0036 0EE7 ldi R16,126
0038 10E0 ldi R17,0
003A E2DF xcall _delay_us
003C .dbline 38
003C 4A95 dec R20
003E .dbline 39
003E L11:
003E .dbline 35
003E ; while(time!=0)
003E 4423 tst R20
0040 D1F7 brne L10
0042 .dbline -2
0042 L9:
0042 0E940000 xcall pop_gset1
0046 .dbline 0 ; func end
0046 0895 ret
0048 .dbsym r time 20 c
0048 .dbend
0048 .dbfunc e delay_stop _delay_stop fV
0048 ; time -> R20
.even
0048 _delay_stop::
0048 0E940000 xcall push_gset1
004C .dbline -1
004C .dbline 42
004C ; {
004C ; delay_us(126);
004C ; time--;
004C ; }
004C ; }
004C ; void delay_stop()//延时1.5m,用于停转
004C ; {//毫秒级延时程序
004C .dbline 43
004C ; unsigned char time=1;
004C 41E0 ldi R20,1
004E 04C0 xjmp L15
0050 L14:
0050 .dbline 45
0050 .dbline 47
0050 00EA ldi R16,160
0052 10E0 ldi R17,0
0054 D5DF xcall _delay_us
0056 .dbline 48
0056 4A95 dec R20
0058 .dbline 49
0058 L15:
0058 .dbline 44
0058 ; while(time!=0)
0058 4423 tst R20
005A D1F7 brne L14
005C .dbline -2
005C L13:
005C 0E940000 xcall pop_gset1
0060 .dbline 0 ; func end
0060 0895 ret
0062 .dbsym r time 20 c
0062 .dbend
0062 .dbfunc e delay_conver _delay_conver fV
0062 ; time -> R20
.even
0062 _delay_conver::
0062 0E940000 xcall push_gset1
0066 .dbline -1
0066 .dbline 52
0066 ; {
0066 ; // delay_us(183);
0066 ; delay_us(160);
0066 ; time--;
0066 ; }
0066 ; }
0066 ; void delay_conver()//延时0.4ms,用于正反转变换
0066 ; {//毫秒级延时程序
0066 .dbline 53
0066 ; unsigned char time=1;
0066 41E0 ldi R20,1
0068 04C0 xjmp L19
006A L18:
006A .dbline 55
006A .dbline 56
006A 0BE2 ldi R16,43
006C 10E0 ldi R17,0
006E C8DF xcall _delay_us
0070 .dbline 57
0070 4A95 dec R20
0072 .dbline 58
0072 L19:
0072 .dbline 54
0072 ; while(time!=0)
0072 4423 tst R20
0074 D1F7 brne L18
0076 .dbline -2
0076 L17:
0076 0E940000 xcall pop_gset1
007A .dbline 0 ; func end
007A 0895 ret
007C .dbsym r time 20 c
007C .dbend
007C .dbfunc e delay_turn _delay_turn fV
007C ; time -> R20
.even
007C _delay_turn::
007C 0E940000 xcall push_gset1
0080 .dbline -1
0080 .dbline 61
0080 ; {
0080 ; delay_us(43);
0080 ; time--;
0080 ; }
0080 ; }
0080 ; void delay_turn()//延时0.2ms,用于转向
0080 ; {//毫秒级延时程序
0080 .dbline 62
0080 ; unsigned char time=1;
0080 41E0 ldi R20,1
0082 04C0 xjmp L23
0084 L22:
0084 .dbline 64
0084 .dbline 65
0084 04E1 ldi R16,20
0086 10E0 ldi R17,0
0088 BBDF xcall _delay_us
008A .dbline 66
008A 4A95 dec R20
008C .dbline 67
008C L23:
008C .dbline 63
008C ; while(time!=0)
008C 4423 tst R20
008E D1F7 brne L22
0090 .dbline -2
0090 L21:
0090 0E940000 xcall pop_gset1
0094 .dbline 0 ; func end
0094 0895 ret
0096 .dbsym r time 20 c
0096 .dbend
0096 .dbfunc e delay_run _delay_run fV
0096 ; time -> R20
.even
0096 _delay_run::
0096 0E940000 xcall push_gset1
009A .dbline -1
009A .dbline 70
009A ; {
009A ; delay_us(20);
009A ; time--;
009A ; }
009A ; }
009A ; void delay_run()//延时1.3m,用于正转
009A ; {//毫秒级延时程序
009A .dbline 71
009A ; unsigned char time=1;
009A 41E0 ldi R20,1
009C 04C0 xjmp L27
009E L26:
009E .dbline 73
009E .dbline 74
009E 0CE8 ldi R16,140
00A0 10E0 ldi R17,0
00A2 AEDF xcall _delay_us
00A4 .dbline 75
00A4 4A95 dec R20
00A6 .dbline 76
00A6 L27:
00A6 .dbline 72
00A6 ; while(time!=0)
00A6 4423 tst R20
00A8 D1F7 brne L26
00AA .dbline -2
00AA L25:
00AA 0E940000 xcall pop_gset1
00AE .dbline 0 ; func end
00AE 0895 ret
00B0 .dbsym r time 20 c
00B0 .dbend
00B0 .dbfunc e delay_back _delay_back fV
00B0 ; time -> R20
.even
00B0 _delay_back::
00B0 0E940000 xcall push_gset1
00B4 .dbline -1
00B4 .dbline 79
00B4 ; {
00B4 ; delay_us(140);
00B4 ; time--;
00B4 ; }
00B4 ; }
00B4 ; void delay_back()//延时1.7m,用于反转
00B4 ; {//毫秒级延时程序
00B4 .dbline 80
00B4 ; unsigned char time=1;
00B4 41E0 ldi R20,1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -