红外通讯协议在嵌入式系统中的实现
ISR_URX:
pha
phx;压栈,保存通用寄存器值
cld;清空十进制标志位
ldx#00001100B;允许接收,并设置可以接收下一字节
stx<USTR
ldxmBagLen
cpx#IrDAb_BAG_LEN;一个包的长度
bcsferr_over;溢出否
lda<UDATA
stamReadBuff,x;写数据
lda<USTR
stamIrdaByteFlag;保存状态标志位
incmBagLen;计数器++
bra?exit
?err_over;
smb0<mzIrdaBagFlag;溢出标志位
?exit;
plx;出栈,恢复通用寄存器值
pla
rti
该中断处理程序在硬件收到一个字节时触发。它先将通用寄存器值压栈保存,接下来进行状态寄存器的控制,并检查一些状态标志,然后进行数据的接收;将数据保存在一个缓存里,并进行溢出等状态的检测和控制。最后恢复通用寄存器的值,返回中断调节函数。按照类似的原理可以编写出红外发送方程序。编写数据收发中断程序有一点要注意,程序代码量和处理器主频以及选择的红外波特速率是密切相关的。若不注意就很容易造成“丢中断”的现象,这是应该避免的。还有一点要说明:UART是工作在半双工模式下,在一些实时系统和时间精度要求较高的应用中是不能同时进行收发数据的。但由于其收发时间片较短(最长为500ms),在一些普通应用中可以模拟成同时收发。
在程序编写完后对其进行编译/连接定位,用调试器以16进制的形式加载在主机开发系统中即可进行模拟调试。但是模拟调式不能百分之百地模拟硬件的全部特性。它主要用于调试软件逻辑、状态机流程。对于调试UART数据收发等实时性较强的硬件特征还需到目标系统上进行验证 《红外通讯协议在嵌入式系统中的实现(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/176696.html
pha
phx;压栈,保存通用寄存器值
cld;清空十进制标志位
ldx#00001100B;允许接收,并设置可以接收下一字节
stx<USTR
ldxmBagLen
cpx#IrDAb_BAG_LEN;一个包的长度
bcsferr_over;溢出否
lda<UDATA
stamReadBuff,x;写数据
lda<USTR
stamIrdaByteFlag;保存状态标志位
incmBagLen;计数器++
bra?exit
?err_over;
smb0<mzIrdaBagFlag;溢出标志位
?exit;
plx;出栈,恢复通用寄存器值
pla
rti
该中断处理程序在硬件收到一个字节时触发。它先将通用寄存器值压栈保存,接下来进行状态寄存器的控制,并检查一些状态标志,然后进行数据的接收;将数据保存在一个缓存里,并进行溢出等状态的检测和控制。最后恢复通用寄存器的值,返回中断调节函数。按照类似的原理可以编写出红外发送方程序。编写数据收发中断程序有一点要注意,程序代码量和处理器主频以及选择的红外波特速率是密切相关的。若不注意就很容易造成“丢中断”的现象,这是应该避免的。还有一点要说明:UART是工作在半双工模式下,在一些实时系统和时间精度要求较高的应用中是不能同时进行收发数据的。但由于其收发时间片较短(最长为500ms),在一些普通应用中可以模拟成同时收发。
在程序编写完后对其进行编译/连接定位,用调试器以16进制的形式加载在主机开发系统中即可进行模拟调试。但是模拟调式不能百分之百地模拟硬件的全部特性。它主要用于调试软件逻辑、状态机流程。对于调试UART数据收发等实时性较强的硬件特征还需到目标系统上进行验证 《红外通讯协议在嵌入式系统中的实现(第3页)》