老古开发网首页
导航:老古开发网首页文章索引索引第2530页文章分类单片机第48页→[C51串口输出输入函数]
| -文章搜索 - 最新文章 - |

第3033篇:C51串口输出输入函数

发布时间:2006年10月15日 点击次数:3273
来源:   作者:
 
*----------------------------------------
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++; //字符串指针加一
}
}


欢迎进入老古论坛进行讨论
[单片机] 相关文章:
80C51复位标志位的设置与应用研究
简介:
来源: 单片机与嵌入式系统应用 作者: 李学海 刘治山 引言   设置复位标志位便于区分不同原因引发的复位,作为一种新技术被越来越多的新型单片机所采纳。例如Philips公司的P87LPC700和 P89LPC900系列、Freescale公司(原Motorola半导体部)的MC68HC05系列和MC68HC08系列、Sunplus公司的 SPMC65系列、Microchip公司的PIC系列等,内部都设计了专门用于记录各种复位标志的状态寄存器。   MC68H......

c51单片机实用通信协议
KeilC51高级编程
做单片机开发,必须跳出芯片型号
用keil计算延时的方法
 
下一个:[接口电路]ADI 推出模数转换器AD9254
简介:
美国模拟器件公司(ADI)推出AD9254 150 MSPS(每秒百万次采样)转换速率14 bit分辨率的模数转换器(ADC)扩展了其无线基础设施应用的器件种类。这款ADC工作在70 MHz时具有83 dB的无杂散动态范围(SFDR),同时功耗仅为430 mW——功耗比同类解决方降低了50%。这种高SFDR、低功耗和小封装尺寸(7 mm×7 mm的48引脚LFCSP)的完美组合使该器件非常适合多种无线基础设施应用,包......

上一个:[传感与控制]ZiLOG® 荣获《电子产品世界》2006年中国嵌入式系统产品创新奖

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:30分钟 执行时间:47毫秒