首 页 用户登录 | ![]() |
|||
|
|||
按字母检索 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
按声母检索 | A | B | C | D | E | F | G | H | J | K | L | M | N | O | P | Q | R | S | T | W | X | Y | Z | 数字 | 符号 |
|
![]() |
您的位置: 5VAR论文频道 → 论文中心 → 理工论文 → 电子通信 |
|
|||||
红外通讯协议在嵌入式系统中的实现 | |||||
收集整理:佚名 来源:本站整理 时间: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数据收发等实时性较强的硬件特征还需到目标系统上进行验证。 |
提供人:佚名 | |
【返回上一页】【打 印】【关闭窗口】 |
![]() |
5VAR论文频道 |
![]() |
5VAR论文频道 |
![]() |
关于本站 -
网站帮助 -
广告合作 -
下载声明 -
网站地图
Copyright © 2006-2033 5Var.Com. All Rights Reserved . |