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

📄 model.lst

📁 移动机器人(小车)的物理坐标和逻辑坐标的转换源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
      77 EFCF      LDI	R28,0xFF
      78 E0D4      LDI	R29,4
      79 BFCD      OUT	0x3D,R28
      7A BFDE      OUT	0x3E,R29
      7B 50C0      SUBI	R28,0
      7C 40D1      SBCI	R29,1
      7D EA0A      LDI	R16,0xAA
      7E 8308      STD	Y+0,R16
      7F 2400      CLR	R0
      80 E6E9      LDI	R30,0x69
      81 E0F1      LDI	R31,1
      82 E011      LDI	R17,1
      83 3DE5      CPI	R30,0xD5
      84 07F1      CPC	R31,R17
      85 F011      BEQ	0x0088
      86 9201      ST	R0,Z+
      87 CFFB      RJMP	0x0083
      88 8300      STD	Z+0,R16
      89 E8E4      LDI	R30,0x84
      8A E0F0      LDI	R31,0
      8B E0A0      LDI	R26,0
      8C E0B1      LDI	R27,1
      8D E010      LDI	R17,0
      8E E000      LDI	R16,0
      8F BF0B      OUT	0x3B,R16
      90 3EED      CPI	R30,0xED
      91 07F1      CPC	R31,R17
      92 F021      BEQ	0x0097
      93 95C8      LPM
      94 9631      ADIW	R30,1
      95 920D      ST	R0,X+
      96 CFF9      RJMP	0x0090
      97 D749      RCALL	_main
_exit:
      98 CFFF      RJMP	_exit
