User: alciro    User
 Original    Translate to:  Deutsch  English  Français  中文  
 

Microcontroladores 8051

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

} 

Loading
copyright © 2007-2024  www.alciro.org  All rights reserved.         
Share |