/*----------------------------------------------- 名称:串口通信 编写:LZM 日期:2015.05 修改:无 内容:连接好串口波特率设置为9600,无奇偶校验 晶振11.0592MHz 接上串口,可以接收到自己发送的字符 ------------------------------------------------*/ #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 /******************************************************************* 请提前计算一下所选晶振能达到的最高速度,波特率不能超过最高速度 (1) 波特率加倍(SMOD=1): Max_Baud = FOSC/12/16 (2) 波特率不加倍(SMOD=0):Max_Baud = FOSC/12/32 例如:22.1184MHz晶振,波特率加倍时,最大波特率=22118400/12/16=115200 *******************************************************************/ #define FOSC 11059200 //振荡频率 #define BAUD 9600 //波特率 #define SMOD 1 //是否波特率加倍 #if SMOD #define TC_VAL (256-FOSC/16/12/BAUD) #else #define TC_VAL (256-FOSC/32/12/BAUD) #endif typedef unsigned char uint8; typedef unsigned int uint16; code const char str1[] = "The string is 来自单片机!\r\n"; code const char str2[] = "Author: louis \r\n"; //const 限定一个变量不允许被改变。在一定程度上提高程序安全性和可靠性 //code 存储区间为 程序存储区 /***************函数声明*******************/ void InitUART(void); void SendOneByte(uint8); void SendrStr(const uint8 *ptr); /****************主函数********************/ void main(void) { uint8 i=0; InitUART(); while(str2[i]!='\0') { SendOneByte(str2[i++]); } SendrStr(str1); while(1); } /****************中断服务函数***************/ void UART_ISR(void) interrupt 4 { uint8 RX_Data; //只响应"接收"中断,"发送"中断来了就直接抹掉 if(RI) { RI = 0; //串口中断标志不能自己清除,需要手动清除 RX_Data=SBUF; SendOneByte(RX_Data); } else TI = 0; //串口发中断是发送完缓冲区数据之后产生 } /****************串口初始化函数*************/ void InitUART(void) { TMOD = 0x20; //定时器1,模式2工作模式 SCON = 0x50; //串口工作模式1,允许REN /* SCON: 模式 1, 8-bit UART, 使能接收 */ TH1 = TC_VAL; TL1 = TH1; PCON = 0x80; //发送速率加倍 ES = 1; EA = 1; TR1 = 1; } /**************串口发送字符函数*************/ void SendOneByte(uint8 c) { ES = 0; //禁止中断,让串口安心工作啊 SBUF = c; while(!TI); //等待发送完毕 TI = 0; //清TI中断 ES = 1; //打开中断 } /**************串口发送字符串函数*************/ void SendrStr(const uint8 *ptr) { do { SendOneByte(*ptr); //其实发送字符串也是在调用发送字符的函数~~ }while(*ptr++!='\0'); //要有结束判断,否则串口发送 字符串 不知道什么时候停止 }
发表评论
-
STC89C52单片机——串口发送程序2
2015-05-24 22:08 449修改了 1 中不能连续调用 字符串发送的BUG!! ... -
IIC总线协议基础1
2015-06-06 10:12 793文档类别 ... -
LED数码管-十六进制码值
2015-06-09 23:13 940//unsigned char Number[16]={0 ... -
DS18B20-Onewire Bus-单总线 单片机读取温度
2015-06-18 22:29 658DS18B20,单片机,11.0592MHZ </p ... -
单片机之KEIL--添加头文件库
2013-04-25 14:09 1105点击打开链接KEIL v3添加STC系列单片机库文件 方法+ ... -
单片机之UIP--TCP作为服务器,主动发送数据 ACK
2013-04-28 16:21 723作者:LZMCSDN: http://blog.csdn. ... -
单片机之UIP--TCP 校验和计算
2013-06-04 10:49 673TCP 数据校验,在网络和资料中找了许多,总结了下:利用TC ... -
利用KEIL编程nop()如何定义?
2013-11-25 23:34 1373在KEIL中编程,有时候发现无法使用:_nop_(); ... -
Android学习之路以及如何利用Android应用来赚钱
2015-01-17 12:36 314本人一开始学习Android ... -
IIC读写AT24C02代码1——通过串口命令控制R/W
2015-05-26 21:13 917IIC读写AT24C02代码1—— ... -
IIC读写AT24C02代码2——串口命令控制多页读写
2015-06-02 21:24 584通过串口输入 R 、W 进行控制程序读写IIC设备。波特率9 ... -
UART串口协议基础1
2015-06-04 22:53 632Louis kaly.liu@163.com ... -
sizeof strlen 的区别
2013-10-11 08:48 1035sizeof 和strlen 直接给代码: char ... -
单片机之串口通信
2013-09-12 09:12 1256#include "reg52.h" ... -
SPI之CC1101
2013-09-02 08:30 1468SPI读写操作 INT8U SpiTxRxByte ... -
KEIL v3添加STC系列单片机库文件 方法+头文件库
2013-04-25 06:09 2729点击打开链接KEIL v3添加STC系列单片机库文件 方法 ... -
IIC之AT24C256的读写程序
2013-05-10 19:54 1553一个通用的24C01-24C256共9种EEPROM的字节 ... -
TCP 校验和计算 有问题?
2013-06-04 02:49 1614TCP 数据校验,在网络和资料中找了许多,总结了下:利用T ...
相关推荐
/*模 块 名:串口通讯——发送 驱动芯片型号:PL2303 */ /*创 建 人:追忆逝水的年华 日期:2013-09-12 */ /*修 改 人: 日期:2013-09-12 */ /*功能描述: */ /*其他说明: */ /*版 本: /*占用资源: 1)端口...
51单片机主要发展历程:AT89C51(已停产)——AT89S51(已淘汰)——STC89C52(2004年,已落后)——STC12系列(2007年)——STC15F系列(2011年)——STC15W(2014年,最新主流)。 IAP15W4K58S4是STC15W系列中最典型的型号,...
1-2功能叙述 本作品通过HC- 05主从机一体蓝牙模块实现与带蓝牙的设备先通过OPP蓝牙协议来实现配对连接,实现连 接配对可通过电路板上的数字按键来实现输入,经STC89C52单片机处理后通过HC- 05蓝牙无线传送到另一方...
张芝雨 张晓伟 来源:《无线互联科技》2013年第05期 摘 要:本系统采用1片宏晶科技公司的STC89C52单片机作为系统的控制器件,是一种带4K字 节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器——具有4K...
1-2功能叙述 本作品通过HC- 05主从机一体蓝牙模块实现与带蓝牙的设备先通过OPP蓝牙协议来实现配对连接,实现连 接配对可通过电路板上的数字按键来实现输入,经STC89C52单片机处理后通过HC- 05蓝牙无线传送到另一方...
本设计是基于STC89C52RC单片机的数据采集系统,采用AD芯片TLC2543负责模拟数据的采集和转换,可采集八通道的模拟量,由12864液晶显示出来。该系统可通过串口与上位机进行通信,开机后自动读取设置的电压值。当采集...
0231、STC89C52RC单片机学习例程书籍代码资料.rar 0232、例说STM32 ALIENTEK MINISTM32 实验27例光盘资料.rar 0233、UC3843控制多路输出开关电源设计与实现.rar 0234、1.8V 5.2 GHz 差分结构CMOS 低噪声放大器.rar ...
231、STC89C52RC单片机学习例程书籍代码资料.rar 0232、例说STM32 ALIENTEK MINISTM32 实验27例光盘资料.rar 0233、UC3843控制多路输出开关电源设计与实现.rar 0234、1.8V 5.2 GHz 差分结构CMOS 低噪声放大器.rar ...
* us延时程序 * ********************************************************/ void Delayus(uchar us) { while(us--); //12M,一次6us,加进入退出14us(8M晶振,一次9us) } /********************************...
芯片STC89C51RC与STC12C5A32S2 "芯片型号 "RAM "ROM "工作频率 "两者比较 " " "(字节) "(字节)"(Hz) " " "STC89C52RC "512 "8K "0—40M "相同点:都是 " " " " "最高可达48M "低电平驱动; " " " " " "不同点:...
1)硬件环境 MCU:STC89C52 晶振:11.0592M CEPARK MCP2515 CAN 总线模块 使用手册 两个 CAN 模块的 IO 接口分别接一个单片机开发板,接线如下。 SCK——P2^3; SI——P2^2; SO——P2^1; CS——P2^0; ...
○ STC89C52RC单片机一片, 淘宝购得,单价3.7元; ○ 51最小系统板一个,淘宝购得,单价3.9(此为亏本赚信用价,现在卖家已经涨价到9.9元。另有5.8元价格的,小一些,没有串口和 232芯片,做工也差一个级别。不如买...
系统核心控制器采用STC89C52RC-DIP40,系统时钟11.0592MHz;显示器采用LCD1602液晶屏(蓝光白字); 按键使用6*6轻触按键;输出控制开关使用5V直流继电器,控制参数为220V/10A,自带开关状态指示灯,提供接线座; 2...