完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这段程序可以实现51单片机串口查询法接收发送数据,需要的是芯片有数据接收。我想要的功能是直接给接收寄存器SBUF赋值,比如0x01,相当于省去数据接收的步骤,直接赋值,然后发送。各位大神们请问该怎么修改这段程序?
#include #include unsigned char tmp; void send_char(unsigned char txd); main() { TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率 TH1=TL1=0xFD; // 波特率9600 SCON = 0x50; // 设定串行口工作方式1 允许接收,相当于下面三句 //SM0=0; //SM1=1; //REN=1; PCON =0x00; // 波特率不倍增 TR1 = 1; // 启动定时器1 while(1) { if(RI==1) // 是否有数据到来 { RI = 0; tmp = SBUF; // 暂存接收到的数据 P0 = tmp; // 数据传送到P0口 send_char(tmp); // 回传接收到的数据 } } } void send_char(unsigned char txd) // 传送一个字符 { SBUF = txd; while(!ti); // 等特数据传送 TI = 0; // 清除数据传送标志 } 我修改的程序如下,现象是不发送。 #include #include unsigned int i; unsigned char adata[]={0x01,0x02}; void send_char(unsigned int txd); void main() { int txd; TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率 TH1=TL1=0xFD; // 波特率9600 SCON = 0x50; // 设定串行口工作方式1 允许接收,相当于下面三句 //SM0=0; //SM1=1; //REN=1; PCON =0x00; // 波特率不倍增 TR1 = 1; // 启动定时器1 switch (0) { case 0: { for(i=0;i<1;i++) { txd = adata[i]; send_char(txd); } // 回传接收到的数据 } break; } } void send_char(unsigned int txd) // 传送一个字符 { SBUF = txd; while(!TI); // 等特数据传送 TI = 0; // 清除数据传送标志 } |
|
相关推荐
3个回答
|
|
错误就在switch(0)语句;你要用while(1)循环,这样就不会在程序运行的时候每次都配置串口和定时器,在while(1)循环里你只需要调用send_char(0x01);就可以一直发送了
|
|
|
|
heishe1989 发表于 2015-10-26 17:40 你好,我想问一下,我按照你你说的改了程序。但是通过串口可以看到发回来的数据是乱码,并且不断循环。我想要的是能正确发送单个的数据就行,拜托了! |
|
|
|
heishe1989 发表于 2015-10-26 17:40 你好,现在我的程序可以单纯发送想要的数据了,但是每次都会把上次的程序中数据先写一遍,才执行本次程序。这是什么原因呢?拜托! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
203 浏览 0 评论
761 浏览 0 评论
806 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
743 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1195 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11812 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 07:34 , Processed in 0.643440 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号