① 如何用用单片机keil软件和串口调试助手实现串口通信
要用单片机搞串口通信,是实物单片机开发板与电脑做串口通信吗?还是只想用keil 做仿真调试?串口调试助手是电脑上的软件,那应该用实物单片机开发板才能做了。那keil 只不过是用来编译C程序的,并不用它测试什么。对于用单片机开发板,先用C语言写程序,或汇编语言写程序。写好程序用keil 编译出HEX代码文件,再把HEX代码文件烧录到单片机里,即可运行调试了。如果只是想用keil 仿真,就不能用串口调试助手。要用proteus 仿真就更方便容易了,用不着什么串口调试助手。
② 怎么用51单片机向串口调试助手发送字符串有程序解释更好啊,求解~
ASCII码在单片机中也是用16进制来表示的,只是解码后显示的是字符,你要是随便发一个字符,串口调试助手选择字符显示接收就可以显示一个字符出来(可能我们不认识这个字符)。发送一个字符串就是不停的发送直到发送完毕,51单片机有自己的串行发送端口P3.0和P3.1端口,但是它是一个字节一个字节发送的,发送完一个字节会产生一个中断(也可以用判断TI的方式判断是否发送完),中断响应后再次启动发送SBUF=0Xxx,就会自动连续的发送,再加上判断就可以控制发送的字节数。
串口初始化:
void uart_init()
{
TMOD=0x20;//定时器1,模式2
SCON=0x50;//串口通讯方式1
TH1=0xfd;//波特率9600
TL1=0xfd;
button=0;
delay(1);
TI=0;//发送中断标志位清零
RI=0;//接收中断标志位清零
TR1=1;//启动定时器1
EA=1; //使能全局中断
ES=1; //启动串口中断
}
}
void main()
{ P1=0xff;
uart_init() ;
while(1)
{
}
// 串行中断程序
void commIntProc() interrupt 4
{
if(TI)
{
TI = 0;
if(sendPosi < sendCount) //判断是否发送完成
{
sendPosi++; //发送一次计数器加一
SBUF = sendBuf[sendPosi];//启动发送
}
③ 单片机向串口调试助手发送数据 c语言
ucharidataSystemBuf[10];//用于接收
ucharRx=0;//接收数据条数
ucharcodeAT[]="YES,ITIS";
voidUART_init(void)
{
TMOD=0x20;//用定时器1
PCON=0x00;//波特率不加倍
SCON=0x50;//串行方式1
TH1=0xFD;//9600
TL1=0xFD;//
EA=1;//
ES=1;//
TR1=1;
}
voidsendchar(ucharch)//串口送一个字节
{
SBUF=ch;
while(TI==0);
TI=0;
}
voidsendstring(uchar*p)//送字符串
{
while(*p)
{
sendchar(*p);
p++;
}
}
///////
voidreceive(void)interrupt4using1//中断
{
if(RI)
{
if(Rx<10)//这儿最多收10个字节
{
SystemBuf[Rx]=SBUF;
Rx++;
}
RI=0;
}
}
///
voidmain()
{
uchari;
UART_init();
while(1)
{
if(SystemBuf=='S')
{
sendstring(AT);
for(i=0;i<10;i++)//接收清0
{
SystemBuf[i]=0;
}
Rx=0;
}
}
}
④ 怎么用stc89c52单片机利用串口助手向电脑每秒发送从零开始的数据啊
这个问题,你提问过,还没有写出程序呀。对串口程序不熟悉呀。
程序很简单的,如下
#include <reg51.h>
unsigned char t0n;//T0中断20次为1秒
main()
{
unsigned char second;
TMOD=0x21;
TH1 =0xFD;//晶振频率=11.0592,波特率=9600
TL1 =0xFD;
SCON=0x50;
TH0 =0x4B;//晶振频率=11.0592,定时50us
TL0 =0xFD;
EA =1;
ET0 =1;
TR0 =1;
TR1 =1;
while(1)
{
if(t0n>=20)//定时器T0中断20次,1秒到
{
t0n=0;
second++;
if((0x0f&second)==0x0a)//变成10进制数发送
{second+=6;}//删掉这两行,按十六进制数发送
SBUF=second;//发送秒
while(TI==0);
TI=0;
}
}
}
void T0_int() interrupt 1
{
TH0 =0x4B;
TL0 =0xFD;
t0n++;
}
下图是串口调试助手接收的情况
1,单片机按十进制数形式发送时,接收数据如下,是按十六进制数显示,但没有十六进制数了
⑤ 串口调试助手和单片机通讯,为什么有的可以有的
串口调试助手和单片机通讯,单片机有时候会丢失数据,因为单片机速度较慢,而电脑发送数据是不管不顾的,发出去就完。不管对方是否接受到。单片机处理不及时的话就会丢失数据。
⑥ 如何用串口调试助手发送数据给单片机并使LED灯亮
基本没错。就是第一次发送没反应,第二次时才开始反应。应该是开串口中断放后面的原因。
就是buf[n]=SBUF;//这条不知什么用 。
还有,ES=1放在串口初始化中。
⑦ 为什么一打开串口调试助手,单片机的程序就停了
很可能是程序串口配置不正确,
再检测下你的其他单片机外围设备是否与串口配置相互冲突
一般冲突的话还可能导致电脑蓝屏
⑧ 串口调试助手向单片机发送一串数字,单片机只显示最后一位,该怎么解决
你好!!
你每次串口中断的时候都会 uint m=0;
那你 m++ 还有什么意义,把 uint m=0; 拿到中断的外面;中断结束后 m 清零
还有,别用 while 循环,用 if 判断
⑨ 用串口调试助手向单片机发送数据
这就对了。电脑显示的是ASCII码。1的ACII码正是31H
⑩ 用51单片机与PC进行通信,通过串口助手进行调试
REN=1;
SM0=0;
SM1=1;
把SM0=0和SM1=1写在REN前面。在开始工作时,单片机默认为00工作方式,这时候你就已经通过REN=1启动单片机,那么输出一定有问题。必须先将工作方式定位01后,再启动REN