- 6
- 0
- 约2.13万字
- 约 19页
- 2015-08-23 发布于河南
- 举报
模块开发文件夹 工程项目名称 MC-55 模块名称 REMOTE 版本号 1.0 程序员姓名 完成日期 修改日期 源程序行数 目标代码长度(字节) 模块类型 GENERAL BIOS SYSTEM 最大执行时间(指令周期) 模块简要描述 REMOTE模块主要功能为:接收遥控信号,对遥控信号进行识别、解码,并在码值有效后,输出统一编码。
REMOTE模块是在有遥控信号或电磁干扰时,由系统调用。
由于该模块包含三部分:INT0处理模块和TIMER0处理模块及初始化模块。
REMOTE模块是采用中断处理信号,占用INT0和TIMER0两个资源。为了尽可能减少堆栈的使用,以避免堆栈溢出,该模块的内部已经对INT0和TIMER0的中断地址做了处理,即两个长跳转指令已经被绝对定位在相应的中断地址上了。在主程序中已无须对上述两中断源再做处理。只须做下面三点:
在主程序的开始部分加入下面语句:
#include “remote.h”
在主程序的初始化中加入REMOTE的初始化程序:
REMOTE_INIT();
在链接时需加入文件REMOTE.OBJ(由REMOTE.ASM和REMOTE.INC汇编生成)。
开发起止时间表 预计起止时间 实际起止时间 设计 编码 单元测试 集成测试
模块详细设计结果描述
基本原理
REMOTE模块是针对NEC标准的遥控发射信号设计的。共占用MCU两个资源:INT0和TIMER0。通过INT0接收遥控信号,侦测脉冲信号的起止点。通过TIMER0计算脉冲信号的时间长度。根据时间的长短可识别出各种码值,从而可判断出是否是电磁干扰,或码值是否有效。
扇出
无。
硬件接口
请查阅 “TOP LOAD SYSTEM MCU BOARD REV:01” 的原理图。
源程序清单
源程序:
下面所列为REMOTE模块的程序清单,(文件名:REMOTE.ASM)
$INCLUDE(REMOTE.INC)
CSEG AT EX_ADDR ;ADDR=03H FOR EXTERN INTERUPTER 0
;ADDR=13H FOR EXTERN INTERUPTER 1
LJMP EX_SERVER
CSEG AT ET_ADDR ;ADDR=0BH FOR TIMER0 INTERUPTER
;ADDR=1BH FOR TIMER1 INTERUPTER
LJMP ET_SERVER
;;;************************************************************************
;;;* NAME: REMOTE_INIT *
;;;* PURPOSE: Initial the Remote peripheral-INT0,TIMER1 *
;;;* FUNCTION: Be called when system reset *
;;;* OUTPUT: ET0,EX0,IT0,TMOD,REMMODE,REMCONT,REMVALID,RPTVALID *
;;;* RAM:ACC,DPTR,TEMPDATA,LOWCONT *
;;;* Excuting: Be called After main(){ *
;;;*C-Declare: void REMOTE_INIT(void); *
;;;************************************************************************
RSEG ?PR?REMOTE?REMOTE INBLOCK
REMOTE_INIT:
SETB ET_ENABLE ;T0 enable
SETB EX_ENABLE ;INT0 OR INT1 enable
SETB EX_TRIG ;INT0 OR INT1
MOV A,TMOD ;Set T0
ANL A,#TMOD_MOD1
ORL A,#TMOD_MOD2
MOV TMOD,A
MOV REMMODE,#0H
MOV REMCONT,#0H
CLR REMVALID
CLR REMTEM
原创力文档

文档评论(0)