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

📄 model.lst

📁 液晶模块LCD1602配合键盘显示的一个实例
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
      26 EFCF      LDI	R28,0xFF
      27 E0D2      LDI	R29,2
      28 BFCD      OUT	0x3D,R28
      29 BFDE      OUT	0x3E,R29
      2A 52C0      SUBI	R28,0x20
      2B 40D0      SBCI	R29,0
      2C EA0A      LDI	R16,0xAA
      2D 8308      STD	Y+0,R16
      2E 2400      CLR	R0
      2F E1E3      LDI	R30,0x13
      30 E0F1      LDI	R31,1
      31 E012      LDI	R17,2
      32 31E9      CPI	R30,0x19
      33 07F1      CPC	R31,R17
      34 F011      BEQ	0x0037
      35 9201      ST	R0,Z+
      36 CFFB      RJMP	0x0032
      37 8300      STD	Z+0,R16
      38 E3E8      LDI	R30,0x38
      39 E0F0      LDI	R31,0
      3A E0A0      LDI	R26,0
      3B E0B1      LDI	R27,1
      3C E010      LDI	R17,0
      3D E000      LDI	R16,0
      3E BF0B      OUT	0x3B,R16
      3F 34EB      CPI	R30,0x4B
      40 07F1      CPC	R31,R17
      41 F021      BEQ	0x0046
      42 95C8      LPM
      43 9631      ADIW	R30,1
      44 920D      ST	R0,X+
      45 CFF9      RJMP	0x003F
      46 D23D      RCALL	_main
_exit:
      47 CFFF      RJMP	_exit
FILE: H:\单片机\工程模板\Project_Template_With_Schedule_And_COM_Interface\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:
      48 2700      CLR	R16
      49 9508      RET
_CMOS_INIT:
  n                    --> R20
      4A 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;
      4B 2744      CLR	R20
(0112) 		
(0113)     for (n = 0;n<COS_PROCESS_COUNT+1;n++)
      4C C015      RJMP	0x0062
(0114)     {
(0115)         #ifdef _USE_MESSAGE_PROC
(0116)         ProcPCB[n].ProcIO = SYS_DEFAULT;
(0117)         #endif
(0118)         ProcPCB[n].Proc   = NULL_PROC;
      4D E083      LDI	R24,3
      4E 9F84      MUL	R24,R20
      4F 01F0      MOVW	R30,R0
      50 E183      LDI	R24,0x13
      51 E091      LDI	R25,1
      52 0FE8      ADD	R30,R24
      53 1FF9      ADC	R31,R25
      54 E384      LDI	R24,0x34
      55 E090      LDI	R25,0
      56 8391      STD	Z+1,R25
      57 8380      STD	Z+0,R24
(0119)         ProcPCB[n].IfProcAlive = FALSE;
      58 E083      LDI	R24,3
      59 9F84      MUL	R24,R20
      5A 01F0      MOVW	R30,R0
      5B E185      LDI	R24,0x15
      5C E091      LDI	R25,1
      5D 0FE8      ADD	R30,R24
      5E 1FF9      ADC	R31,R25
      5F 2422      CLR	R2
      60 8220      STD	Z+0,R2
      61 9543      INC	R20
      62 3042      CPI	R20,2
      63 F348      BCS	0x004D
(0120)     }
(0121) 		
(0122)     COS_REGISTER_PROC_FUNCTION
      64 D201      RCALL	_PROC_Register
      65 9149      LD	R20,Y+
      66 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:
      67 9020 0101 LDS	R2,RD_UseCooperatingMiniOs.c:n
      69 E083      LDI	R24,3
      6A 9D82      MUL	R24,R2
      6B 01F0      MOVW	R30,R0
      6C E185      LDI	R24,0x15
      6D E091      LDI	R25,1
      6E 0FE8      ADD	R30,R24
      6F 1FF9      ADC	R31,R25
      70 8020      LDD	R2,Z+0
      71 2022      TST	R2
      72 F0C1      BEQ	0x008B
(0136)     {
(0137)         ProcPCB[n].IfProcAlive = (*ProcPCB[n].Proc)();
      73 9020 0101 LDS	R2,RD_UseCooperatingMiniOs.c:n
      75 E083      LDI	R24,3
      76 9D82      MUL	R24,R2
      77 0110      MOVW	R2,R0
      78 E183      LDI	R24,0x13
      79 E091      LDI	R25,1
      7A 01F1      MOVW	R30,R2
      7B 0FE8      ADD	R30,R24
      7C 1FF9      ADC	R31,R25
      7D 81A0      LDD	R26,Z+0
      7E 81B1      LDD	R27,Z+1
      7F 920F      PUSH	R0
      80 921F      PUSH	R1
      81 01FD      MOVW	R30,R26
      82 D206      RCALL	xicallx
      83 903F      POP	R3
      84 902F      POP	R2
      85 E185      LDI	R24,0x15
      86 E091      LDI	R25,1
      87 01F1      MOVW	R30,R2
      88 0FE8      ADD	R30,R24
      89 1FF9      ADC	R31,R25
      8A 8300      STD	Z+0,R16
(0138)     }        
(0139)     
(0140)     n ++;
      8B 9180 0101 LDS	R24,RD_UseCooperatingMiniOs.c:n
      8D 5F8F      SUBI	R24,0xFF
      8E 9380 0101 STS	RD_UseCooperatingMiniOs.c:n,R24
(0141)     if (n >= g_cCOSPROCCounter)
      90 9020 0100 LDS	R2,g_cCOSPROCCounter
      92 1582      CP	R24,R2
      93 F018      BCS	0x0097
(0142)     {
(0143)         n = 0;
      94 2422      CLR	R2
      95 9220 0101 STS	RD_UseCooperatingMiniOs.c:n,R2
(0144)     }
      97 9508      RET
FILE: H:\单片机\工程模板\Project_Template_With_Schedule_And_COM_Interface\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) *              提供的缓冲区功能。                          *

⌨️ 快捷键说明

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