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

📄 app.s

📁 易于atmage128和ucos的手动机器人控制程序。
💻 S
📖 第 1 页 / 共 5 页
字号:
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 128
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 4224
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 128
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 4224
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 4224
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 128
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 592
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 4688
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 1008
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 5104
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 592
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 4688
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 592
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 4688
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 128
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 4224
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 1023
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 5119
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 976
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 5072
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 4688
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 592
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 592
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 4688
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 4224
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 128
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 128
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 4224
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 128
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 4224
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 4224
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 128
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 672
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 4768
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
_heading::
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 2,2
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 2,2
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
_dly_time::
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 2,2
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,1
	.area data(ram, con, rel)
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
_speed_model::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.area text(rom, con, rel)
	.even
_main::
	sbiw R28,3
; /*
; *************************************************************************************************************
; *                                                uC/OS-II
; *                                          The Real-Time Kernel
; *
; *                                                ATmega128
; *
; * File : APP.C
; * By   : Jean J. Labrosse
; *************************************************************************************************************
; */
; 
; #include  <includes.h>
; 
; /*
; **************************************************************************************************************
; *                                               CONSTANTS
; *
; * Note(s) : 1) See OS_CFG.H for the default stack size: 'OS_TASK_STK_SIZE'
; **************************************************************************************************************
; */
; 
; #define  CPU_CLK_FREQ   8000000L    				   //时钟频率
;    
; 
; 
; /*
; **************************************************************************************************************
; *                                               VARIABLES
; **************************************************************************************************************
; */
; 
; OS_STK  TaskStartStk[OS_TASK_STK_SIZE];				  //起始任务堆zai
; OS_STK  Task_time_show_Stk[OS_TASK_STK_SIZE];
; OS_STK  motor_move_l_Stk[OS_TASK_STK_SIZE];	 		  //左行进电机堆zai
; OS_STK  motor_move_r_Stk[OS_TASK_STK_SIZE];	 		  //左行进电机堆zai
; OS_STK  motor_move_m_Stk[OS_TASK_STK_SIZE];	 		  //左行进电机堆zai
; OS_STK  motor_move_t_Stk[OS_TASK_STK_SIZE];	 		  //左行进电机堆zai
; 
; /*
; **************************************************************************************************************
; *                                           FUNCTION PROTOTYPES
; **************************************************************************************************************
; */
; /**********************************************任务**********************************/
;      
; static void  Task_Start(void *p_arg);			      //初始任务
; static void  Task_time_show(void *p_arg);
; static void  motor_move_l(void *p_arg);	 			  //左行进电机任务
; static void  motor_move_r(void *p_arg);	 			  //右行进电机任务
; static void  motor_move_m(void *p_arg);	 			  //中行进电机任务
; static void  motor_move_t(void *p_arg);	 			  //中行进电机任务
; 
; 
; /**********************************************其他函数**********************************/
; static void  Task_action(void);				          //运动任务
; static void  reset_action(void);				      //复位任务
; static void  Task_cfg(void);				          //机器人配置
; static void  IO_Init(void);						      //IO初始化
; void  main(void);
; void  LED_send_16b(unsigned int LED_message);		  //LED发送命令函数		  
; void  intit_LED(void);								  //LED初始化函数
; void  LED_show(void);		
; void  psin(void);									  //给ps发送讯号
; void  psout(int j);									  //接收ps讯号
; void  scan(void);									  //手柄扫描	
; void  data_save(void);								  //EEprom 存数据
; void  data_read(void);								  //EEPROM读数据
; void Init_TC(void);
; 
; unsigned char EEPROMread(int Address);			 	  //EEPROM读函数
; int EEPROMwrite(int Address,unsigned char Data);	  //EEPROM写函数
; 	
; /*********************************************邮箱**************************/
; 
; OS_EVENT *time_Box;									  //时间信号 邮箱指针
; OS_EVENT *motor_l_Box;								  //左行进电机 驱动邮箱指针
; OS_EVENT *motor_r_Box;								  //右行进电机 驱动邮箱指针
; OS_EVENT *motor_m_Box;								  //中行进电机 驱动邮箱指针
; OS_EVENT *motor_t_Box;								  //中行进电机 驱动邮箱指针
; 
; int *time_key_ptr;	  	  			  //动作信号发送消息指针 时间消息指针...
; int *time_key,*motor_l_key,*motor_r_key,
; *motor_m_key,*motor_t_key;			  	  			  //动作信号接收消息指针 时间消息指针....
; int time_key_msg=1,motor_l_msg,motor_r_msg,
; motor_m_msg,motor_t_msg;	  						   //动作信号 时间信号 底盘运动邮箱 发送信号
; char err;		 		  		                  	  //错误信号存储
; 			 
; /*******************************************全局变量*********************************/
; INT8U LED_reg[8][2]={{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}};
; unsigned char tx_chr;								  //tx_chr发送的字符
; unsigned char rx_chr[3][8][2]; 				   		  //rx_chr接收的字符,3个,每个记录一个bit位, 0为上次键值,1为本次键值
; unsigned char rx_chr_b[3][2]; 						  //接受字符,3个,低位先行,每个8bit
; unsigned int  robot_model=0;		  				  // robot_model机器人工作模式,0正常模式,1记忆模式,2回放模式,3配置模式,默认值为0,robot_model_tmp模式值临时存储值
; unsigned int  data_ptr=0x0001;						  //数据存储地址指针
; INT8U robot_model_key=0,robot_model_tmp=0; 		                  //模式切换钥匙
; INT16U time_count=0,					  //舵机控制脉冲信号计时
; robot_model_dly=0,						  //测试模式下的延时计数
; auto_s_2=0,auto_x_2=0,					  //自动提升 计数器
; //手抓参数配置--------
; hand_cy[4]={0,0,0,0},				  //存储手抓运动角度数值
; hand_st_0[4]={4,7,4,7},hand_st_1[4]={6,5,6,4},hand_st_2[4]={5,6,5,6},hand_st_3[4]={4,7,4,7},hand_whe[4]={2,2,2,2}, //hand_st_1 打开电源后手抓的位置  hand_st_2 计时开始后手抓的位置 	 hand_st_3闭合后位置   hand_whe的位置 0 开 1 半开 2 闭和	3 半开	  					  //hand_cy手抓位置信号 对应手抓0-4  控制矩形波高电平时间 取值 2-10 dly_time 慢起时间 秒 1 
; 
;   
; 
; //提升电机,行程开关相关-------------------
; contact_t[4][2]={{0,0},{0,0},{0,0},{0,0}};  // 0 1 2 3 行程开关的值  上次值 0  本次值1
; t_model=0;  //
; 
; 
; 
; //电机的速度值及转向,分别对应    up3,dawnx,  up x, dawn3,   up , down ,   3  ,  x   ,左平移,右平移  建议设为 03f0以下  03ff可能会异常
; INT16U speed[2][2][3][13]={{{{0x0180,0x1180,0x0180,0x1180,0x0100,0x1100,0x0000,0x0000,0x0070,0x1070,0x0000,0x03ff,0x13ff},//正常模式,第一步速度,左电机
;                              {0x0180,0x1180,0x1180,0x0180,0x0000,0x0000,0x0100,0x1100,0x1070,0x0070,0x0000,0x0000,0x0000},//正常模式,第一步速度,右电机
; 						     {0x0000,0x0000,0x0080,0x1080,0x0080,0x1080,0x1080,0x0080,0x0250,0x1250,0x0000,0x0000,0x0000}},//正常模式,第一步速度,中电机
; 							
; 							{{0x0180,0x1180,0x0180,0x1180,0x0100,0x1100,0x0000,0x0000,0x0070,0x1070,0x0000,0x03ff,0x13ff},//正常模式,第二步速度,左电机
;                              {0x0180,0x1180,0x1180,0x0180,0x0000,0x0000,0x0100,0x1100,0x1070,0x0070,0x0000,0x0000,0x0000},//正常模式,第二步速度,右电机
; 						     {0x0000,0x0000,0x0080,0x1080,0x0080,0x1080,0x1080,0x0080,0x0250,0x1250,0x0000,0x0000,0x0000}},//正常模式,第二步速度,中电机
; 							
; 							},
; 						   {{{0x0180,0x1180,0x0250,0x1250,0x0250,0x1250,0x0000,0x0000,0x0070,0x1070,0x0000,0x03ff,0x13ff},//提速模式,第一步速度,左电机
;                              {0x0180,0x1180,0x1250,0x0250,0x0000,0x0000,0x0250,0x1250,0x1070,0x0070,0x0000,0x0000,0x0000},//提速模式,第一步速度,右电机
; 						     {0x0000,0x0000,0x0080,0x1080,0x0080,0x1080,0x1080,0x0080,0x0250,0x1250,0x0000,0x0000,0x0000}},//提速模式,第一步速度,中电机
; 							
; 							{{0x03f0,0x13f0,0x0250,0x1250,0x0250,0x1250,0x0000,0x0000,0x0080,0x1080,0x0000,0x03ff,0x13ff},//高速模式,第二步速度,左电机
;                              {0x03d0,0x13d0,0x1250,0x0250,0x0000,0x0000,0x0250,0x1250,0x1080,0x0080,0x0000,0x0000,0x0000},//高速模式,第二步速度,右电机
; 						     {0x0000,0x0000,0x0080,0x1080,0x0080,0x1080,0x1080,0x0080,0x02a0,0x12a0,0x0000,0x0000,0x0000}},//高速模式,第二步速度,中电机
; 							
; 							}};
; //电机启动方式,分别对应  up3,dawnx, up x, dawn3, up , down , 3 ,  x  ,左平移,右平移,停 0方式立即加电,1方式逐步加电
; INT8U  heading[2][2][13]={{{0,     0,    0,     0,   0,     0,  0,    0,     0,     0 ,0 ,0,0},    //正常模式,第一步,启动模式
; 	   					   {0,     0,    0,     0,   0,     0,  0,    0,     0,     0 ,0 ,0,0}},   //正常模式,第二步,启动模式
; 						  
; 						  {{2,     2,    0,     0,   0,     0,  0,    0,     0,     0 ,0 ,0,0},	   //高速模式,第一步,启动模式
; 	   					   {2,     2,    0,     0,   1,     1,  0,    0,     0,     0 ,0 ,0,0}}};   //高速模式,第二步,启动模式
; //启动过程时间,分别对应   up3,dawnx, up x, dawn3, up , down , 3 ,  x  ,左平移,右平移,单位是秒,只可取整数,最好不要取0
; INT8U dly_time[2][2][13]={{{1,     1,    1,     1,   1,     1,  1,    1,     1,     1  ,1 ,1 ,1},    //正常模式,第一步
; 	   					   {1,     1,    1,     1,   1,     1,  1,    1,     1,     1  ,1 ,1 ,1}},   //正常模式,第二步
; 						  
; 						  {{1,     1,    1,     1,   1,     1,  1,    1,     1,     1  ,1 ,1 ,1},	   //高速模式,第一步,
; 	   					   {1,     1,    1,     1,   2,    2,  1,    1,     1,     1   ,1 ,1 ,1}}};   //高速模式,第二步,
; 
; INT8U speed_model=1;     //默认速度模式
; /*
; **************************************************************************************************************
; *                                                MAIN
; *
; * Note(s): 1) You SHOULD use OS_TASK_STK_SIZE (see OS_CFG.H) when setting OSTaskStkSize prior to calling 
; *             OSInit() because OS_TASK_IDLE_STK_SIZE and OS_TASK_STAT_STK_SIZE are set to this value in
; *             OS_CFG.H.
; **************************************************************************************************************
; */
; 
; void  main (void)
; {
;   	OSTaskStkSize     = OS_TASK_STK_SIZE;             //Setup the total stack size                   
	ldi R24,256
	ldi R25,1
	sts _OSTaskStkSize+1,R25
	sts _OSTaskStkSize,R24
;     OSTaskHardStkSize = OS_TASK_HARD_STK_SIZE;  	  //Setup the hardware stack size              
	ldi R24,64
	ldi R25,0
	sts _OSTaskHardStkSize+1,R25
	sts _OSTaskHardStkSize,R24
;     OSInit();                                   	  //Initialize "uC/OS-II, The Real-Time Kernel"     
	xcall _OSInit
; 	time_Box		  =OSMboxCreate((void*)0);		  //建立时间消息邮箱
	clr R16

⌨️ 快捷键说明

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