第三十七课 串口通讯之查询法
在学习本节之前,希望大家对前一节的知识有所了解
程序讲解:
/*---------------------------------------------------------------*/
//串口通讯
//按下按钮,单片机发送数据"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!='\0') //判断字符串是否发送完成
{
send_char(str); //发送字符
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),及串口串行发送数据的认识!
51波特率初值设定工具:https://static.assets-stash.eet-china.com/album/old-resources/2009/6/8/35b13522-4464-4644-86a4-5a5cf915762e.rar
串口通讯基础知识讲解:http://group.ednchina.com/2031/25592.aspx
用户377235 2012-4-27 17:17
用户222124 2009-6-9 15:21
用户148846 2009-6-9 10:55
用户148846 2009-6-9 10:38
用户222124 2009-6-8 22:13
用户1663879 2009-6-8 21:41
用户1663879 2009-6-8 21:07