STC89C52单片机——串口发送程序2
来源:互联网 发布:中国什么发生战争 知乎 编辑:程序博客网 时间:2024/05/18 21:06
修改了 1 中不能连续调用 字符串发送的BUG!!
/*----------------------------------------------- 名称:串口通信 修复程序1中无法连续调用字符串发送的BUG 编写:LZM kaly.liu@163.com</a> 日期:2015.05.24 修改:无 内容:连接好串口波特率设置为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 FOSC11059200//振荡频率#define BAUD9600//波特率#define SMOD1//是否波特率加倍#if SMOD#define TC_VAL(256-FOSC/16/12/BAUD)#else#define TC_VAL(256-FOSC/32/12/BAUD)#endiftypedef unsigned char uint8;typedef unsigned int uint16;code const char str1[] = "The string is 来自单片机!\r\n"; code const char str2[] = "Author: Louis \r\n";code const char str3[] = "多多指教~~\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[0]);SendrStr(&str1[0]); 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){ for(;*ptr!='\0';ptr++){ SendOneByte(*ptr);}}
0 0
- STC89C52单片机——串口发送程序2
- STC89C52单片机——串口发送程序1
- 51单片机STC89C52 串口发送字符
- 51单片机STC89C52 串口发送字符串
- STC51单片机串口发送程序
- 51单片机STC89C52 串口接收(查询)
- 51单片机STC89C52 串口接收(中断)
- MS51单片机通用串口发送接收程序
- STC89C52单片机定时器2详细整理
- 单片机IO口模拟串口程序(发送+接收 )
- 一个简易的51单片机串口接收和发送程序
- 51单片机串口程序
- 单片机串口程序1
- 单片机串口发送数据帧
- 单片机串口接收发送函数
- 小蜜蜂单片机串口发送字符串
- 51单片机STC89C52 蜂鸣器
- 51单片机STC89C52 继电器
- PHP CPP
- Spring error at ::0 can't find referenced pointcut myMethod异常
- jspdf + highcharts 实现导出存在highcharts图表的html页面
- 面向对象程序设计思想&继承与关键字(5.22)
- 集团信息化之路 在线销售系统及在线收款系统成功签约
- STC89C52单片机——串口发送程序2
- 第12周上机实践项目1——教师兼干部类
- lua中的table.getn()的一些注意事项
- using FFMPEG to setup HLS server on Ubuntu
- 2、类和对象-实例变量可见度
- 功能复杂且包含及时通讯功能的app后台系统架构
- C++线索二叉树求最矮公共父亲节点
- Java压缩技术(一) ZLib
- 源码过滤器