怎么用51单片机向串口调试助手发送字符串?有程序解释更好啊,求解~

比如说发个10位的ASCII码,怎么原样输出一个字符串,而不是一个一个单个的字符啊~希望有程序,小弟求教~... 比如说发个10位的ASCII码,怎么原样输出一个字符串,而不是一个一个单个的字符啊~希望有程序,小弟求教~ 展开
 我来答
疯狂的门
2011-04-26 · TA获得超过1024个赞
知道小有建树答主
回答量:443
采纳率:100%
帮助的人:153万
展开全部
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];//启动发送
}
追问
太感谢了,可不可以再给我一个接收部分的程序啊~~
追答
我可以提醒你一下,发送完成和接收完成是同一个中断,所以进入中断要先判断是发送产生的中断(TI=1)还是接收产生的中断(RI=1),判断之后要把TI或者RI清零,硬件不能自动清零,如果不清零,就不能进行下面的发送或接收。
保存接收到的数据语句是:recieveBuf [ i ]=SBUF;
自己动手先试试吧,如果实在不行我再发给你。
爬行的山羊
2011-04-26 · TA获得超过3026个赞
知道大有可为答主
回答量:6449
采纳率:70%
帮助的人:1155万
展开全部
哈哈,看这个程序
void puts_to_SerialPort(uchar *s)
{
while(*s != '\0')
{
putc_to_SerialPort(*s);
s++;
delay(5);
}
}

puts_to_SerialPort("kai shi shi jian...\r\n");
追问
弱弱的问下,这个是中断法吗?不是的话,有没有中断法的例子?先谢谢了~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式