"); //-->
第三十七课 串口通讯之查询法
在学习本节之前,希望大家对前一节的知识有所了解
程序讲解:
/*---------------------------------------------------------------*/
//串口通讯
//按下按钮,单片机发送数据"Hello! I am glad to see you again.\r"给主机
//单片机晶振:11.0592MHz
//波特率: 9600bps
/*---------------------------------------------------------------*/
#include<reg52.h>
#include<intrins.h>
/*---------------------------------------------------------------*/
sbit K1 = P3^3; //对应开发板硬件
/*---------------------------------------------------------------*/
unsigned char tmp; //单片机向电脑发送的数据
unsigned char code str[]={"Hello! I am glad to see you again.\r\n"};
/*---------------------------------------------------------------*/
void send_str(void); //发送字符串
void send_char(unsigned char txd); //发送字符
void delayms(void);
/*---------------------------------------------------------------*/
void main(void)
{
TMOD = 0x20; //定时器1工作在方式2(8位,自动装载)用作波特率发生
TH1 = 0xfD; //9600bps
TL1 = 0xfD;
SCON = 0x50; //串口工作方式为1 允许接受
PCON = 0x00; // SMOD="0" 波特率不变(为1时,波特率变为两倍)
TR1 = 1; //允许定时器1工作
IE = 0x00; //禁止所有中断
while(1)
{
if(K1==0){delayms();if(K1==0){send_str();while(K1==0);}}
if(RI) //判断是串口否接收到数据
{
RI = 0; //清除中断标志
tmp = SBUF; //保存串行口数据缓冲器的数据
P1 = ~(tmp-48); //送到P1显示
send_char(tmp); //将从电脑上传过来的数据回传到电脑上显示
}
}
}
/*---------------------------------------------------------------*/
//传送一个字符
void send_char(unsigned char txd)
{
SBUF = txd; //送到数据缓冲区
while(!TI); //等待上一数据发送完成
TI = 0; //软件清除中断标志
}
/*---------------------------------------------------------------*/
//传送字符
void send_str(void)
{
unsigned char i="0";
while(str[i]!='\0') //判断字符串是否发送完成
{
send_char(str[i]); //发送字符
i++; //指向下一个字符
}
}
/*---------------------------------------------------------------*/
//延时10000+0us 函数定义
void delayms(void)
{
unsigned char i,j,k;
for(i=5;i>0;i--)
for(j=4;j>0;j--)
for(k=248;k>0;k--);
}
本节重点:
1、串口通讯的初始化(SCON、PCON寄存器的设置)
2、发送接收数据缓冲区的理解(共用一个地址0x99),及串口串行发送数据的认识!
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
飞跨电容钳位型5电平变换电路
慕尼黑上海电子展热点追踪:如何为6G打造坚固的技术底座
移动端DRAM合约价格再上涨
一卡多号读卡器电路原理图
新一代的晶圆代工服务与你共赢新兴的中国半导体市场
慕尼黑上海电子展众多头部连接器展商已就位,共赴年度之约!
纳芯微推出固态继电器NSI7117,以卓越EMC性能应对汽车BMS系统电磁挑战
电容式触控IC解决方案及产品发展状况
不对称的混合级联型多电平变换器单相拓扑结构
高价收购CPU
工业级互连技术在恶劣环境中的可靠应用
U盘电路原理图
十一大放价!!
串口转红外的电路
五功率单元串联变频器的电气连接图
鼠标电路原理图
2410的bios跑出异常了!!
慕尼黑上海电子展热点追踪:告别算力虚火,回归硬件原生
利用高压母线转换模块 (BCM) 为LED驱动器供电
低功耗MCU的比较:nanoWatt XLP与MSP430
串联H桥多电平主电路变换器
USB转并口、串口电路图(ch341).
组合型混合多电平变换电路的拓扑结构
Arm遭遇监管危机:FTC针对其技术授权启动反垄断调查
求教:版主,如何才能设置帖子为回复才能浏览?
MCP6V01热电偶自动调零参考设计
国家“算力网”:像用水用电一样用AI
洞见2026:慕尼黑上海电子展聚焦10大产业热词!
2026 年 AI 数据中心扩容潮 推动云服务商资本开支大涨 79%
求助:谁有philips的芯片原理图啊