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

📄 car.lst

📁 飞思卡尔系列单片机智能汽车程序源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
     108 0158      MOVW	R10,R16
(0201) 	// PORTB=0X00;
(0202) 	// delay(T-aa);
(0203) 	 
(0204) }
(0205) 
(0206) void BACK(unsigned int bb)   // 直线后退
(0207) {     
(0208) 	
(0209) 		PORTB=0X09|0X30;   
     109 E389      LDI	R24,0x39
     10A BB88      OUT	0x18,R24
(0210) 	    delay(bb);
     10B 0185      MOVW	R16,R10
     10C DF80      RCALL	_delay
(0211) 		PORTB=0X00;   
     10D 2422      CLR	R2
     10E BA28      OUT	0x18,R2
(0212) 	    delay(T-bb);
     10F 9100 0060 LDS	R16,T
     111 9110 0061 LDS	R17,T+1
     113 190A      SUB	R16,R10
     114 091B      SBC	R17,R11
     115 DF77      RCALL	_delay
     116 90B9      LD	R11,Y+
     117 90A9      LD	R10,Y+
     118 9508      RET
_GTOL:
  cc                   --> R10
     119 92AA      ST	R10,-Y
     11A 92BA      ST	R11,-Y
     11B 0158      MOVW	R10,R16
(0213) }
(0214) 
(0215) void GTOL(unsigned int cc)    //前左转
(0216) {
(0217) 	PORTB=0X02|0X30;
     11C E382      LDI	R24,0x32
     11D BB88      OUT	0x18,R24
(0218) 	delay(cc); 
     11E 0185      MOVW	R16,R10
     11F DF6D      RCALL	_delay
(0219) 	PORTB=0X00;
     120 2422      CLR	R2
     121 BA28      OUT	0x18,R2
(0220) 	delay(T-cc);  
     122 9100 0060 LDS	R16,T
     124 9110 0061 LDS	R17,T+1
     126 190A      SUB	R16,R10
     127 091B      SBC	R17,R11
     128 DF64      RCALL	_delay
     129 90B9      LD	R11,Y+
     12A 90A9      LD	R10,Y+
     12B 9508      RET
_GTOR:
  dd                   --> R10
     12C 92AA      ST	R10,-Y
     12D 92BA      ST	R11,-Y
     12E 0158      MOVW	R10,R16
(0221) }
(0222) 
(0223) void GTOR(unsigned int dd)    //前右转
(0224) {
(0225) 	
(0226) 	 PORTB=0X04|0X30;
     12F E384      LDI	R24,0x34
     130 BB88      OUT	0x18,R24
(0227) 	 delay(dd);
     131 0185      MOVW	R16,R10
     132 DF5A      RCALL	_delay
(0228) 	 PORTB=0X00;
     133 2422      CLR	R2
     134 BA28      OUT	0x18,R2
(0229) 	 delay(T-dd);
     135 9100 0060 LDS	R16,T
     137 9110 0061 LDS	R17,T+1
     139 190A      SUB	R16,R10
     13A 091B      SBC	R17,R11
     13B DF51      RCALL	_delay
     13C 90B9      LD	R11,Y+
     13D 90A9      LD	R10,Y+
     13E 9508      RET
_BTOR:
  cc                   --> R10
     13F 92AA      ST	R10,-Y
     140 92BA      ST	R11,-Y
     141 0158      MOVW	R10,R16
(0230) }
(0231) void BTOR(unsigned int cc)    //后左转
(0232) {
(0233) 
(0234) 	PORTB=0X010|0X30;
     142 E380      LDI	R24,0x30
     143 BB88      OUT	0x18,R24
(0235) 	delay(cc); 
     144 0185      MOVW	R16,R10
     145 DF47      RCALL	_delay
(0236) 	PORTB=0X00;
     146 2422      CLR	R2
     147 BA28      OUT	0x18,R2
(0237) 	delay(T-cc);  
     148 9100 0060 LDS	R16,T
     14A 9110 0061 LDS	R17,T+1
     14C 190A      SUB	R16,R10
     14D 091B      SBC	R17,R11
     14E DF3E      RCALL	_delay
     14F 90B9      LD	R11,Y+
     150 90A9      LD	R10,Y+
     151 9508      RET
_BTOL:
  dd                   --> R10
     152 92AA      ST	R10,-Y
     153 92BA      ST	R11,-Y
     154 0158      MOVW	R10,R16
(0238) }
(0239) 
(0240) void BTOL(unsigned int dd)    //后右转
(0241) {
(0242) 	 
(0243) 
(0244) 	 PORTB=0X08|0X30;
     155 E388      LDI	R24,0x38
     156 BB88      OUT	0x18,R24
(0245) 	 delay(dd);
     157 0185      MOVW	R16,R10
     158 DF34      RCALL	_delay
(0246) 	 PORTB=0X00;
     159 2422      CLR	R2
     15A BA28      OUT	0x18,R2
(0247) 	 delay(T-dd);
     15B 9100 0060 LDS	R16,T
     15D 9110 0061 LDS	R17,T+1
     15F 190A      SUB	R16,R10
     160 091B      SBC	R17,R11
     161 DF2B      RCALL	_delay
     162 90B9      LD	R11,Y+
     163 90A9      LD	R10,Y+
     164 9508      RET
_Linecheck_GO:
  ss                   --> R10
     165 940E 022F CALL	push_xgset300C
(0248) 	
(0249) }
(0250) //============================================================================================
(0251) //函数: void  line_check_GO(void)
(0252) //语法:void  line_check_GO(void)
(0253) //描述: 前进黑白寻迹检测
(0254) //参数:无
(0255) //返回:无
(0256) //============================================================================================	
(0257) void  Linecheck_GO(void)
(0258) { 
(0259)   
(0260)   unsigned char ss;
(0261)   PORTA = 0XFF;
     167 EF8F      LDI	R24,0xFF
     168 BB8B      OUT	0x1B,R24
(0262)   DDRA  = 0x00;//PA 为输入口
     169 2422      CLR	R2
     16A BA2A      OUT	0x1A,R2
(0263)   delay(1);
     16B E001      LDI	R16,1
     16C E010      LDI	R17,0
     16D DF1F      RCALL	_delay
(0264)     // _NOP();
(0265)     ss=PINA;
     16E B2A9      IN	R10,0x19
(0266)      switch(ss)
     16F 2D4A      MOV	R20,R10
     170 2755      CLR	R21
     171 3E4F      CPI	R20,0xEF
     172 E0E0      LDI	R30,0
     173 075E      CPC	R21,R30
     174 F0B1      BEQ	0x018B
     175 3E4F      CPI	R20,0xEF
     176 E0E0      LDI	R30,0
     177 075E      CPC	R21,R30
     178 F40C      BGE	0x017A
     179 C043      RJMP	0x01BD
     17A 3F47      CPI	R20,0xF7
     17B E0E0      LDI	R30,0
     17C 075E      CPC	R21,R30
     17D F0B9      BEQ	0x0195
     17E 3F4B      CPI	R20,0xFB
     17F E0E0      LDI	R30,0
     180 075E      CPC	R21,R30
     181 F0E9      BEQ	0x019F
     182 3F4D      CPI	R20,0xFD
     183 E0E0      LDI	R30,0
     184 075E      CPC	R21,R30
     185 F119      BEQ	0x01A9
     186 3F4E      CPI	R20,0xFE
     187 E0E0      LDI	R30,0
     188 075E      CPC	R21,R30
     189 F149      BEQ	0x01B3
     18A C032      RJMP	0x01BD
(0267) 	      {
(0268) 		      case 0xEF:  GTOL(600);i=0; break;
     18B E508      LDI	R16,0x58
     18C E012      LDI	R17,2
     18D DF8B      RCALL	_GTOL
     18E 2422      CLR	R2
     18F 2433      CLR	R3
     190 9230 0063 STS	i+1,R3
     192 9220 0062 STS	i,R2
     194 C031      RJMP	0x01C6
(0269) 		      case 0xF7:  GTOL(600); i=0;break;
     195 E508      LDI	R16,0x58
     196 E012      LDI	R17,2
     197 DF81      RCALL	_GTOL
     198 2422      CLR	R2
     199 2433      CLR	R3
     19A 9230 0063 STS	i+1,R3
     19C 9220 0062 STS	i,R2
     19E C027      RJMP	0x01C6
(0270) 			  case 0xFB:  GO(700); i=0; break;
     19F EB0C      LDI	R16,0xBC
     1A0 E012      LDI	R17,2
     1A1 DF5A      RCALL	_GO
     1A2 2422      CLR	R2
     1A3 2433      CLR	R3
     1A4 9230 0063 STS	i+1,R3
     1A6 9220 0062 STS	i,R2
     1A8 C01D      RJMP	0x01C6
(0271) 		      case 0XFD:  GTOR(600);i=0; break;
     1A9 E508      LDI	R16,0x58
     1AA E012      LDI	R17,2
     1AB DF80      RCALL	_GTOR
     1AC 2422      CLR	R2
     1AD 2433      CLR	R3
     1AE 9230 0063 STS	i+1,R3
     1B0 9220 0062 STS	i,R2
     1B2 C013      RJMP	0x01C6
(0272) 	          case 0xFE:  GTOR(600); i=0;break;
     1B3 E508      LDI	R16,0x58
     1B4 E012      LDI	R17,2
     1B5 DF76      RCALL	_GTOR
     1B6 2422      CLR	R2
     1B7 2433      CLR	R3
     1B8 9230 0063 STS	i+1,R3
     1BA 9220 0062 STS	i,R2
     1BC C009      RJMP	0x01C6
(0273) 		      default :  i++;  
     1BD 9180 0062 LDS	R24,i
     1BF 9190 0063 LDS	R25,i+1
     1C1 9601      ADIW	R24,1
     1C2 9390 0063 STS	i+1,R25
     1C4 9380 0062 STS	i,R24
(0274)           }        
(0275)     //if( i>=300)
(0276) 	if(0) 
     1C6 C000      RJMP	0x01C7
(0277) 	 {
(0278) 	  STOP();
(0279) 	  i=300;
(0280) 	  }    
(0281)     else  GO(1000);  // if (i!=0)
     1C7 EE08      LDI	R16,0xE8
     1C8 E013      LDI	R17,3
     1C9 DF32      RCALL	_GO
     1CA 940C 0234 JMP	pop_xgset300C
_Linecheck_BACK:
  ss                   --> R10
     1CC 940E 022F CALL	push_xgset300C
(0282) }
(0283) //============================================================================================
(0284) //函数: void  line_check_BACK(void)
(0285) //语法:void  line_check_BACK(void)
(0286) //描述: 前进黑白寻迹检测
(0287) //参数:无
(0288) //返回:无
(0289) //============================================================================================	
(0290) void  Linecheck_BACK(void)
(0291) { 
(0292)   unsigned char ss;
(0293)   PORTA = 0XFF;
     1CE EF8F      LDI	R24,0xFF
     1CF BB8B      OUT	0x1B,R24
(0294)   DDRA  = 0x00;//PA 为输入口
     1D0 2422      CLR	R2
     1D1 BA2A      OUT	0x1A,R2
(0295)   delay(1);
     1D2 E001      LDI	R16,1
     1D3 E010      LDI	R17,0
     1D4 DEB8      RCALL	_delay
(0296)     // _NOP();
(0297)     ss=PINA;
     1D5 B2A9      IN	R10,0x19
(0298)      switch(ss)
     1D6 2D4A      MOV	R20,R10
     1D7 2755      CLR	R21
     1D8 3E41      CPI	R20,0xE1
     1D9 E0E0      LDI	R30,0
     1DA 075E      CPC	R21,R30
     1DB F129      BEQ	0x0201
     1DC 3E42      CPI	R20,0xE2
     1DD E0E0      LDI	R30,0
     1DE 075E      CPC	R21,R30
     1DF F0E9      BEQ	0x01FD
     1E0 3E44      CPI	R20,0xE4
     1E1 E0E0      LDI	R30,0
     1E2 075E      CPC	R21,R30
     1E3 F0A9      BEQ	0x01F9
     1E4 3E48      CPI	R20,0xE8
     1E5 E0E0      LDI	R30,0
     1E6 075E      CPC	R21,R30
     1E7 F069      BEQ	0x01F5
     1E8 3E41      CPI	R20,0xE1
     1E9 E0E0      LDI	R30,0
     1EA 075E      CPC	R21,R30
     1EB F0CC      BLT	0x0205
     1EC 3F40      CPI	R20,0xF0
     1ED E0E0      LDI	R30,0
     1EE 075E      CPC	R21,R30
     1EF F009      BEQ	0x01F1
     1F0 C014      RJMP	0x0205
(0299) 	      {
(0300) 		      case 0xf0:  BTOR(600); break;
     1F1 E508      LDI	R16,0x58
     1F2 E012      LDI	R17,2
     1F3 DF4B      RCALL	_BTOR
     1F4 C013      RJMP	0x0208
(0301) 		      case 0xe8:  BTOR(600); break;
     1F5 E508      LDI	R16,0x58
     1F6 E012      LDI	R17,2
     1F7 DF47      RCALL	_BTOR
     1F8 C00F      RJMP	0x0208
(0302) 			  case 0xe4:  BACK(700); break;
     1F9 EB0C      LDI	R16,0xBC
     1FA E012      LDI	R17,2
     1FB DF0A      RCALL	_BACK
     1FC C00B      RJMP	0x0208
(0303) 		      case 0Xe2:  BTOL(600); break;
     1FD E508      LDI	R16,0x58
     1FE E012      LDI	R17,2
     1FF DF52      RCALL	_BTOL
     200 C007      RJMP	0x0208
(0304) 	          case 0xe1:  BTOL(600); break;
     201 E508      LDI	R16,0x58
     202 E012      LDI	R17,2
     203 DF4E      RCALL	_BTOL
     204 C003      RJMP	0x0208
(0305) 		      default :  BACK(700); 
     205 EB0C      LDI	R16,0xBC
     206 E012      LDI	R17,2
     207 DEFE      RCALL	_BACK
(0306)      }                      
     208 940C 0234 JMP	pop_xgset300C
(0307) }
(0308) void blance(void)
(0309) {
(0310)  if(temp<0x9f)
_blance:
     20A 9180 0068 LDS	R24,temp
     20C 9190 0069 LDS	R25,temp+1
     20E 398F      CPI	R24,0x9F
     20F E0E0      LDI	R30,0
     210 079E      CPC	R25,R30
     211 F418      BCC	0x0215
(0311)  GO(1000);
     212 EE08      LDI	R16,0xE8
     213 E013      LDI	R17,3
     214 DEE7      RCALL	_GO
(0312)  //Linecheck_GO();
(0313)  PORTC = temp;
     215 9020 0068 LDS	R2,temp
     217 9030 0069 LDS	R3,temp+1
     219 BA25      OUT	0x15,R2
(0314)  if(temp>0xa0)
     21A EA80      LDI	R24,0xA0
     21B E090      LDI	R25,0
     21C 1582      CP	R24,R2
     21D 0593      CPC	R25,R3
     21E F418      BCC	0x0222
(0315)  BACK(700);
     21F EB0C      LDI	R16,0xBC
     220 E012      LDI	R17,2
     221 DEE4      RCALL	_BACK
(0316)  PORTC = temp;
     222 9020 0068 LDS	R2,temp
     224 9030 0069 LDS	R3,temp+1
     226 BA25      OUT	0x15,R2
     227 9508      RET
FILE: F:\car\main.c
(0001) #include <iom32v.h>
(0002) #include  "linecheck.h"
(0003) //#include   "blance.h"
(0004) //============================================================================================
(0005) //函数: void main() 
(0006) //语法:void main()
(0007) //描述:主函数
(0008) //参数  无
(0009) //返回:无
(0010) //============================================================================================ 
(0011) void main()
(0012) {  
(0013)     port_init(); 
_main:
     228 DE28      RCALL	_port_init
(0014) 	INT1_init();
     229 DE34      RCALL	_INT1_init
(0015)   init_devices();
     22A DE5E      RCALL	_init_devices
     22B C001      RJMP	0x022D
(0016)     while(1)
(0017) 	{ 
(0018) 	   blance();
FILE: <library>
     22C DFDD      RCALL	_blance
     22D CFFE      RJMP	0x022C
     22E 9508      RET
push_xgset300C:
     22F 935A      ST	R21,-Y
     230 934A      ST	R20,-Y
     231 92BA      ST	R11,-Y
     232 92AA      ST	R10,-Y
     233 9508      RET
pop_xgset300C:
     234 90A9      LD	R10,Y+
     235 90B9      LD	R11,Y+
     236 9149      LD	R20,Y+
     237 9159      LD	R21,Y+
     238 9508      RET

⌨️ 快捷键说明

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