📄 app.s
字号:
.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 + -