导航:首页 > 操作系统 > 51单片机9600串口程序

51单片机9600串口程序

发布时间:2022-07-16 00:37:02

编程实现51单片机与PC的串口通信,要求波特率设置为9600,循环发送字符串“abc

#include "reg51.h"

void initUart(void)
{
TMOD|=0x20;
SCON=0x50;
TH1=0xfd;
TL1=0xfd;
TR1=1;
}

void main(void)
{
initUart();
EA=1;
while(1)
{
send_byte('abc');

}
}

Ⅱ 一道51单片机的C语言程序,关于串口通讯的,很简单......

#include<reg52.h> //增强型52寄存器的定义
#define uchar unsigned char //用uchar代替unsigned char
#define uint unsigned int //用uint代替unsigned int
unsigned char flag,a,i; //定义变量flag,a,i
uchar code table[]="I receive,thanks"; //定义一个字符串数组

void init()
{
} //设置工作方式,这个懂。

void main()
{
init(); //系统初始化,你懂的
while(1) //主循环部分,一直运行
{
if(flag==1) //等待flag标志位置位,当接收到数据的时候在串口接收中断中置位
{
ES=0; //禁止串口中断,但是注意发送中断标志位的置位仍然正常
for(i=0;i<18;i++) //for循环为了一个个把之前定义的字符串
{
SBUF=table[i]; //向串口收发缓冲器中写入回应的内容“I receive,thanks”
while(!TI); //等待发送完成,发送中断标志被置一,否则while循环一直进行
TI=0; //清除发送中断标志位
}
SBUF=a; //继续通过串口向串口收发缓冲器发送a,回显收到的数据
while(!TI); //等待发送完成
TI=0; //清除发送中断标志位
ES=1; //重新使能串口中断
flag=0; //清除flag,为了等待下一次接收
}
}
}
void serial() interrupt 4 //串口中断服务程序,优先级为4
{
RI=0; //当接收完成之后RI被置一,发生串口中断,清标志位
a=SBUF; //读取收到的字符,并赋给变量a
flag=1; //置接收完成标志flag为一,便于主程序中发送响应
}

Ⅲ 51单片机串口问题,程序如下。

12288的十六进制是3000H
12544的十六进制是3100H
如果你送的是“2“,那打印出来的就是3200H了,也就是12800.
因此(其实我也不怎么知道,推断的):0的asc2码是48,也就是30H,1的asc2码是49,也就是31H……就是说:存储asc2码值的是sbuf的高8位,如果想打印真正的asc2码,就用高八位输出吧~

Ⅳ 简单51单片机串口程序

试试下列程序,这时用中断发送的。

#include<reg51.h>
#define uchar unsigned char
uchar txt[] = "hello";
uchar i = 0;
void main(void)
{
PCON = 0X00;
SCON = 0X50;
TMOD = 0X20;
TH1 = 0XFD;
TL1 = 0XFD;
TR1 = 1;
EA = 1;
ES = 1;
TI = 1;
while(1) {
if(i == 6) {
i = 0;
TI = 1;
}
}
}
void uart() interrupt 4
{
if(RI == 1) RI = 0;
if(TI == 1) {SBUF = txt[i++]; TI = 0;}
}

本程序,可以用串口助手接收。收到的是:hellohellohellohellohello....

Ⅳ 51单片机串口问题 修改程序

按你这程序,那只能是把:
SBUF=receiveData;
while(!TI);
修改成:
SBUF='O';
while(!TI);
SBUF='K';
while(!TI);
如果一定要指定接收‘Y’,那就在这4条语句外括上if条件,if(receiveData=='Y'){xxxxx}
不过本人建议你不要这么搞,这个while(!TI);是潜在死循环,也是N多串口通信导致死机的起因,它可能导致系统其他任务无法执行,出现所谓“死机”现象。
另外,标准51单片机,9600bps,其晶振必定得使用非整数晶振,如11.0592MHz。用 12MHz的晶振,会因其误码率过大而导致通信失败。

Ⅵ 使用8051单片机的串行通信方式1,要求波特率9600bps,请编写初始化程序。

初始化程序:
SCON = 0x50 ; //方式1,允许接受
TMOD = 0x20 ; //设置time1,方式2
TH1 = 0xfd; //波特率9600b/s 晶振12MHz
TL1 = 0xfd;
ES = 1 ; //允许串口中断
EA = 1; //中断总开启
TR1 = 1 ; //T1开启

Ⅶ 51单片机串行口工作方式1,波特率9600,fosc=6MHz,请用查询 的方法编写发送和接

如下即可:
JNBRI,$

CLRRI
MOVA,SUBF
MOVSUBF,A
JNBTI,$

CLRTI

别忘了采纳。

Ⅷ 51单片机的晶振频率为11.0592MHZ,波特率为9600b/s,要求串口工作在方式1,发送数据

init_uart()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0x5=40;
TR1=1;
}

阅读全文

与51单片机9600串口程序相关的资料

热点内容
红塔银行app怎么样 浏览:562
农行app怎么开网银 浏览:649
java迭代器遍历 浏览:301
闽政通无法请求服务器是什么 浏览:48
怎么做积木解压神器 浏览:203
王者荣耀解压玩具抽奖 浏览:49
12位是由啥加密的 浏览:868
程序员编迷你世界代码 浏览:895
php取现在时间 浏览:246
单片机高吸收 浏览:427
怎么区分五代头是不是加密喷头 浏览:244
hunt测试服务器是什么意思 浏览:510
2013程序员考试 浏览:641
毕业论文是pdf 浏览:736
服务器跑网心云划算吗 浏览:471
单片机定时器计数初值的计算公式 浏览:801
win7控制台命令 浏览:567
猫咪成年app怎么升级 浏览:692
360有没有加密软件 浏览:315
清除cisco交换机配置命令 浏览:751