C51串口输出输入函数

发布者:游走人间最新更新时间:2014-12-10 来源: laogu关键字:C51  串口输出  输入函数 手机看文章 扫描二维码
随时随地手机看文章
*----------------------------------------
ComFun.c

C51串口输出输入函数

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

//串口初始化 晶振为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++; //字符串指针加一
}
}

关键字:C51  串口输出  输入函数 引用地址:C51串口输出输入函数

上一篇:I2C读写心得(AT24C02篇)
下一篇:c51单片机实用通信协议

推荐阅读最新更新时间:2024-03-16 13:48

也谈C51实现PID算法
关于PID的算法实现,很多书上都讲了。 但是,最近真正要用PID算法的时候,发现书上的代码在我们51上来实现还不是那么容易的事情。简单的说来,就是不能直接调用。仔细分析你可以发现,教材上的、网上现行的PID实现的C语言代码几乎都是用浮点型的数据来做的,可以想象,如果我们的计算使用浮点数据,那我们的51单片机来运行的话会有多痛苦。 所以,本人自己琢磨着弄了一个整型变量来实现了PID算法,由于是用整型数来做的,所以也不是很精确,但是对于很多的使用场合,这个精度也够了。关于系数和采样电压全部是放大10倍处理的。所以精度不是很高,但是也不是那么低,大部分的场合都够用了。实在觉得精度不够,可以再放大10倍或者100倍处理,但是要注意
[单片机]
单片机C语言C51的变量和常量
常量 常量是指在程序执行过程中其值不能改变的量。在C51中支持整型常量、浮点型常量、字符型常量和字符串型常量。 一.整型常量 整型常量也就是整型常数,根据其值范围在计算机中分配不同的字节数来存放。在C51中它可以表示成以下几种形式: 十进制整数。如234、-56、0等。 十六进制整数。以0x开头表示,如0x12表示十六进制数12H。 长整数。在C51中当一个整数的值达到长整型的范围,则该数按长整型存放,在存储器中占四个字节,另外,如一个整数后面加一个字母L,这个数在存储器中也按长整型存放。如123L在存储器中占四个字节。 二.浮点型常量 浮点型常量也就是实型常数。有十进制表示形式和指数表示形
[单片机]
STM32F103ZE+mpu6050+hmc5883L通过卡尔曼滤波串口输出姿态角
单片机源程序如下: /* main.c file 功能: 1.初始化各个传感器, 2.运行姿态解算和高度测量 3.将解算的姿态和各个传感器的输出上传到 MiniIMU AHRS 测试软件 4.响应 PC发送的命令 ------------------------------------ */ #include common.h //包含所有的驱动 头文件 //上传数据的状态机 #define REIMU 0x01 //上传解算的姿态数据 #define REMOV 0x02 //上传传感器的输出 #define REHMC 0x03 //上传磁力计的标定值 #define Upload_Speed 15
[单片机]
STM32CubeMX学习教程之六:USART串口输出和printf( )重定向到串口
软件: STM32CubeMX V4.25.0 System Workbench V2.4 固件库版本: STM32Cube FW_F1 V1.6.1 硬件: OneNet 麒麟座V2.3 在STM32CubeMX中新建项目,选择正确的MCU型号 首先设置RCC和SYS,如下图 然后根据板子实际情况设置时钟(麒麟座外部晶振是12M,STM32F103x的最高主频是72M),如下图 配置USART1为Asychronous模式 可以看到PA9和PA10被配置为了USART1_TX, USART1_RX。 UART1配置用默认的115200,8, None和1就好。 Project -
[单片机]
STM32CubeMX学习教程之六:USART<font color='red'>串口</font><font color='red'>输出</font>和printf( )重定向到<font color='red'>串口</font>
C51自学笔记】ULN2003+蜂鸣器+继电器+步进电机
ULN2003: ULN2003 是高耐压、大电流达林顿陈列,由七个硅NPN 达林顿管组成。 大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载 。 看成开关,共七路; 左方高电平:导通,可以过大电流 左方低电平:断开,不可以过大电流 OUT1:接入继电器 OUT2:接入蜂鸣器 OUT3 - OUT7 + CLAMP :接入步进电机 蜂鸣器: 自激蜂鸣器是直流电压驱动的,只需对驱动口输出驱动电平并通过放大电路放大驱动电流就能使蜂鸣器发出声音,非常简单。 改变单片机引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。 改变输出电
[单片机]
【<font color='red'>C51</font>自学笔记】ULN2003+蜂鸣器+继电器+步进电机
C51编译器-语言扩展(4)-函数
Function Declarations函数声明 Cx51对标准C进行了一定的扩展,使用这些扩展可以: (1)把一个函数声明为一个中断过程 (2)选择使用的寄存器组 (3)选择存储器模式 (4)声时可重入 (5)声明外部函数 在函数声中包含这些扩展或属性,使用下面的方法声明Cx51函数 funcname ( ) 这里 return_type 返回值类型 funcname 函数名称 args 参数 small, compact, or large 存储器模式 reentrant 是否可重入 interrupt 是否是中断函数
[单片机]
【Keil5 C51】AT89C52 做流水灯实验(调用C51的库函数_crol_)
_crol_ 函数的介绍 Cx51 User’s Guide Summary #include intrins.h unsigned char _crol_ ( unsigned char c, /* character to rotate left */ unsigned char b); /* bit positions to rotate */ Description The _crol_ routine rotates the bit pattern for the character c left b bits. This routine is implemented as an intrin
[单片机]
【Keil5 <font color='red'>C51</font>】AT89C52 做流水灯实验(调用<font color='red'>C51</font>的库<font color='red'>函数</font>_crol_)
一种C51单片机并行口扩展设计及应用
1 引言 C51单片机是我们生活中最常用的系列,MCS-51系列单片机有4个并行口(P0,P1,P2,P3口),但对一个稍微复杂的应用系统来说,真正可供用户使用的并行口,只有P1口可用,况且常常因扩展I2C和SPI的器件需占用某些P1口,迫使用户不得不扩展并行口以满足实际的需要。习惯上,常用的并行口接口芯片有8255、8155,这两种芯片功能比较齐全,可以使用在相对比较复杂的系统中,但如是对一般的系统而言,这些功能往往闲置不用。那么就可以选用一些本来闲置不用的口线作为选通信号来进行并行口的扩展,这样就能充分利用单片机有限的I/O资源,在本设计中是将P1口扩展成一个或几个8位并行口,在每一个八位口上接入8个发光二极管做为输出,二
[单片机]
一种<font color='red'>C51</font>单片机并行口扩展设计及应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved