⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 line.lst

📁 MEGA16单片机程序包2
💻 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 940E00AC  CALL	_main
_exit:
    004A CFFF      RJMP	_exit
_delay:
  i                    --> R20
  n                    --> R16
    004B 940E00DE  CALL	push_gset1
FILE: F:\USING0~1\motor_line\main.c
(0001) #include "main.h"
(0002) 
(0003) void delay(unsigned int n)       //N ms延时函数 
(0004)   { 
    004D C009      RJMP	0x0057
(0005)    unsigned int i;
(0006)    while(n--) 
(0007)    for (i=0;i<125;i++); 
    004E 2744      CLR	R20
    004F 2755      CLR	R21
    0050 C002      RJMP	0x0053
    0051 5F4F      SUBI	R20,0xFF
    0052 4F5F      SBCI	R21,0xFF
    0053 374D      CPI	R20,0x7D
    0054 E0E0      LDI	R30,0
    0055 075E      CPC	R21,R30
    0056 F3D0      BCS	0x0051
    0057 0118      MOVW	R2,R16
    0058 5001      SUBI	R16,1
    0059 4010      SBCI	R17,0
    005A 2022      TST	R2
    005B F791      BNE	0x004E
    005C 2033      TST	R3
    005D F781      BNE	0x004E
    005E 940E00E1  CALL	pop_gset1
    0060 9508      RET
(0008)   } 
(0009)   
(0010) unsigned char ReadPin(void)
(0011) {
(0012)  unsigned char i;
(0013)  
(0014) /* 定义上拉电阻和设置高电平输出 */
(0015) /* 为端口引脚定义方向 */
(0016) PORTC = 0XFF;
_ReadPin:
  i                    --> R16
    0061 EF8F      LDI	R24,0xFF
    0062 BB85      OUT	0x15,R24
(0017) DDRC = 0X00;
    0063 2422      CLR	R2
    0064 BA24      OUT	0x14,R2
(0018) /* 为了同步插入nop 指令*/
(0019) _NOP();
    0065 0000      NOP
(0020) /* 读取端口引脚*/
(0021) i = PINC;
    0066 B303      IN	R16,0x13
    0067 9508      RET
_car_turn:
  mes                  --> R20
    0068 940E00DE  CALL	push_gset1
    006A 2F40      MOV	R20,R16
(0022) }
(0023) 
(0024) void  car_turn(unsigned char mes)
(0025) {
(0026)   switch(mes)
    006B 2755      CLR	R21
    006C 3E47      CPI	R20,0xE7
    006D E0E0      LDI	R30,0
    006E 075E      CPC	R21,R30
    006F F171      BEQ	0x009E
    0070 EE87      LDI	R24,0xE7
    0071 E090      LDI	R25,0
    0072 1784      CP	R24,R20
    0073 0795      CPC	R25,R21
    0074 F06C      BLT	0x0082
    0075 3C4F      CPI	R20,0xCF
    0076 E0E0      LDI	R30,0
    0077 075E      CPC	R21,R30
    0078 F141      BEQ	0x00A1
    0079 3C4F      CPI	R20,0xCF
    007A E0E0      LDI	R30,0
    007B 075E      CPC	R21,R30
    007C F154      BLT	0x00A7
    007D 3D4F      CPI	R20,0xDF
    007E E0E0      LDI	R30,0
    007F 075E      CPC	R21,R30
    0080 F0D1      BEQ	0x009B
    0081 C025      RJMP	0x00A7
    0082 3F47      CPI	R20,0xF7
    0083 E0E0      LDI	R30,0
    0084 075E      CPC	R21,R30
    0085 F079      BEQ	0x0095
    0086 EF87      LDI	R24,0xF7
    0087 E090      LDI	R25,0
    0088 1784      CP	R24,R20
    0089 0795      CPC	R25,R21
    008A F02C      BLT	0x0090
    008B 3E4F      CPI	R20,0xEF
    008C E0E0      LDI	R30,0
    008D 075E      CPC	R21,R30
    008E F049      BEQ	0x0098
    008F C017      RJMP	0x00A7
    0090 3F4F      CPI	R20,0xFF
    0091 E0E0      LDI	R30,0
    0092 075E      CPC	R21,R30
    0093 F081      BEQ	0x00A4
    0094 C012      RJMP	0x00A7
(0027)        {
(0028) 	    case 0xf7:  for_left();                     break;
    0095 940E00BD  CALL	_for_left
    0097 C011      RJMP	0x00A9
(0029) 		
(0030) 		case 0xef:  forward();                      break;
    0098 940E00B3  CALL	_forward
    009A C00E      RJMP	0x00A9
(0031) 					
(0032) 		case 0xdf:  for_right();                    break;
    009B 940E00C7  CALL	_for_right
    009D C00B      RJMP	0x00A9
(0033) 		            
(0034) 		case 0xe7:  for_left();                     break;
    009E 940E00BD  CALL	_for_left
    00A0 C008      RJMP	0x00A9
(0035) 		              
(0036) 		case 0xcf:  for_right();                    break;
    00A1 940E00C7  CALL	_for_right
    00A3 C005      RJMP	0x00A9
(0037) 		
(0038) 		case 0xff:  backward();                     break;
    00A4 940E00B8  CALL	_backward
    00A6 C002      RJMP	0x00A9
(0039) 		
(0040) 		default:    forward();                      break;             
    00A7 940E00B3  CALL	_forward
    00A9 940E00E1  CALL	pop_gset1
    00AB 9508      RET
(0041) 					            
(0042) 		}
(0043) }
(0044) 
(0045) 
(0046) void main()
(0047) {
(0048)  unsigned char pin = 0x00;
_main:
  pin                  --> R20
    00AC 2744      CLR	R20
    00AD C003      RJMP	0x00B1
(0049)  while(1)
(0050)    {
(0051)     pin = ReadPin();
    00AE DFB2      RCALL	_ReadPin
    00AF 2F40      MOV	R20,R16
(0052)     car_turn(pin);
    00B0 DFB7      RCALL	_car_turn
    00B1 CFFC      RJMP	0x00AE
    00B2 9508      RET
FILE: F:\USING0~1\motor_line\motor.c
(0001) #include "main.h"
(0002) 
(0003) void forward(void)
(0004) {
(0005)  DDRB=0XFF;
_forward:
    00B3 EF8F      LDI	R24,0xFF
    00B4 BB87      OUT	0x17,R24
(0006)  PORTB=(0<<PB0)|(1<<PB1)|(1<<PB3)|(0<<PB4)|(0<<PB5)|(0<<PB6);
    00B5 E08A      LDI	R24,0xA
    00B6 BB88      OUT	0x18,R24
    00B7 9508      RET
(0007)  }
(0008)  
(0009)  
(0010) void backward(void)
(0011) {
(0012)  DDRB=0XFF;
_backward:
    00B8 EF8F      LDI	R24,0xFF
    00B9 BB87      OUT	0x17,R24
(0013)  PORTB=(1<<PB0)|(0<<PB1)|(1<<PB3)|(0<<PB4)|(0<<PB5)|(0<<PB6); 
    00BA E089      LDI	R24,0x9
    00BB BB88      OUT	0x18,R24
    00BC 9508      RET
(0014) }
(0015) 
(0016) void for_left(void)
(0017) {
(0018)  DDRB=0XFF;
_for_left:
    00BD EF8F      LDI	R24,0xFF
    00BE BB87      OUT	0x17,R24
(0019)  PORTB=(0<<PB0)|(1<<PB1)|(1<<PB3)|(1<<PB4)|(0<<PB5)|(1<<PB6); 
    00BF E58A      LDI	R24,0x5A
    00C0 BB88      OUT	0x18,R24
    00C1 9508      RET
(0020) } 
(0021) 
(0022) void back_left(void)
(0023) {
(0024)  DDRB=0XFF;
_back_left:
    00C2 EF8F      LDI	R24,0xFF
    00C3 BB87      OUT	0x17,R24
(0025)  PORTB=(1<<PB0)|(0<<PB1)|(1<<PB3)|(1<<PB4)|(0<<PB5)|(1<<PB6); 
    00C4 E589      LDI	R24,0x59
    00C5 BB88      OUT	0x18,R24
    00C6 9508      RET
(0026) } 
(0027) 
(0028) void for_right(void)
(0029) {
(0030)  DDRB=0XFF;
_for_right:
    00C7 EF8F      LDI	R24,0xFF
    00C8 BB87      OUT	0x17,R24
(0031)  PORTB=(0<<PB0)|(1<<PB1)|(1<<PB3)|(0<<PB4)|(1<<PB5)|(1<<PB6); 
    00C9 E68A      LDI	R24,0x6A
    00CA BB88      OUT	0x18,R24
    00CB 9508      RET
(0032) } 
(0033) 
(0034) void back_right(void)
(0035) {
(0036)  DDRB=0XFF;
_back_right:
    00CC EF8F      LDI	R24,0xFF
    00CD BB87      OUT	0x17,R24
(0037)  PORTB=(1<<PB0)|(0<<PB1)|(1<<PB3)|(0<<PB4)|(1<<PB5)|(1<<PB6); 
    00CE E689      LDI	R24,0x69
    00CF BB88      OUT	0x18,R24
    00D0 9508      RET
(0038) } 
(0039) 
(0040) void car_stop(void)
(0041) {
(0042)  DDRB=0XFF;
_car_stop:
    00D1 EF8F      LDI	R24,0xFF
    00D2 BB87      OUT	0x17,R24
(0043)  PORTB=(0<<PB0)|(0<<PB1)|(0<<PB3)|(0<<PB4)|(0<<PB5)|(0<<PB6); 
FILE: <library>
    00D3 2422      CLR	R2
    00D4 BA28      OUT	0x18,R2
    00D5 9508      RET
push_gset5:
    00D6 92FA      ST	R15,-Y
    00D7 92EA      ST	R14,-Y
push_gset4:
    00D8 92DA      ST	R13,-Y
    00D9 92CA      ST	R12,-Y
push_gset3:
    00DA 92BA      ST	R11,-Y
    00DB 92AA      ST	R10,-Y
push_gset2:
    00DC 937A      ST	R23,-Y
    00DD 936A      ST	R22,-Y
push_gset1:
    00DE 935A      ST	R21,-Y
    00DF 934A      ST	R20,-Y
    00E0 9508      RET
pop_gset1:
    00E1 E0E1      LDI	R30,1
pop:
    00E2 9149      LD	R20,Y+
    00E3 9159      LD	R21,Y+
    00E4 FDE0      SBRC	R30,0
    00E5 9508      RET
    00E6 9169      LD	R22,Y+
    00E7 9179      LD	R23,Y+
    00E8 FDE1      SBRC	R30,1
    00E9 9508      RET
    00EA 90A9      LD	R10,Y+
    00EB 90B9      LD	R11,Y+
    00EC FDE2      SBRC	R30,2
    00ED 9508      RET
    00EE 90C9      LD	R12,Y+
    00EF 90D9      LD	R13,Y+
    00F0 FDE3      SBRC	R30,3
    00F1 9508      RET
    00F2 90E9      LD	R14,Y+
    00F3 90F9      LD	R15,Y+
    00F4 9508      RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -