第5节 串行通信通用函数与测试实例
推荐给好友
打印
加入收藏
更新于2008-08-29 00:50:12

5.5.1 串行通信子函数
SCI.h:串行通信头文件
串行通信寄存器及标志位定义
串行通信相关函数声明
SCIInit.c:串行口SCI0初始化函数
void SCIInit(void)
SCI.c:串行发送与接收通用子函数
void SCISend1(INT8U o)
void SCISendN(INT8U n,INT8U ch[])
INT8U SCIRe1(INT8U *p)
INT8U SCIReN(INT8U n,INT8U ch[])

5.5.2 查询方式收发测试工程
查询方式收发测试工程主函数文件main.c



中断方式测试工程辅助工具

中断方式HCS12 C语言主程序

串行中断子函数声明(isr.h)
#ifndef ISR_H //避免重复定义
#define ISR_H
void ISR_Receive(void); //接收中断函数声明
void __attribute__ ((interrupt)) ISR_Empty(void);
void _start(void); //复位函数(StartCode.s中定义,特殊)
//芯片开关总中断的宏定义
#define ENABLE_INTERRUPTS __asm__(" cli") //开中断
#define DISABLE_INTERRUPTS __asm__(" sei") //关中断
//开关各模块中断的宏定义
//开放或禁止SCI0的接收中断的宏定义
#define EnableSCIReInt SCI0CR2 |= 0x20 //开放SCI0接收中断
#define DisableSCIReInt SCI0CR2 &= 0xDF //禁止SCI0接收中断
#endif
串行中断函数(isr.c)
//ISR_Receive:SCI0接收中断函数
void __attribute__ ((interrupt)) ISR_Receive(void)
{
INT8U i;
INT8U SerialBuff[1]; //存放接收数据的数组
DISABLE_INTERRUPTS; //关总中断
i = SCIReN(1,SerialBuff); //等待接收1个数据
if (i == 0) SCISendN(1,SerialBuff); //发送接到的数据
ENABLE_INTERRUPTS; //开总中断
}
//ISR_Empty:空中断函数定义
void __attribute__ ((interrupt)) ISR_Empty(void)
{
}

<<上一节 下一节>>




 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.