利用C164单片机设计自动摊铺机通信模块
下面为实现串口的通信程序:
#include
unsigned int a;
interrupt(0x2B) void S0RINT(void) //接收中断服务子程序
{
a=S0RBUF; //将接收数据保存
}
void putchar(unsigned char tdata) //串行发送程序
{
while(!S0TBIR){;} //等待发送缓冲区清空
S0TBIR=0; //复位发送缓冲区中断请求标志
S0TBUF=tdata; //装载发送缓冲寄存器
}
void ASC_vInit(void) //串行通信初始化
{
S0CON=0x8011; //定义控制寄存器:SOR=1;SOREM=1;串行方式1
S0BG=0x0040; //定义波特率9 600Bd
S0RIC=0x0062; //定义接收中断控制寄存器
S0TBIC=0x0080; //定义发送缓冲控制寄存器
P3 |=0x0400; //定义P3.10引脚为输出锁存(TXD0)
DP3 |=0x0400; //定义P3.10方向控制(TXD0为输出)
Dp3 =0xF7FF; //定义P3.11方向控制(RXD0为输入)
IEN=1; //开中断
}
void main(void)
{
……;
ASC_vInit(); //串口初始化
putchar(‘……’); //串行发送
……;
}
6.CAN总线通信软件设计
6.1 C164CI的CAN模块概述
C164CI的CAN模块特点如下:
(1)遵循CAN V2.0B规定(符号标准和扩展功能)。
(2)最大CAN通信速率为1MB/S。
(3)完全的CAN装置:
l 15个信息体,带有自己的识别器和状态控制位;
l 每个信息体可以定义为发送或接收。
(4)通过在片内部XBUS(16位独立方式)与主CPU相连(C166-内核)。
(5)接收滤波器用可编程屏蔽寄存器:
l 全域屏蔽输入信息体(全CAN功能);
l 信息体15有附加屏蔽(基本CAN功能);
l 灵活的中断事件控制;
l 带有两个接收缓冲器;
l 用自己的全域屏蔽寄存器进行接接收滤波。
评论