📄 text1.lst
字号:
__start:
__text_start:
002A E5CF LDI R28,0x5F
002B E0D4 LDI R29,4
002C BFCD OUT 0x3D,R28
002D BFDE OUT 0x3E,R29
002E 51C0 SUBI R28,0x10
002F 40D0 SBCI R29,0
0030 EA0A LDI R16,0xAA
0031 8308 STD Y+0,R16
0032 2400 CLR R0
0033 E6E0 LDI R30,0x60
0034 E0F0 LDI R31,0
0035 E010 LDI R17,0
0036 36E0 CPI R30,0x60
0037 07F1 CPC R31,R17
0038 F011 BEQ 0x003B
0039 9201 ST R0,Z+
003A CFFB RJMP 0x0036
003B 8300 STD Z+0,R16
003C E5E4 LDI R30,0x54
003D E0F0 LDI R31,0
003E E6A0 LDI R26,0x60
003F E0B0 LDI R27,0
0040 E010 LDI R17,0
0041 35E4 CPI R30,0x54
0042 07F1 CPC R31,R17
0043 F021 BEQ 0x0048
0044 95C8 LPM
0045 9631 ADIW R30,1
0046 920D ST R0,X+
0047 CFF9 RJMP 0x0041
0048 940E0064 CALL _main
_exit:
004A CFFF RJMP _exit
FILE: D:\afish\工作内容\DIY-08-16\M16\DIY-08-16\双管寻迹\双管寻迹.c
(0001) /********************************************************************************/
(0002) /*
(0003) 广州双龙电子
(0004) WWW.SL.COM.CN
(0005) 接线方法:
(0006) 两个光电管并排在小车前方中间,即PC.7,PC.5控制信号线
(0007) 功能:
(0008) 两个红光电对管寻迹
(0009) LED4~5是前进指示灯;LED1~3是左转指示灯;LED6~8右转指示灯
(0010) Chip type : ATMEGA16
(0011) Clock frequency : 8MHz
(0012) */
(0013) /*******************************************************************************/
(0014)
(0015) #include <iom16v.h>
(0016) #include <macros.h>
(0017) #define xtal 8
(0018) void delay_1ms(void) //1ms延时
(0019) {
(0020) unsigned int i;
(0021) for(i=1;i<(unsigned int)(xtal*143-2);i++)
_delay_1ms:
i --> R16
004B E001 LDI R16,1
004C E010 LDI R17,0
004D C002 RJMP 0x0050
004E 5F0F SUBI R16,0xFF
004F 4F1F SBCI R17,0xFF
0050 3706 CPI R16,0x76
0051 E0E4 LDI R30,4
0052 071E CPC R17,R30
0053 F3D0 BCS 0x004E
0054 9508 RET
_delay:
i --> R20
n --> R22
0055 940E00B7 CALL push_gset2
0057 01B8 MOVW R22,R16
(0022) ;
(0023) }
(0024) void delay(unsigned int n)
(0025) {
(0026) unsigned int i;
(0027) for(i=0;i<n;i++)
0058 2744 CLR R20
0059 2755 CLR R21
005A C003 RJMP 0x005E
(0028) delay_1ms();
005B DFEF RCALL _delay_1ms
005C 5F4F SUBI R20,0xFF
005D 4F5F SBCI R21,0xFF
005E 1746 CP R20,R22
005F 0757 CPC R21,R23
0060 F3D0 BCS 0x005B
0061 940E00AE CALL pop_gset2
0063 9508 RET
(0029) }
(0030) void main(void)
(0031) {
(0032) DDRA=0xff; //初始化端口
_main:
0064 EF8F LDI R24,0xFF
0065 BB8A OUT 0x1A,R24
(0033) PORTA=0xff;
0066 BB8B OUT 0x1B,R24
(0034) DDRD=0xf0;
0067 EF80 LDI R24,0xF0
0068 BB81 OUT 0x11,R24
(0035) PORTD=0x0f;
0069 E08F LDI R24,0xF
006A BB82 OUT 0x12,R24
(0036) DDRC=0x00;
006B 2422 CLR R2
006C BA24 OUT 0x14,R2
(0037) PORTC=0xff;
006D EF8F LDI R24,0xFF
006E BB85 OUT 0x15,R24
(0038) for(;;)
(0039) {
(0040) switch(PINC&0xA0)
006F B343 IN R20,0x13
0070 2755 CLR R21
0071 7A40 ANDI R20,0xA0
0072 7050 ANDI R21,0
0073 3240 CPI R20,0x20
0074 E0E0 LDI R30,0
0075 075E CPC R21,R30
0076 F131 BEQ 0x009D
0077 E280 LDI R24,0x20
0078 E090 LDI R25,0
0079 1784 CP R24,R20
007A 0795 CPC R25,R21
007B F024 BLT 0x0080
007C 3040 CPI R20,0
007D 0745 CPC R20,R21
007E F131 BEQ 0x00A5
007F CFEF RJMP 0x006F
0080 3840 CPI R20,0x80
0081 E0E0 LDI R30,0
0082 075E CPC R21,R30
0083 F089 BEQ 0x0095
0084 3840 CPI R20,0x80
0085 E0E0 LDI R30,0
0086 075E CPC R21,R30
0087 F33C BLT 0x006F
0088 3A40 CPI R20,0xA0
0089 E0E0 LDI R30,0
008A 075E CPC R21,R30
008B F009 BEQ 0x008D
008C CFE2 RJMP 0x006F
(0041) {
(0042) case 0xA0:PORTD=0xAF ;PORTA=0xE7; delay(1);break; //直行,点亮前进指示灯
008D EA8F LDI R24,0xAF
008E BB82 OUT 0x12,R24
008F EE87 LDI R24,0xE7
0090 BB8B OUT 0x1B,R24
0091 E001 LDI R16,1
0092 E010 LDI R17,0
0093 DFC1 RCALL _delay
0094 CFDA RJMP 0x006F
(0043) case 0x80:PORTD=0x60 ;PORTA=0x1F; delay(1);break; //转左,点亮左转指示灯
0095 E680 LDI R24,0x60
0096 BB82 OUT 0x12,R24
0097 E18F LDI R24,0x1F
0098 BB8B OUT 0x1B,R24
0099 E001 LDI R16,1
009A E010 LDI R17,0
009B DFB9 RCALL _delay
009C CFD2 RJMP 0x006F
(0044) case 0x20:PORTD=0x90 ;PORTA=0xF8; delay(1);break; //转右,点亮右转指示灯
009D E980 LDI R24,0x90
009E BB82 OUT 0x12,R24
009F EF88 LDI R24,0xF8
00A0 BB8B OUT 0x1B,R24
00A1 E001 LDI R16,1
00A2 E010 LDI R17,0
00A3 DFB1 RCALL _delay
00A4 CFCA RJMP 0x006F
(0045) case 0x00:PORTD=0xAF ;PORTA=0xff; delay(1);break; //熄灭全部LED
FILE: <library>
00A5 EA8F LDI R24,0xAF
00A6 BB82 OUT 0x12,R24
00A7 EF8F LDI R24,0xFF
00A8 BB8B OUT 0x1B,R24
00A9 E001 LDI R16,1
00AA E010 LDI R17,0
00AB DFA9 RCALL _delay
00AC CFC2 RJMP 0x006F
00AD 9508 RET
pop_gset2:
00AE E0E2 LDI R30,2
00AF 940C00BD JMP pop
push_gset5:
00B1 92FA ST R15,-Y
00B2 92EA ST R14,-Y
push_gset4:
00B3 92DA ST R13,-Y
00B4 92CA ST R12,-Y
push_gset3:
00B5 92BA ST R11,-Y
00B6 92AA ST R10,-Y
push_gset2:
00B7 937A ST R23,-Y
00B8 936A ST R22,-Y
push_gset1:
00B9 935A ST R21,-Y
00BA 934A ST R20,-Y
00BB 9508 RET
pop_gset1:
00BC E0E1 LDI R30,1
pop:
00BD 9149 LD R20,Y+
00BE 9159 LD R21,Y+
00BF FDE0 SBRC R30,0
00C0 9508 RET
00C1 9169 LD R22,Y+
00C2 9179 LD R23,Y+
00C3 FDE1 SBRC R30,1
00C4 9508 RET
00C5 90A9 LD R10,Y+
00C6 90B9 LD R11,Y+
00C7 FDE2 SBRC R30,2
00C8 9508 RET
00C9 90C9 LD R12,Y+
00CA 90D9 LD R13,Y+
00CB FDE3 SBRC R30,3
00CC 9508 RET
00CD 90E9 LD R14,Y+
00CE 90F9 LD R15,Y+
00CF 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -