访问电脑版页面

导航:老古开发网手机版51单片机51单片机Keil C51编程

C51串口输出输入函数

导读:
关键字:
*----------------------------------------
ComFun.c

C51串口输出输入函数

外部声明 ComFun.h
Copyright 2003 http://www.cdle.net
All rights reserved.
明浩 E-mail: pnzwzw@cdle.net
----------------------------------------*/
#include <reg51.h>

//串口初始化 晶振为11.0592M 方式1 波特率300-57600
void InitCom(unsigned char BaudRate)
{
unsigned char THTL;
switch (BaudRate)
{
case 1: THTL = 64; break; //波特率300
case 2: THTL = 160; break; //600
case 3: THTL = 208; break; //1200
case 4: THTL = 232; break; //2400
case 5: THTL = 244; break; //4800
case 6: THTL = 250; break; //9600
case 7: THTL = 253; break; //19200
case 8: THTL = 255; break; //57600
default: THTL = 208;
}
SCON = 0x50; //串口方式1,允许接收
TMOD = 0x20; //定时器1定时方式2
TCON = 0x40; //设定时器1开始计数
TH1 = THTL;
TL1 = THTL;
PCON = 0x80; //波特率加倍控制,SMOD位
RI = 0; //清收发标志
TI = 0;
TR1 = 1; //启动定时器
}

//向串口输出一个字符(非中断方式)
void ComOutChar(unsigned char OutData)
{
SBUF = OutData; //输出字符
while(!TI); //空语句判断字符是否发完
TI = 0; //清TI
}

//向串口输出一个回车换行
void ComOutEnter(void)
{
SBUF = 0x00;
while(!TI);
TI = 0;
SBUF = 0x0A;
while(!TI);
TI = 0;
}

//向串口输出一个字符串(非中断方式)
void ComOutStr(unsigned char *Str)
{
while(*Str != 0x00) //判断是否到了字符串的尾部
{
SBUF = *Str; //输出字符
while(!TI); //空语句判断字符是否发完
TI = 0; //清TI
Str++; //字符串指针加一
}
}

//从串口接收一个字符(非中断方式)
unsigned char ComInChar()
{
unsigned char InData;
while(!RI); //空语句判断字符是否收完
InData = SBUF; //保存COM缓冲字符
RI = 0; //清RI
return (InData); //返回收到的字符
}

//从串口接收一个定长字符串(非中断方式,只用于字符需有一个的idata字符串数组)
//如unsigned char *Str;
//unsigned char i[]="abcd";
//InHandStr = &i;
void ComInStr(unsigned char *Str)
{
while(*Str != 0x00) //判断是否到了字符串的尾部
{
while(!RI); //空语句判断字符是否收完
*Str = SBUF; //保存字符
RI = 0; //清RI
Str++; //字符串指针加一
}
}

来源:   作者:  2006/9/25 16:50:53
栏目: [ 51单片机Keil C51编程]

相关阅读

几种码制转换 BCD TO HEX,HEX TO BCD ,BIN TO HEX

让Ultra Edit和Keil结合的更紧密

在KEIL C51上仿真完了,怎样生成HEX文件去烧写??

在Keil c51调试中,如何查看外部存储器XDATA?

Keil C51中如何实现代码优化?

C51中 INT 转换为 2个CHAR?

proteus与keil的完美结合(没有开发板,让你也学的爽!)

[转载]C51中断处理过程

Keil C51编译错误总结

C51 的重入问题 WARNING L15: MULTIPLE CALL TO SEGMENT(转)

keil 7.0编译出现:error C316: unterminated conditionals

51单片机CO2检测显示程序解析

Keil C51单片机中变量的使用方法解析

MCS51单片机程序设计时堆栈的计算方法解析

那位大虾能告诉我C51 的printf()函数有什么用?

C51单片机的几种常用延时程序设计

在Keil c51调试中,如何查看特殊寄存器?

volatile的用法

一文知道keil编译程序的过程

SBUF=0x65,c=SBUF结果为c=0???