7.3. 通讯串行采样(轮询)
示例轮询)串行通信使用的抽样方法(:
/************************************************* *********
示例数据传输方案
RS - 232串行端口,经营采样(轮询)。
对于Keil C51的C编译器和微控制器
8051。
说明:一,鉴于一个字符的A,B角计划。在
小写或大写设置为0或1位
P1口。
作者:拉斐尔阿兰达
日期:2009年11月20日
版本:1.0
************************************************** ********/
#包括<reg52.h> / /包括8052通用域名
/ /设置P1的位置位8051微控制器
sbit用于Led_0 = P1的^ 0; / /将位P1.0的象征Led_0
sbit用于LED_1 = P1的^ 1; / /将P1.1置位的符号LED_1
sbit用于LED_2 = P1的^ 2 / /分配的象征LED_2位端口P1.2
sbit用于Led_3 = P1的^ 3; / /将P1.3可象征Led_3位
sbit用于Led_4 = P1的^ 4; / /将P1.4脚位符号Led_4
sbit用于Led_5 = P1的^ 5; / /将P1.5的象征Led_5位
sbit用于Led_6 = P1的^ 6; / /将象征Led_6位P1.6
sbit用于Led_7 = P1的^ 7 / /分配的象征Led_7位P1.7
/ /声明函数的原型
InitSerial无效(无效)/ /启动串行端口
RecDat无效(无效)/ /函数接收数据
/ /全局变量声明
//------------------------------------------------ ----------
/ /主计划
//------------------------------------------------ ----------
无效的主要(无效){
/ /强制前期准备工作
小一= 0,/ /设置所有位小一至零
InitSerial(); / /开始通讯
/ /身体的程序的无限循环
而(1){
/ /显示直至到达一个新的扶轮字节
如果(RI)的{
RecDat();
}
}
}
//------------------------------------------------ ----------
/ /函数接收数据
//------------------------------------------------ ----------
RecDat无效(无效){
无符号字符的DAT;
当RI = 0,/ /清除接收标志
逸= SBUF的; / /检索的字节接收缓冲器
SBUF的=逸; / /回声收到的数据
/ /接收和分析数据的性质而定
/ /设置为0或1对应位
开关体(DAT){
/ /零端口1位
案件'一':
Led_0 = 0,/ /位P1.0的为0
打破;
案件的B':
LED_1 = 0,/ /位P1.1置为0
打破;
案件的'C':
LED_2 = 0,/ /位端口P1.2为0
打破;
案'D'类:
Led_3 = 0,/ /位P1.3作为输出为0
打破;
案件的'电子':
Led_4 = 0,/ / P1.4脚位为0
打破;
案件f的:
Led_5 = 0,/ /位能P1.5为0
打破;
案'克':
Led_6 = 0,/ /位P1.6为0
打破;
案件的H:
Led_7 = 0,/ /位P1.7为0
打破;
/ /做一个端口1位
案'的':
Led_0 = 1,/ /位P1.0的1
打破;
案'乙':
LED_1 = 1,/ /位P1.1置1
打破;
案件的'C':
LED_2 = 1,/ /位端口P1.2为1
打破;
案'D'类:
Led_3 = 1,/ / P1.3可到1位
打破;
案件的E':
Led_4 = 1,/ / P1.4脚位为1
打破;
案'氟:
Led_5 = 1,/ /位P1.5的1
打破;
案件的G:
Led_6 = 1,/ /位P1.6为1
打破;
案件的H:
Led_7 = 1,/ /位P1.7为1
打破;
}
}
//------------------------------------------------ ----------
/ /启动串行端口
//------------------------------------------------ ----------
InitSerial无效(无效){
TMOD的| = 0x20 / /定时器模式2(自动重载)1
的TL1 = 0xFD / / 9600波特率
TH1的= 0xFD;
SCON的= 0x50,/ /设置UART模式2
TR1的= 1,/ /启动定时器和UART
}