📄 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) WWW.SL.COM.CN
(0004)
(0005) PC.7,PC.6,PC.5分别检测左中右三个光电管
(0006) 功能:
(0007) 三个红光电对管寻迹
(0008) LED4~5是前进指示灯;LED1~3是左转指示灯;LED6~8右转指示灯
(0009) Chip type : ATMEGA16
(0010) Clock frequency : 8MHz
(0011) */
(0012) /***************************************************************************************/
(0013)
(0014) #include <iom16v.h>
(0015) #include <macros.h>
(0016) #define xtal 8
(0017) void delay_1ms(void) //1ms延时
(0018) {
(0019) unsigned int i;
(0020) 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 940E00FB CALL push_gset2
0057 01B8 MOVW R22,R16
(0021) ;
(0022) }
(0023) void delay(unsigned int n)
(0024) {
(0025) unsigned int i;
(0026) for(i=0;i<n;i++)
0058 2744 CLR R20
0059 2755 CLR R21
005A C003 RJMP 0x005E
(0027) 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 940E00F2 CALL pop_gset2
0063 9508 RET
(0028) }
(0029) void main(void)
(0030) {
(0031) DDRA=0xff; //初始化端口
_main:
0064 EF8F LDI R24,0xFF
0065 BB8A OUT 0x1A,R24
(0032) PORTA=0xff;
0066 BB8B OUT 0x1B,R24
(0033) DDRD=0xf0;
0067 EF80 LDI R24,0xF0
0068 BB81 OUT 0x11,R24
(0034) PORTD=0x0f;
0069 E08F LDI R24,0xF
006A BB82 OUT 0x12,R24
(0035) DDRC=0x00;
006B 2422 CLR R2
006C BA24 OUT 0x14,R2
(0036) PORTC=0xff;
006D EF8F LDI R24,0xFF
006E BB85 OUT 0x15,R24
(0037) for(;;)
(0038) {
(0039) switch(PINC&0xe0)
006F B343 IN R20,0x13
0070 2755 CLR R21
0071 7E40 ANDI R20,0xE0
0072 7050 ANDI R21,0
0073 3640 CPI R20,0x60
0074 E0E0 LDI R30,0
0075 075E CPC R21,R30
0076 F409 BNE 0x0078
0077 C051 RJMP 0x00C9
0078 E680 LDI R24,0x60
0079 E090 LDI R25,0
007A 1784 CP R24,R20
007B 0795 CPC R25,R21
007C F0A4 BLT 0x0091
007D 3240 CPI R20,0x20
007E E0E0 LDI R30,0
007F 075E CPC R21,R30
0080 F409 BNE 0x0082
0081 C037 RJMP 0x00B9
0082 E280 LDI R24,0x20
0083 E090 LDI R25,0
0084 1784 CP R24,R20
0085 0795 CPC R25,R21
0086 F024 BLT 0x008B
0087 3040 CPI R20,0
0088 0745 CPC R20,R21
0089 F139 BEQ 0x00B1
008A CFE4 RJMP 0x006F
008B 3440 CPI R20,0x40
008C E0E0 LDI R30,0
008D 075E CPC R21,R30
008E F409 BNE 0x0090
008F C031 RJMP 0x00C1
0090 CFDE RJMP 0x006F
0091 3A40 CPI R20,0xA0
0092 E0E0 LDI R30,0
0093 075E CPC R21,R30
0094 F409 BNE 0x0096
0095 C043 RJMP 0x00D9
0096 EA80 LDI R24,0xA0
0097 E090 LDI R25,0
0098 1784 CP R24,R20
0099 0795 CPC R25,R21
009A F034 BLT 0x00A1
009B 3840 CPI R20,0x80
009C E0E0 LDI R30,0
009D 075E CPC R21,R30
009E F409 BNE 0x00A0
009F C031 RJMP 0x00D1
00A0 CFCE RJMP 0x006F
00A1 3C40 CPI R20,0xC0
00A2 E0E0 LDI R30,0
00A3 075E CPC R21,R30
00A4 F409 BNE 0x00A6
00A5 C03B RJMP 0x00E1
00A6 3C40 CPI R20,0xC0
00A7 E0E0 LDI R30,0
00A8 075E CPC R21,R30
00A9 F40C BGE 0x00AB
00AA CFC4 RJMP 0x006F
00AB 3E40 CPI R20,0xE0
00AC E0E0 LDI R30,0
00AD 075E CPC R21,R30
00AE F409 BNE 0x00B0
00AF C039 RJMP 0x00E9
00B0 CFBE RJMP 0x006F
(0040) {
(0041) case 0x00:PORTD=0x5F ;PORTA=0xff; delay(1);break; //出界,后退探测,熄灭全部LED
00B1 E58F LDI R24,0x5F
00B2 BB82 OUT 0x12,R24
00B3 EF8F LDI R24,0xFF
00B4 BB8B OUT 0x1B,R24
00B5 E001 LDI R16,1
00B6 E010 LDI R17,0
00B7 DF9D RCALL _delay
00B8 CFB6 RJMP 0x006F
(0042) case 0x20:PORTD=0x90 ;PORTA=0xf8; delay(1);break; //转右,点亮右转指示灯
00B9 E980 LDI R24,0x90
00BA BB82 OUT 0x12,R24
00BB EF88 LDI R24,0xF8
00BC BB8B OUT 0x1B,R24
00BD E001 LDI R16,1
00BE E010 LDI R17,0
00BF DF95 RCALL _delay
00C0 CFAE RJMP 0x006F
(0043) case 0x40:PORTD=0xaf ;PORTA=0xe7; delay(1);break; // 前进,点亮前进指示灯
00C1 EA8F LDI R24,0xAF
00C2 BB82 OUT 0x12,R24
00C3 EE87 LDI R24,0xE7
00C4 BB8B OUT 0x1B,R24
00C5 E001 LDI R16,1
00C6 E010 LDI R17,0
00C7 DF8D RCALL _delay
00C8 CFA6 RJMP 0x006F
(0044) case 0x60:PORTD=0xaf ;PORTA=0xe7; delay(1);break; //前进,点亮前进指示灯
00C9 EA8F LDI R24,0xAF
00CA BB82 OUT 0x12,R24
00CB EE87 LDI R24,0xE7
00CC BB8B OUT 0x1B,R24
00CD E001 LDI R16,1
00CE E010 LDI R17,0
00CF DF85 RCALL _delay
00D0 CF9E RJMP 0x006F
(0045) case 0x80:PORTD=0x60 ;PORTA=0x1f; delay(1);break; //转左,点亮左转指示灯
00D1 E680 LDI R24,0x60
00D2 BB82 OUT 0x12,R24
00D3 E18F LDI R24,0x1F
00D4 BB8B OUT 0x1B,R24
00D5 E001 LDI R16,1
00D6 E010 LDI R17,0
00D7 DF7D RCALL _delay
00D8 CF96 RJMP 0x006F
(0046) case 0xa0:PORTD=0xaf ;PORTA=0xe7; delay(1);break; //直行,点亮前进指示灯
00D9 EA8F LDI R24,0xAF
00DA BB82 OUT 0x12,R24
00DB EE87 LDI R24,0xE7
00DC BB8B OUT 0x1B,R24
00DD E001 LDI R16,1
00DE E010 LDI R17,0
00DF DF75 RCALL _delay
00E0 CF8E RJMP 0x006F
(0047) case 0xc0:PORTD=0xaf ;PORTA=0x0e7; delay(1);break; //前进,点亮前进指示灯
00E1 EA8F LDI R24,0xAF
00E2 BB82 OUT 0x12,R24
00E3 EE87 LDI R24,0xE7
00E4 BB8B OUT 0x1B,R24
00E5 E001 LDI R16,1
00E6 E010 LDI R17,0
00E7 DF6D RCALL _delay
00E8 CF86 RJMP 0x006F
(0048) case 0xe0:PORTD=0x90 ;PORTA=0x1f; delay(1);break; //十字线或终点,转左探测,点亮左转指示灯
FILE: <library>
00E9 E980 LDI R24,0x90
00EA BB82 OUT 0x12,R24
00EB E18F LDI R24,0x1F
00EC BB8B OUT 0x1B,R24
00ED E001 LDI R16,1
00EE E010 LDI R17,0
00EF DF65 RCALL _delay
00F0 CF7E RJMP 0x006F
00F1 9508 RET
pop_gset2:
00F2 E0E2 LDI R30,2
00F3 940C0101 JMP pop
push_gset5:
00F5 92FA ST R15,-Y
00F6 92EA ST R14,-Y
push_gset4:
00F7 92DA ST R13,-Y
00F8 92CA ST R12,-Y
push_gset3:
00F9 92BA ST R11,-Y
00FA 92AA ST R10,-Y
push_gset2:
00FB 937A ST R23,-Y
00FC 936A ST R22,-Y
push_gset1:
00FD 935A ST R21,-Y
00FE 934A ST R20,-Y
00FF 9508 RET
pop_gset1:
0100 E0E1 LDI R30,1
pop:
0101 9149 LD R20,Y+
0102 9159 LD R21,Y+
0103 FDE0 SBRC R30,0
0104 9508 RET
0105 9169 LD R22,Y+
0106 9179 LD R23,Y+
0107 FDE1 SBRC R30,1
0108 9508 RET
0109 90A9 LD R10,Y+
010A 90B9 LD R11,Y+
010B FDE2 SBRC R30,2
010C 9508 RET
010D 90C9 LD R12,Y+
010E 90D9 LD R13,Y+
010F FDE3 SBRC R30,3
0110 9508 RET
0111 90E9 LD R14,Y+
0112 90F9 LD R15,Y+
0113 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -