📄 model.lst
字号:
__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 + -