1 判断你的硬件有没有问题;方法是 用跳线讲串口的pin2 和pin3短接,用串口调试助手发送数据看调试助手能不 能自己收到,能就说明是单片机程序有问题
2 你检查你的波特率是生成程序是否正确, 中断和主程序用 1楼给你程序,我看了 没问题。
这样就可以实现串口通信了
只要驱动能力够,可以并联使用,不过单片机端属于广播接收的方式,需要在通讯协议上加个地址信息让各单片机能识别出是发给哪个片的数据包。单片机的tx脚要串个低导通压降的二极管然后再并联接到232片上首先硬件要有MAX232芯片做电平转换或者直接用pl2303做usb转串口.软件要有一个串口调试工具.
至于程序就是 (1):设置串口相关寄存器 注意波特率设置
(2):把数据放在sbuf里面
(3):检查是否发送完毕没完等待 发完了就继续放
各种单片机设置方法不一样就给你一个51 的程序你参考一下:
//wx原创 串口调试程序 向pc发送数据 用于调试观察数据
#include<reg52.h>
#include<hdy.h>
sbit k1=p10
void ckfszf(char zf)
void ckfszfc(char fsgs,char zfc[])
bit cksnbzw=0
char fsb[]={"abcdef"}
main()
{
PCON=0x80 //串口设置
TMOD=0x20 // 以T1定时器为波特发生器 波特率:19200
TH1=0xfD
TL1=0xfD
TR1=1
SCON=0X50 //串口设置模式一完毕
while(1)
{
TI=1
ckfszfc(6,fsb)
ckfszf(' ')
ckfszfc(9,"1234567890")
ckfszf(' ')
ckfszf(' ')
ckfszf(' ')
ckfszfc(12,"AABBCCDDEEFFGG")
ckfszf(' ')
while(1)
}
}
//字符 串口发送函数 由串口向外发送一个字符
//参数1:要发送字符
//返回值:无
//备注: 本函数内部检查上次发送是否结束
// 全局初始化要求:TI=1 保证第一次进入此函数之前TI=1
void ckfszf(char zf)
{
while(TI==0)//等待发送完毕
TI=0
SBUF=zf
}
//字符串 串口发送函数 由串口向外发送一个字符串
//参数1:要发送字符串个数 取值:0~255
//参数2:要发送字符串数组名 或字符串本身
//返回值:无
//备注: 本函数内部检查上次发送是否结束
// 全局初始化要求:TI=1 保证第一次进入此函数之前TI=1
void ckfszfc(uchar fsgs,char zfc[])
{
uchar i
cksnbzw=1
for(i=0i<fsgsi++)
{
ckfszf(zfc[i])
}
}
纯手打 原创程序 给分!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)