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

📄 motor_control.lst

📁 利用avr c编程的综合程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
   1               		.file	"motor_control.c"
   2               	__SREG__ = 0x3f
   3               	__SP_H__ = 0x3e
   4               	__SP_L__ = 0x3d
   5               	__CCP__  = 0x34
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
  80               	.global	n_second
  82               	n_second:
   1:motor_control.c **** #include "motor_control.h"
   2:motor_control.c **** 
   3:motor_control.c **** volatile unsigned char sys_time = 0;
   4:motor_control.c **** 
   5:motor_control.c **** #define hand_open() motor(0x3a,500,800)
   6:motor_control.c **** #define hand_close() motor(0x3a,500,1600)
   7:motor_control.c **** 
   8:motor_control.c **** #define Y_DASH_MAX 7000
   9:motor_control.c **** 
  10:motor_control.c **** #define abs(x) ((x) >= 0 ? (x) : -(x))
  11:motor_control.c **** 
  12:motor_control.c **** void n_second(unsigned char n);
  13:motor_control.c **** void get_cheese(void);
  14:motor_control.c **** 
  15:motor_control.c **** int main(void)
  16:motor_control.c **** {
  17:motor_control.c **** 	DDRB |= 0xE0;
  18:motor_control.c **** 	uartInit();
  19:motor_control.c **** 	sensorInit();
  20:motor_control.c **** 	timeInit();
  21:motor_control.c **** 	sei();
  22:motor_control.c **** 	
  23:motor_control.c **** 	unsigned char dash_start_time;
  24:motor_control.c **** 	
  25:motor_control.c **** 	get_position();
  26:motor_control.c **** 	
  27:motor_control.c **** 	get_cheese();
  28:motor_control.c **** 	
  29:motor_control.c **** 	rotate(90, 0);
  30:motor_control.c **** 	
  31:motor_control.c **** 	dash_start_time = getTime();
  32:motor_control.c **** 	
  33:motor_control.c **** 	motor(0x1a, 150, 150);
  34:motor_control.c **** 	
  35:motor_control.c **** 	get_position();
  36:motor_control.c **** 	while((getTime() - dash_start_time) < 6 && (y_loca < Y_DASH_MAX))
  37:motor_control.c **** 		get_position();
  38:motor_control.c **** 		
  39:motor_control.c **** 	motor(0x1a, 0, 0);
  40:motor_control.c **** 	
  41:motor_control.c **** 	rotate(180, 0);
  42:motor_control.c **** 	
  43:motor_control.c **** 	motor(0x1a, -100, -100);
  44:motor_control.c **** 	
  45:motor_control.c **** 	while(!(Left_backward_straight == 0 || Right_backward_straight == 0))get_sensor();
  46:motor_control.c **** 	
  47:motor_control.c **** 	// Get to the bar
  48:motor_control.c **** 	if(Left_backward_straight == 0 && Right_forward_straight != 0)
  49:motor_control.c **** 	{
  50:motor_control.c **** 		motor(0x1a, 0, -40);
  51:motor_control.c **** 		while(Right_backward_straight != 0)	
  52:motor_control.c **** 			get_sensor();
  53:motor_control.c **** 		motor(0x1a, 0, 0);
  54:motor_control.c **** 	}
  55:motor_control.c **** 	else if(Right_backward_straight == 0 && Left_backward_straight != 0)
  56:motor_control.c **** 	{
  57:motor_control.c **** 		motor(0x1a, -40, 0);
  58:motor_control.c **** 		while(Left_backward_straight != 0)
  59:motor_control.c **** 			get_sensor();
  60:motor_control.c **** 		motor(0x1a, 0, 0);
  61:motor_control.c **** 	}
  62:motor_control.c **** 	else
  63:motor_control.c **** 		motor(0x1a, 0, 0);
  64:motor_control.c **** 	// The mission ends.
  65:motor_control.c **** 	_delay_ms(500);
  66:motor_control.c **** 	
  67:motor_control.c **** 	
  68:motor_control.c **** 	motor(0x1a, 100, 100);
  69:motor_control.c **** 	
  70:motor_control.c **** 	get_position();
  71:motor_control.c **** 	while(x_loca > 2700)
  72:motor_control.c **** 		get_position();
  73:motor_control.c **** 	
  74:motor_control.c **** 	motor(0x1a, 0, 0);
  75:motor_control.c **** 	
  76:motor_control.c **** 	rotate(270, 0);
  77:motor_control.c **** 	
  78:motor_control.c **** 	motor(0x1a, -100, -100);
  79:motor_control.c **** 	
  80:motor_control.c **** 	get_sensor();
  81:motor_control.c **** 	
  82:motor_control.c **** 	while(!(Left_backward_straight == 0 && Right_backward_straight == 0))
  83:motor_control.c **** 		get_sensor();
  84:motor_control.c **** 	
  85:motor_control.c **** 	// Get to the bar
  86:motor_control.c **** 	if(Left_backward_straight == 0 && Right_forward_straight != 0)
  87:motor_control.c **** 	{
  88:motor_control.c **** 		motor(0x1a, 0, -40);
  89:motor_control.c **** 		while(Right_backward_straight != 0)	
  90:motor_control.c **** 			get_sensor();
  91:motor_control.c **** 		motor(0x1a, 0, 0);
  92:motor_control.c **** 	}
  93:motor_control.c **** 	else if(Right_backward_straight == 0 && Left_backward_straight != 0)
  94:motor_control.c **** 	{
  95:motor_control.c **** 		motor(0x1a, -40, 0);
  96:motor_control.c **** 		while(Left_backward_straight != 0)
  97:motor_control.c **** 			get_sensor();
  98:motor_control.c **** 		motor(0x1a, 0, 0);
  99:motor_control.c **** 	}
 100:motor_control.c **** 	else
 101:motor_control.c **** 		motor(0x1a, 0, 0);
 102:motor_control.c **** 	
 103:motor_control.c **** 	motor(0x1a, 0, 0);
 104:motor_control.c **** 	
 105:motor_control.c **** 	ledDispInit();
 106:motor_control.c **** 	while(1)
 107:motor_control.c **** 	{
 108:motor_control.c **** 		;
 109:motor_control.c **** 	}
 110:motor_control.c **** }
 111:motor_control.c **** 
 112:motor_control.c **** void n_second(unsigned char n)
 113:motor_control.c **** {
  83               	in r28,__SP_L__
  84               		in r29,__SP_H__
  85               	/* prologue: function */
  86 0000 DF93      	/* frame size = 1 */
  87 0002 CF93      		mov r20,r24
  89 0006 CDB7      	.LM1:
  90 0008 DEB7      		std Y+1,__zero_reg__
  91               	.LBB49:
  92               	.LBB50:
  93 000a 482F      	.LBB51:
 114:motor_control.c **** 	volatile unsigned char i = 0;
  94               	tabs	"c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h",132,0,0,.Ltext1
  95               	.Ltext1:
  97               	.LM2:
  98               		ldi r18,lo8(400)
  99               		ldi r19,hi8(400)
 100               		rjmp .L2
 101               	.L4:
 102               	.LBE52:
   1:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** /* Copyright (c) 2002, Marek Michalkiewicz
   2:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****    Copyright (c) 2007 Joerg Wunsch
   3:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****    All rights reserved.
   4:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
   5:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****    Redistribution and use in source and binary forms, with or without
   6:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****    modification, are permitted provided that the following conditions are met:
   7:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
   8:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****    * Redistributions of source code must retain the above copyright
   9:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****      notice, this list of conditions and the following disclaimer.
  10:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  11:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****    * Redistributions in binary form must reproduce the above copyright
  12:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****      notice, this list of conditions and the following disclaimer in
  13:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****      the documentation and/or other materials provided with the
  14:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****      distribution.
  15:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  16:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****    * Neither the name of the copyright holders nor the names of
  17:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****      contributors may be used to endorse or promote products derived
  18:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****      from this software without specific prior written permission.
  19:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  20:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  21:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  24:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  25:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  26:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  27:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  28:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  29:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  30:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****   POSSIBILITY OF SUCH DAMAGE. */
  31:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  32:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** /* $Id: delay_basic.h,v 1.1 2007/05/13 21:23:20 joerg_wunsch Exp $ */
  33:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  34:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** #ifndef _UTIL_DELAY_BASIC_H_
  35:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** #define _UTIL_DELAY_BASIC_H_ 1
  36:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  37:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** #include <inttypes.h>
  38:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  39:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** /** \file */
  40:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** /** \defgroup util_delay_basic <util/delay_basic.h>: Basic busy-wait delay loops
  41:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     \code
  42:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     #include <util/delay_basic.h>
  43:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     \endcode
  44:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  45:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     The functions in this header file implement simple delay loops
  46:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     that perform a busy-waiting.  They are typically used to
  47:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     facilitate short delays in the program execution.  They are
  48:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     implemented as count-down loops with a well-known CPU cycle
  49:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     count per loop iteration.  As such, no other processing can
  50:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     occur simultaneously.  It should be kept in mind that the
  51:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     functions described here do not disable interrupts.
  52:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  53:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     In general, for long delays, the use of hardware timers is
  54:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     much preferrable, as they free the CPU, and allow for
  55:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     concurrent processing of other events while the timer is
  56:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     running.  However, in particular for very short delays, the
  57:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     overhead of setting up a hardware timer is too much compared
  58:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     to the overall delay time.
  59:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  60:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     Two inline functions are provided for the actual delay algorithms.
  61:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  62:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** */
  63:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  64:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** #if !defined(__DOXYGEN__)
  65:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
  66:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
  67:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** #endif
  68:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  69:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
  70:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  71:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     Delay loop using an 8-bit counter \c __count, so up to 256
  72:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     iterations are possible.  (The value 256 would have to be passed
  73:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     as 0.)  The loop executes three CPU cycles per iteration, not
  74:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     including the overhead the compiler needs to setup the counter
  75:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     register.
  76:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  77:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
  78:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     can be achieved.
  79:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** */
  80:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** void
  81:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** _delay_loop_1(uint8_t __count)
  82:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** {
  83:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 	__asm__ volatile (
  84:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 		"1: dec %0" "\n\t"
  85:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 		"brne 1b"
  86:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 		: "=r" (__count)
  87:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 		: "0" (__count)
  88:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 	);
  89:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** }
  90:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  91:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
  92:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  93:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     Delay loop using a 16-bit counter \c __count, so up to 65536
  94:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     iterations are possible.  (The value 65536 would have to be
  95:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     passed as 0.)  The loop executes four CPU cycles per iteration,
  96:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     not including the overhead the compiler requires to setup the
  97:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     counter register pair.
  98:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 
  99:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     Thus, at a CPU speed of 1 MHz, delays of up to about 262.1
 100:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****     milliseconds can be achieved.
 101:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h ****  */
 102:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** void
 103:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** _delay_loop_2(uint16_t __count)
 104:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** {
 105:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h **** 	__asm__ volatile (
 103               	LBE50:
 104               	.LBE49:
 106 0010 31E0      	.Ltext2:
 108               	.LM3:
 109               		ldi r24,lo8(10000)
 110               		ldi r25,hi8(10000)
 111               	.L3:
 112               	.LBB56:
 113               	.LBB55:
 114               	.LBB54:
 115:motor_control.c **** 	for(; i < n; i++)
 115               	abs	"c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h",132,0,0,.Ltext3
 116               	.Ltext3:
 118 0016 97E2      	.LM4:
 119               		movw r30,r18
 120               	/* #APP */
 121               	 ;  105 "c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h" 1
 122               		1: sbiw r30,1
 123               		brne 1b
 124               	 ;  0 "" 2
 125               	/* #NOAPP */
 126               	.LBE53:
 127               	.LBE54:
 129               	.Ltext4:
 131 001a 3197      	.LM5:
 132 001c 01F4      		sbiw r24,1
 134               	.LM6:

⌨️ 快捷键说明

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