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

📄 motor.lst

📁 MEGA16单片机程序包2
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0007) /* 定义上拉电阻和设置高电平输出 */
(0008) /* 为端口引脚定义方向 */
(0009) PORTC = 0XFF;
_ReadPin:
  i                    --> R16
    0119 EF8F      LDI	R24,0xFF
    011A BB85      OUT	0x15,R24
(0010) DDRC = 0X00;
    011B 2422      CLR	R2
    011C BA24      OUT	0x14,R2
(0011) /* 为了同步插入nop 指令*/
(0012) _NOP();
    011D 0000      NOP
(0013) /* 读取端口引脚*/
(0014) i = PINC;
    011E B303      IN	R16,0x13
    011F 9508      RET
_car_turn:
  mes                  --> R20
    0120 940E01CD  CALL	push_gset1
    0122 2F40      MOV	R20,R16
(0015) }
(0016) 
(0017) void  car_turn(unsigned char mes)
(0018) {
(0019)   switch(mes)
    0123 2755      CLR	R21
    0124 3F48      CPI	R20,0xF8
    0125 E0E0      LDI	R30,0
    0126 075E      CPC	R21,R30
    0127 F111      BEQ	0x014A
    0128 3F49      CPI	R20,0xF9
    0129 E0E0      LDI	R30,0
    012A 075E      CPC	R21,R30
    012B F109      BEQ	0x014D
    012C 3F4A      CPI	R20,0xFA
    012D E0E0      LDI	R30,0
    012E 075E      CPC	R21,R30
    012F F181      BEQ	0x0160
    0130 3F4B      CPI	R20,0xFB
    0131 E0E0      LDI	R30,0
    0132 075E      CPC	R21,R30
    0133 F409      BNE	0x0135
    0134 C038      RJMP	0x016D
    0135 3F4C      CPI	R20,0xFC
    0136 E0E0      LDI	R30,0
    0137 075E      CPC	R21,R30
    0138 F409      BNE	0x013A
    0139 C046      RJMP	0x0180
    013A 3F4D      CPI	R20,0xFD
    013B E0E0      LDI	R30,0
    013C 075E      CPC	R21,R30
    013D F409      BNE	0x013F
    013E C054      RJMP	0x0193
    013F 3F4E      CPI	R20,0xFE
    0140 E0E0      LDI	R30,0
    0141 075E      CPC	R21,R30
    0142 F409      BNE	0x0144
    0143 C052      RJMP	0x0196
    0144 3F4F      CPI	R20,0xFF
    0145 E0E0      LDI	R30,0
    0146 075E      CPC	R21,R30
    0147 F409      BNE	0x0149
    0148 C060      RJMP	0x01A9
    0149 C06B      RJMP	0x01B5
(0020)        {
(0021) 	    case 0xf8:  forward();                     break;
    014A 940E004B  CALL	_forward
    014C C068      RJMP	0x01B5
(0022) 		
(0023) 		case 0xf9:  {
(0024) 					  back_left();
    014D 940E005A  CALL	_back_left
(0025) 					  delay(1000);
    014F EE08      LDI	R16,0xE8
    0150 E013      LDI	R17,3
    0151 940E006E  CALL	_delay
(0026) 					  car_stop();
    0153 940E0069  CALL	_car_stop
(0027) 					  delay(1000);
    0155 EE08      LDI	R16,0xE8
    0156 E013      LDI	R17,3
    0157 940E006E  CALL	_delay
(0028) 					  for_right(); 
    0159 940E005F  CALL	_for_right
(0029) 					  delay(1000);
    015B EE08      LDI	R16,0xE8
    015C E013      LDI	R17,3
    015D 940E006E  CALL	_delay
(0030) 					};                             break;
    015F C055      RJMP	0x01B5
(0031) 					
(0032) 		case 0xfa:  {
(0033) 		            backward();
    0160 940E0050  CALL	_backward
(0034) 		            delay(1000);
    0162 EE08      LDI	R16,0xE8
    0163 E013      LDI	R17,3
    0164 940E006E  CALL	_delay
(0035) 					for_left();
    0166 940E0055  CALL	_for_left
(0036) 					delay(1000);
    0168 EE08      LDI	R16,0xE8
    0169 E013      LDI	R17,3
    016A 940E006E  CALL	_delay
(0037) 					};                             break;
    016C C048      RJMP	0x01B5
(0038) 					
(0039) 					                             
(0040) 		case 0xfb:  {
(0041) 		              back_left(); 
    016D 940E005A  CALL	_back_left
(0042) 					  delay(1000);
    016F EE08      LDI	R16,0xE8
    0170 E013      LDI	R17,3
    0171 940E006E  CALL	_delay
(0043) 					  car_stop();
    0173 940E0069  CALL	_car_stop
(0044) 					  delay(1000);
    0175 EE08      LDI	R16,0xE8
    0176 E013      LDI	R17,3
    0177 940E006E  CALL	_delay
(0045) 					  for_right();
    0179 940E005F  CALL	_for_right
(0046) 					  delay(1000);
    017B EE08      LDI	R16,0xE8
    017C E013      LDI	R17,3
    017D 940E006E  CALL	_delay
(0047) 					};                             break;
    017F C035      RJMP	0x01B5
(0048) 					
(0049) 		case 0xfc:  {
(0050) 		              back_right();
    0180 940E0064  CALL	_back_right
(0051) 					  delay(1000);
    0182 EE08      LDI	R16,0xE8
    0183 E013      LDI	R17,3
    0184 940E006E  CALL	_delay
(0052) 					  car_stop();
    0186 940E0069  CALL	_car_stop
(0053) 					  delay(1000);
    0188 EE08      LDI	R16,0xE8
    0189 E013      LDI	R17,3
    018A 940E006E  CALL	_delay
(0054) 					  for_left();
    018C 940E0055  CALL	_for_left
(0055) 					  delay(1000);
    018E EE08      LDI	R16,0xE8
    018F E013      LDI	R17,3
    0190 940E006E  CALL	_delay
(0056) 				    };                             break;
    0192 C022      RJMP	0x01B5
(0057) 					
(0058) 		case 0xfd:    forward();                   break;
    0193 940E004B  CALL	_forward
    0195 C01F      RJMP	0x01B5
(0059) 		
(0060) 		case 0xfe:  {
(0061) 		              back_right();
    0196 940E0064  CALL	_back_right
(0062) 					  delay(1000);
    0198 EE08      LDI	R16,0xE8
    0199 E013      LDI	R17,3
    019A 940E006E  CALL	_delay
(0063) 					  car_stop();
    019C 940E0069  CALL	_car_stop
(0064) 					  delay(1000);
    019E EE08      LDI	R16,0xE8
    019F E013      LDI	R17,3
    01A0 940E006E  CALL	_delay
(0065) 					  for_left();
    01A2 940E0055  CALL	_for_left
(0066) 					  delay(1000);
    01A4 EE08      LDI	R16,0xE8
    01A5 E013      LDI	R17,3
    01A6 940E006E  CALL	_delay
(0067) 					};                             break;
    01A8 C00C      RJMP	0x01B5
(0068) 					
(0069) 		case 0xff:  {
(0070) 		              backward(); 
    01A9 940E0050  CALL	_backward
(0071) 		              delay(1000);
    01AB EE08      LDI	R16,0xE8
    01AC E013      LDI	R17,3
    01AD 940E006E  CALL	_delay
(0072) 					  for_left();
    01AF 940E0055  CALL	_for_left
(0073) 					  delay(1000);
    01B1 EE08      LDI	R16,0xE8
    01B2 E013      LDI	R17,3
    01B3 940E006E  CALL	_delay
(0074) 					}                              break; 
(0075) 					
(0076)         default:                                   break;
    01B5 940E01D0  CALL	pop_gset1
    01B7 9508      RET
(0077) 		
(0078) 		}
(0079) }
(0080) 
(0081) 
(0082) void main()
(0083) {
(0084)  unsigned char pin = 0x00;
_main:
  pin                  --> R20
    01B8 2744      CLR	R20
    01B9 C003      RJMP	0x01BD
(0085)  while(1)
(0086)    {
(0087)     pin = ReadPin();
    01BA DF5E      RCALL	_ReadPin
    01BB 2F40      MOV	R20,R16
(0088)     car_turn(pin);
FILE: <library>
    01BC DF63      RCALL	_car_turn
    01BD CFFC      RJMP	0x01BA
    01BE 9508      RET
pop_gset2:
    01BF E0E2      LDI	R30,2
    01C0 940C01D1  JMP	pop
pop_gset3:
    01C2 E0E4      LDI	R30,4
    01C3 940C01D1  JMP	pop
push_gset5:
    01C5 92FA      ST	R15,-Y
    01C6 92EA      ST	R14,-Y
push_gset4:
    01C7 92DA      ST	R13,-Y
    01C8 92CA      ST	R12,-Y
push_gset3:
    01C9 92BA      ST	R11,-Y
    01CA 92AA      ST	R10,-Y
push_gset2:
    01CB 937A      ST	R23,-Y
    01CC 936A      ST	R22,-Y
push_gset1:
    01CD 935A      ST	R21,-Y
    01CE 934A      ST	R20,-Y
    01CF 9508      RET
pop_gset1:
    01D0 E0E1      LDI	R30,1
pop:
    01D1 9149      LD	R20,Y+
    01D2 9159      LD	R21,Y+
    01D3 FDE0      SBRC	R30,0
    01D4 9508      RET
    01D5 9169      LD	R22,Y+
    01D6 9179      LD	R23,Y+
    01D7 FDE1      SBRC	R30,1
    01D8 9508      RET
    01D9 90A9      LD	R10,Y+
    01DA 90B9      LD	R11,Y+
    01DB FDE2      SBRC	R30,2
    01DC 9508      RET
    01DD 90C9      LD	R12,Y+
    01DE 90D9      LD	R13,Y+
    01DF FDE3      SBRC	R30,3
    01E0 9508      RET
    01E1 90E9      LD	R14,Y+
    01E2 90F9      LD	R15,Y+
    01E3 9508      RET

⌨️ 快捷键说明

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