FILE: E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块测试版\Relative_Locate_Module\RD_UseCooperatingMiniOs.c
(0001) /***********************************************************
(0002) *   函数库说明:合作调度器基本函数库                       *
(0003) *   版本:      v1.01                                      *
(0004) *   作者:      王卓然                                     *
(0005) *   创建日期:  2006年8月28日                              *
(0006) * -------------------------------------------------------- *
(0007) *  [支 持 库]                                              *
(0008) *   支持库名称:RD_UseCooperatingMiniOs.h                  *
(0009) *   需要版本:  -----                                      *
(0010) *   支持库说明:合作调度器基本声明库                       *
(0011) *                                                          *
(0012) *   支持库名称:RD_MacroAndConst.h                         *
(0013) *   需要版本:  v0.04 &abv                                 *
(0014) *   支持库说明:系统常用宏定义库                           *
(0015) * -------------------------------------------------------- *
(0016) *  [版本更新]                                              *
(0017) * -------------------------------------------------------- *
(0018) *  [版本历史]                                              *
(0019) * -------------------------------------------------------- *
(0020) *  [使用说明]                                              *
(0021) *           1、在系统初始化的时候调用函数CmOSInit()来初始  *
(0022) *              化消息对系统;同时通过定义宏                *
(0023) *              COS_REGISTER_PROC_FUNCTION来说明静态进程函  *
(0024) *              数的消息处理函数和动作函数(使用函数指针)。  *
(0025) *              每增加一个静态进程,要更新一次进程计数器    *
(0026) *              COS_Proc_Counter,保证每一个进程都能被有效  *
(0027) *              的寻址。                                    *
(0028) *           7、用户可以通过宏COS_PROCESS_COUNT来定义最大的 *
(0029) *              进程PCB数量。这个数值直接影响系统允许的静态 *
(0030) *              进程的数量,并要占用一定的空间。这个数目的  *
(0031) *              最小值是1,因为默认有一个系统默认消息处理   *
(0032) *              进程。                                      *
(0033) *           8、用户需要COS_REGISTER_MSG_FUNCTION宏来说明   *
(0034) *              系统进程的初始化函数,通过这个初始化函数告  *
(0035) *              诉消息系统,一共有多少静态进程,并且说明这  *
(0036) *              些静态进程的相关函数指针是什么。            *
(0037) ***********************************************************/
(0038) 
(0039) /********************
(0040) * 头 文 件 配 置 区 *
(0041) ********************/
(0042) # include "RD_MacroAndConst.h"
(0043) # include "RD_UseCooperatingMiniOs.h"
(0044) 
(0045) /********************
(0046) *   系 统 宏 定 义  *
(0047) ********************/
(0048) 
(0049) /*------------------*
(0050) *   常 数 宏 定 义  *
(0051) *------------------*/
(0052) #ifndef COS_PROCESS_COUNT
(0053)     //# define COS_PROCESS_COUNT 8
(0054)     #error Need for COS_PROCESS_COUNT!      
(0055) #endif
(0056) 
(0057) /*------------------*
(0058) *   动 作 宏 定 义  *
(0059) *------------------*/
(0060) #ifndef COS_REGISTER_PROC_FUNCTION
(0061)     # define COS_REGISTER_PROC_FUNCTION
(0062) #endif
(0063) 
(0064) /********************
(0065) *    结构体宏定义   *
(0066) ********************/
(0067) 
(0068) /********************
(0069) *   函 数 声 明 区  *
(0070) ********************/
(0071) BOOL NULL_PROC(void);
(0072) void CMOS_INIT(void);
(0073) void Process_Task(void);
(0074) 
(0075) /********************
(0076) *   全局变量声明区  *
(0077) ********************/
(0078) volatile PROCESS ProcPCB[COS_PROCESS_COUNT+1];
(0079) uint8 g_cCOSPROCCounter = 0;
(0080) uint8 g_cScheduleTest = 0;
(0081) 
(0082) /***********************************************************
(0083) *   函数说明:空函数                                       *
(0084) *   输入:    无                                           *
(0085) *   输出:    无                                           *
(0086) *   调用函数:无                                           *
(0087) ***********************************************************/
(0088) BOOL NULL_PROC(void)
(0089) {
(0090)     return FALSE;
_NULL_PROC:
      99 2700      CLR	R16
      9A 9508      RET
_CMOS_INIT:
  Reg1                 --> R10
  n1                   --> R20
      9B D813      RCALL	push_xgset300C
(0091) }
(0092) 					  
(0093) /***********************************************************
(0094) *   函数说明:消息队列系统初始化函数                       *
(0095) *   输入:    无                                           *
(0096) *   输出:    无                                           *
(0097) *   调用函数:COS_REGISTER_PROC_FUNCTION                   *
(0098) * -------------------------------------------------------- *
(0099) *  [注意事项]                                              *
(0100) *         1、ProcPCB[]是一个函数指针数组,里面登记着       *
(0101) *            所有系统合法的消息处理函数的地址。            *
(0102) *         2、ProcPCB[]下标中,0为系统保留,其余为用户      *
(0103) *            自定义。                                      *
(0104) *         3、用户需要自己通过编写函数并通过连接宏          *
(0105) *            MSG_REGISTER_PROC_FUNCTION来注册合法消息处理  *
(0106) *            函数。                                        *
(0107) *         4、编程的时候,每增加一个静态的进程,就要增加一  *
(0108) *            次进程计数器MSG_Proc_Counter。                *
(0109) ***********************************************************/
(0110) void CMOS_INIT(void)
(0111) {
(0112)     uint8 n = 0;
(0113) 		
(0114)     for (n = 0;n<COS_PROCESS_COUNT+1;n++)
      9C 2744      CLR	R20
      9D C014      RJMP	0x00B2
(0115)     {
(0116)         #ifdef _USE_MESSAGE_PROC
(0117)         ProcPCB[n].ProcIO = SYS_DEFAULT;
(0118)         #endif
(0119)         ProcPCB[n].Proc   = NULL_PROC;
      9E E083      LDI	R24,3
      9F 9F84      MUL	R24,R20
      A0 0150      MOVW	R10,R0
      A1 E689      LDI	R24,0x69
      A2 E091      LDI	R25,1
      A3 01F5      MOVW	R30,R10
      A4 0FE8      ADD	R30,R24
      A5 1FF9      ADC	R31,R25
      A6 E384      LDI	R24,0x34
      A7 E090      LDI	R25,0
      A8 8391      STD	Z+1,R25
      A9 8380      STD	Z+0,R24
(0120)         ProcPCB[n].IfProcAlive = FALSE;
      AA E68B      LDI	R24,0x6B
      AB E091      LDI	R25,1
      AC 01F5      MOVW	R30,R10
      AD 0FE8      ADD	R30,R24
      AE 1FF9      ADC	R31,R25
      AF 2422      CLR	R2
      B0 8220      STD	Z+0,R2
      B1 9543      INC	R20
      B2 3044      CPI	R20,4
      B3 F350      BCS	0x009E
(0121)     }
(0122) 		
(0123)     COS_REGISTER_PROC_FUNCTION
      B4 D6EF      RCALL	_PROC_Register
      B5 C7FE      RJMP	pop_xgset300C
_Process_Task:
      B6 934A      ST	R20,-Y
      B7 935A      ST	R21,-Y
(0124) }
(0125) 
(0126) /***********************************************************
(0127) *   函数说明:任务处理函数                                 *
(0128) *   输入:    无                                           *
(0129) *   输出:    无                                           *
(0130) *   调用函数:无                                           *
(0131) ***********************************************************/
(0132) void Process_Task(void)
(0133) {
(0134)     static uint8 n = 0;
(0135)     
(0136)     if (ProcPCB[n].IfProcAlive)                             //处理进程
      B8 9020 0102 LDS	R2,RD_UseCooperatingMiniOs.c:n
      BA E083      LDI	R24,3
      BB 9D82      MUL	R24,R2
      BC 01F0      MOVW	R30,R0
      BD E68B      LDI	R24,0x6B
      BE E091      LDI	R25,1
      BF 0FE8      ADD	R30,R24
      C0 1FF9      ADC	R31,R25
      C1 8020      LDD	R2,Z+0
      C2 2022      TST	R2
      C3 F0C1      BEQ	0x00DC
(0137)     {
(0138)         ProcPCB[n].IfProcAlive = (*ProcPCB[n].Proc)();
      C4 9020 0102 LDS	R2,RD_UseCooperatingMiniOs.c:n
      C6 E083      LDI	R24,3
      C7 9D82      MUL	R24,R2
      C8 0110      MOVW	R2,R0
      C9 E689      LDI	R24,0x69
      CA E091      LDI	R25,1
      CB 01F1      MOVW	R30,R2
      CC 0FE8      ADD	R30,R24
      CD 1FF9      ADC	R31,R25
      CE 81A0      LDD	R26,Z+0
      CF 81B1      LDD	R27,Z+1
      D0 920F      PUSH	R0
      D1 921F      PUSH	R1
      D2 01FD      MOVW	R30,R26
      D3 D7F3      RCALL	xicall
      D4 903F      POP	R3
      D5 902F      POP	R2
      D6 E68B      LDI	R24,0x6B
      D7 E091      LDI	R25,1
      D8 01F1      MOVW	R30,R2
      D9 0FE8      ADD	R30,R24
      DA 1FF9      ADC	R31,R25
      DB 8300      STD	Z+0,R16
(0139)     }        
(0140)     
(0141)     n ++;
      DC 9180 0102 LDS	R24,RD_UseCooperatingMiniOs.c:n
      DE 5F8F      SUBI	R24,0xFF
      DF 9380 0102 STS	RD_UseCooperatingMiniOs.c:n,R24
(0142)     if (n >= g_cCOSPROCCounter)
      E1 9020 0100 LDS	R2,g_cCOSPROCCounter
      E3 1582      CP	R24,R2
      E4 F078      BCS	0x00F4
(0143)     {
(0144)         n = 0;
      E5 2422      CLR	R2
      E6 9220 0102 STS	RD_UseCooperatingMiniOs.c:n,R2
(0145)         g_cScheduleTest = MIN(g_cScheduleTest + 1,254);
      E8 9180 0101 LDS	R24,g_cScheduleTest
      EA 5F8F      SUBI	R24,0xFF
      EB 3F8E      CPI	R24,0xFE
      EC F420      BCC	0x00F1
      ED 9140 0101 LDS	R20,g_cScheduleTest
      EF 5F4F      SUBI	R20,0xFF
      F0 C001      RJMP	0x00F2
      F1 EF4E      LDI	R20,0xFE
      F2 9340 0101 STS	g_cScheduleTest,R20
(0146)     }
      F4 9159      LD	R21,Y+
      F5 9149      LD	R20,Y+
      F6 9508      RET
_UARTgetDataFromRxBuff:
  cflags0              --> R10
  Data                 --> R16
      F7 92AA      ST	R10,-Y
FILE: E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块测试版\Relative_Locate_Module\RD_UseSerialBuff.c
(0001) /***********************************************************
(0002) *   函数库说明:串行通讯缓冲区处理函数库                   *
(0003) *   版本:      v1.00                                      *
(0004) *   作者:      王卓然                                     *
(0005) *   创建日期:  2006年4月24日                              *
(0006) * -------------------------------------------------------- *
(0007) *  [支 持 库]                                              *
(0008) *   支持库名称:RD_MacroAndConst.h                         *
(0009) *   需要版本:  v0.01 &abv                                 *
(0010) *   函数库说明:系统常用宏定义库                           *
(0011) *                                                          *
(0012) *   支持库名称:RD_UseSerialBuff.h                         *
(0013) *   需要版本:  -----                                      *
(0014) *   声明库说明:串行通讯缓冲区处理声明库                   *
(0015) * -------------------------------------------------------- *
(0016) *  [版本更新]                                              *
(0017) *   修改:      王卓然                                     *
(0018) *   修改日期:  2006年5月20日                              *
(0019) *   版本:      v0.31                                      *
(0020) *                                                          *
(0021) *   修改:      王卓然                                     *
(0022) *   修改日期:  2007年3月1日                               *
(0023) *   版本:      v0.40                                      *
(0024) *                                                          *
(0025) *   修改:      王卓然                                     *
(0026) *   修改日期:  2007年3月2日                               *
(0027) *   版本:      v1.00                                      *
(0028) * -------------------------------------------------------- *
(0029) *  [版本历史]                                              *
(0030) *       v0.30  该版本提供了最基本的环形队列缓冲区操作函数。*
(0031) *       v0.31  增加了调用该函数时候的宏说明,可以选择需要  *
(0032) *              提供的缓冲区功能。                          *
(0033) *       v0.40  增加了串口发送进程。增加了原子操作。        *
(0034) *       v1.00  针对新规范进行了修改,增加自动收发进程。    *
(0035) * -------------------------------------------------------- *
(0036) *  [使用说明]                                              *
(0037) *           1、通过SERIAL_RX_BUFF_SIZE来设定接收缓冲区的大 *
(0038) *              小;通过SERIAL_TX_BUFF_SIZE来设定发送缓冲区 *
(0039) *              的大小。                                    *
(0040) *           2、通过定义_USE_SERIAL_RX_BUFF来选择添加一个接 *
(0041) *              收缓冲区;通过定义_USE_SERIAL_TX_BUFF来添加 *
(0042) *              一个发送缓冲区。                            *
(0043) *           3、在取数的时候,有时候要考虑屏蔽中断,否则会  *
(0044) *              出现不可预知的后果。                        *
(0045) *           4、可以通过宏_USE_SERIAL_TX_TRANSMITTER_PROC在 *
(0046) *              使用发送缓冲时,使用自动发送进程。并需要定  *
(0047) *              义宏UDR_PORT来指定发送端口、也需要将宏      *
(0048) *              SERIAL_INSERT_USART_TX_ISR_CODE插入到发送完 *
(0049) *              成中断处理程序中。                          *
(0050) *           5、使用宏SERIAL_ENABLE_WRITE定义额外的发送使能 *
(0051) *              代码。例如485总线的发送使能等。             *
(0052) *           6、使用宏SERIAL_DISABLE_WRITE定义额外的发送使  *
(0053) *              能关闭代码。例如485总线发送使能的关闭。     *
(0054) ***********************************************************/
(0055) 
(0056) /********************
(0057) * 头 文 件 配 置 区 *
(0058) ********************/
(0059) # include "LIB_Config.h"
(0060) # include "RD_MacroAndConst.h"

⌨️ 快捷键说明

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