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

📄 model.lst

📁 AVR基本工程模板(含调度器) 内有详细说明
💻 LST
📖 第 1 页 / 共 3 页
字号:
__start:
__text_start:
      1F EFCF      LDI	R28,0xFF
      20 E0D2      LDI	R29,2
      21 BFCD      OUT	0x3D,R28
      22 BFDE      OUT	0x3E,R29
      23 52C0      SUBI	R28,0x20
      24 40D0      SBCI	R29,0
      25 EA0A      LDI	R16,0xAA
      26 8308      STD	Y+0,R16
      27 2400      CLR	R0
      28 E0E6      LDI	R30,6
      29 E0F1      LDI	R31,1
      2A E011      LDI	R17,1
      2B 30EC      CPI	R30,0xC
      2C 07F1      CPC	R31,R17
      2D F011      BEQ	0x0030
      2E 9201      ST	R0,Z+
      2F CFFB      RJMP	0x002B
      30 8300      STD	Z+0,R16
      31 E3E8      LDI	R30,0x38
      32 E0F0      LDI	R31,0
      33 E0A0      LDI	R26,0
      34 E0B1      LDI	R27,1
      35 E010      LDI	R17,0
      36 E000      LDI	R16,0
      37 BF0B      OUT	0x3B,R16
      38 33EE      CPI	R30,0x3E
      39 07F1      CPC	R31,R17
      3A F021      BEQ	0x003F
      3B 95C8      LPM
      3C 9631      ADIW	R30,1
      3D 920D      ST	R0,X+
      3E CFF9      RJMP	0x0038
      3F D0D2      RCALL	_main
_exit:
      40 CFFF      RJMP	_exit
