用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

红外通讯协议在嵌入式系统中的实现

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:16:13
收发数据的中断函数最重要也是底层的核心所在。在接收方首先公进行硬件初始化,设置UART接收初始化状态并进行中断允许标志设置(具体设置可以参考所选择的电路板说明)等。当红外数据到达后即会触发一个UART中断,系统处理完当前事件后便会根据中断向量表提供的入口地址调用接收中断处理接收数据。在接收过程中,UART会搜索匹配开始位和结束标志。接收完毕后,返回系统调用程序。在实际应用中,当接收完数据后,即可按装收帧控制域判断帧类型,并结合接收站所处的相应状态机进行流程处理。下面是红外接收数据的中断程序源码:

/*******************************************

* UART Receiver Interrupt Service Routine

********************************************/

ISR_URX:

pha

phx ;压栈,保存通用寄存器值

cld ;清空十进制标志位

ldx #00001100B ;允许接收,并设置可以接收下一字节

stx <USTR

ldx mBagLen

cpx #IrDAb_BAG_LEN ;一个包的长度

bcs ferr_over ;溢出否

lda <UDATA

sta mReadBuff,x ;写数据

lda <USTR

sta mIrdaByteFlag ;保存状态标志位

inc mBagLen ;计数器++

bra ?exit

?err_over;

smb0 <mzIrdaBagFlag ;溢出标志位

?exit;

plx ;出栈,恢复通用寄存器值

pla

rti

该中断处理程序在硬件收到一个字节时触发。它先将通用寄存器值压栈保存,接下来进行状态寄存器的控制,并检查一些状态标志,然后进行数据的接收;将数据保存在一个缓存里,并进行溢出等状态的检测和控制。最后恢复通用寄存器的值,返回中断调节函数。按照类似的原理可以编写出红外发送方程序。编写数据收发中断程序有一点要注意,程序代码量和处理器主频以及选择的红外波特速率是密切相关的。若不注意就很容易造成“丢中断”的现象,这是应该避免的。还有一点要说明:UART是工作在半双工模式下,在一些实时系统和时间精度要求较高的应用中是不能同时进行收发数据的。但由于其收发时间片较短(最长为500ms),在一些普通应用中可以模拟成同时收发。

在程序编写完后对其进行编译/连接定位,用调试器以16进制的形式加载在主机开发系统中即可进行模拟调试。但是模拟调式不能百分之百地模拟硬件的全部特性。它主要用于调试软件逻辑、状态机流程。对于调试UART数据收发等实时性较强的硬件特征还需到目标系统上进行验证。



上一页  [1] [2] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:42,625.00000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号