STC89C52单片机——串口发送程序1
来源:互联网 发布:知乎更新图标 编辑:程序博客网 时间:2024/05/18 19:20
/*----------------------------------------------- 名称:串口通信 编写: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 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";//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');//要有结束判断,否则串口发送 字符串 不知道什么时候停止}
0 0
- STC89C52单片机——串口发送程序1
- STC89C52单片机——串口发送程序2
- 51单片机STC89C52 串口发送字符
- 51单片机STC89C52 串口发送字符串
- STC51单片机串口发送程序
- 51单片机STC89C52 串口接收(查询)
- 51单片机STC89C52 串口接收(中断)
- 单片机串口程序1
- MS51单片机通用串口发送接收程序
- STC89C52单片机实验1-点亮一个发光二极管
- 单片机IO口模拟串口程序(发送+接收 )
- 一个简易的51单片机串口接收和发送程序
- 51单片机串口程序
- 单片机串口发送数据帧
- 单片机串口接收发送函数
- 小蜜蜂单片机串口发送字符串
- 51单片机STC89C52 蜂鸣器
- 51单片机STC89C52 继电器
- python book 学习笔记(二)
- 腾讯实习面试总结
- 快慢指针在链表中的应用
- Longest Palindromic Substring leetcode 5
- 如何让PC浏览器作为文件管理器(client),访问android手机(server)?
- STC89C52单片机——串口发送程序1
- 日志之Log4j
- 利用Webbrowser把整个网页保存为图片
- svn Repositories 的导入导出操作
- 实现点击文本时checkbox选中
- Ubuntu 14.04下,安装arm-linux-gcc-4.3.2.tgz
- HashMap,TreeMap与LinkedHashMap的实例
- 【原创】sqlite3数据库“SQL error: database disk image is malformed”问题探究(2)
- 第十一周 阅读程序(3)