FILE: H:\单片机\工程模板\基本工程模板with调度器\RD_UseCooperatingMiniOs.c
(0001) /***********************************************************
(0002) *   函数库说明:合作调度器基本函数库                       *
(0003) *   版本:      v1.00                                      *
(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) 
(0081) /***********************************************************
(0082) *   函数说明:空函数                                       *
(0083) *   输入:    无                                           *
(0084) *   输出:    无                                           *
(0085) *   调用函数:无                                           *
(0086) ***********************************************************/
(0087) BOOL NULL_PROC(void)
(0088) {
(0089)     return FALSE;
_NULL_PROC:
      41 2700      CLR	R16
      42 9508      RET
_CMOS_INIT:
  n                    --> R20
      43 934A      ST	R20,-Y
(0090) }
(0091) 					  
(0092) /***********************************************************
(0093) *   函数说明:消息队列系统初始化函数                       *
(0094) *   输入:    无                                           *
(0095) *   输出:    无                                           *
(0096) *   调用函数:COS_REGISTER_PROC_FUNCTION                   *
(0097) * -------------------------------------------------------- *
(0098) *  [注意事项]                                              *
(0099) *         1、ProcPCB[]是一个函数指针数组,里面登记着       *
(0100) *            所有系统合法的消息处理函数的地址。            *
(0101) *         2、ProcPCB[]下标中,0为系统保留,其余为用户      *
(0102) *            自定义。                                      *
(0103) *         3、用户需要自己通过编写函数并通过连接宏          *
(0104) *            MSG_REGISTER_PROC_FUNCTION来注册合法消息处理  *
(0105) *            函数。                                        *
(0106) *         4、编程的时候,每增加一个静态的进程,就要增加一  *
(0107) *            次进程计数器MSG_Proc_Counter。                *
(0108) ***********************************************************/
(0109) void CMOS_INIT(void)
(0110) {
(0111)     uint8 n = 0;
      44 2744      CLR	R20
(0112) 		
(0113)     for (n = 0;n<COS_PROCESS_COUNT+1;n++)
      45 C015      RJMP	0x005B
(0114)     {
(0115)         #ifdef _USE_MESSAGE_PROC
(0116)         ProcPCB[n].ProcIO = SYS_DEFAULT;
(0117)         #endif
(0118)         ProcPCB[n].Proc   = NULL_PROC;
      46 E083      LDI	R24,3
      47 9F84      MUL	R24,R20
      48 01F0      MOVW	R30,R0
      49 E086      LDI	R24,6
      4A E091      LDI	R25,1
      4B 0FE8      ADD	R30,R24
      4C 1FF9      ADC	R31,R25
      4D E384      LDI	R24,0x34
      4E E090      LDI	R25,0
      4F 8391      STD	Z+1,R25
      50 8380      STD	Z+0,R24
(0119)         ProcPCB[n].IfProcAlive = FALSE;
      51 E083      LDI	R24,3
      52 9F84      MUL	R24,R20
      53 01F0      MOVW	R30,R0
      54 E088      LDI	R24,0x8
      55 E091      LDI	R25,1
      56 0FE8      ADD	R30,R24
      57 1FF9      ADC	R31,R25
      58 2422      CLR	R2
      59 8220      STD	Z+0,R2
      5A 9543      INC	R20
      5B 3042      CPI	R20,2
      5C F348      BCS	0x0046
(0120)     }
(0121) 		
(0122)     COS_REGISTER_PROC_FUNCTION
      5D D096      RCALL	_PROC_Register
      5E 9149      LD	R20,Y+
      5F 9508      RET
(0123) }
(0124) 
(0125) /***********************************************************
(0126) *   函数说明:任务处理函数                                 *
(0127) *   输入:    无                                           *
(0128) *   输出:    无                                           *
(0129) *   调用函数:无                                           *
(0130) ***********************************************************/
(0131) void Process_Task(void)
(0132) {
(0133)     static uint8 n = 0;
(0134)     
(0135)     if (ProcPCB[n].IfProcAlive)                             //处理进程
_Process_Task:
      60 9020 0101 LDS	R2,RD_UseCooperatingMiniOs.c:n
      62 E083      LDI	R24,3
      63 9D82      MUL	R24,R2
      64 01F0      MOVW	R30,R0
      65 E088      LDI	R24,0x8
      66 E091      LDI	R25,1
      67 0FE8      ADD	R30,R24
      68 1FF9      ADC	R31,R25
      69 8020      LDD	R2,Z+0
      6A 2022      TST	R2
      6B F0C1      BEQ	0x0084
(0136)     {
(0137)         ProcPCB[n].IfProcAlive = (*ProcPCB[n].Proc)();
      6C 9020 0101 LDS	R2,RD_UseCooperatingMiniOs.c:n
      6E E083      LDI	R24,3
      6F 9D82      MUL	R24,R2
      70 0110      MOVW	R2,R0
      71 E086      LDI	R24,6
      72 E091      LDI	R25,1
      73 01F1      MOVW	R30,R2
      74 0FE8      ADD	R30,R24
      75 1FF9      ADC	R31,R25
      76 81A0      LDD	R26,Z+0
      77 81B1      LDD	R27,Z+1
      78 920F      PUSH	R0
      79 921F      PUSH	R1
      7A 01FD      MOVW	R30,R26
      7B D09B      RCALL	xicallx
      7C 903F      POP	R3
      7D 902F      POP	R2
      7E E088      LDI	R24,0x8
      7F E091      LDI	R25,1
      80 01F1      MOVW	R30,R2
      81 0FE8      ADD	R30,R24
      82 1FF9      ADC	R31,R25
      83 8300      STD	Z+0,R16
(0138)     }        
(0139)     
(0140)     n ++;
      84 9180 0101 LDS	R24,RD_UseCooperatingMiniOs.c:n
      86 5F8F      SUBI	R24,0xFF
      87 9380 0101 STS	RD_UseCooperatingMiniOs.c:n,R24
(0141)     if (n >= g_cCOSPROCCounter)
      89 9020 0100 LDS	R2,g_cCOSPROCCounter
      8B 1582      CP	R24,R2
      8C F018      BCS	0x0090
(0142)     {
(0143)         n = 0;
      8D 2422      CLR	R2
      8E 9220 0101 STS	RD_UseCooperatingMiniOs.c:n,R2
(0144)     }
      90 9508      RET
FILE: H:\单片机\工程模板\基本工程模板with调度器\HD_Support.c
(0001) /***********************************************************
(0002) *   函数库说明:底层硬件初始化函数库                       *
(0003) *   版本:                                                 *
(0004) *   作者:                                                 *
(0005) *   创建日期:                                             *
(0006) * -------------------------------------------------------- *
(0007) *  [硬件说明]                                              *
(0008) *   处理器:                                               *
(0009) *   系统时钟:                                             *
(0010) * -------------------------------------------------------- *
(0011) *  [支 持 库]                                              *
(0012) *   支持库名称:PF_Config.h                                *
(0013) *   需要版本:  -----                                      *
(0014) *   声明库说明:硬件平台配置声明库                         *
(0015) *                                                          *
(0016) *   支持库名称:HD_Support.h                               *
(0017) *   需要版本:  -----                                      *
(0018) *   声明库说明:底层硬件初始化声明库                       *
(0019) * -------------------------------------------------------- *
(0020) *  [版本更新]                                              *
(0021) *   修改:                                                 *
(0022) *   修改日期:                                             *
(0023) *   版本:                                                 *
(0024) * -------------------------------------------------------- *
(0025) *  [版本历史]                                              *

⌨️ 快捷键说明

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