完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #include #define uchar unsigned char #define uint unsigned int ***it SPL=P2^5; void delay(uint ms) { uchar i; while(ms--) for(i=0;i<120;i++); } void main() { SCON=0x10; while(1) { SPL=0; SPL=1; while(RI==0); RI=0; P0=SBUF; P1=SBUF; delay(20); } } 这样只会接受到第八位。 我的思路是,应该用循环,把PO和P1的数据分开输入,实在是不会了。求助。
|
|
相关推荐
9个回答
|
|
没用过同步串行方式,不过你的程序有几个问题,一,SBUF是8位的,接收16位数据需要两次,你的程序只看到了一次,所以你的程序现在即使接收正常,P0和P1都是相同的数据。二,没看到如何启动串行通讯。三,如何确认接收到的数据是否正确。
最佳答案
|
|
|
|
人中狼 发表于 2017-4-16 08:31 对对。认识到了里面有很多问题,得移位或者什么,分别接受高八位,低八位,后面不会了。。求助 |
|
|
|
void main()
{ EA=0; SCON=0x00; EA=1; while(1) { SPL=0; SPL=1; REN=1; REN=0; while(RI==0); RI=0; P0=SBUF; while(RI==0); RI=0; P1=SBUF; delay(20); } } 试试这个吧,没用过这种方式,不知道有没有错,思路是这样了。
|
|
|
|
|
|
|
|
问了个前辈,他的大概是: #include #define uchar unsigned char #define uint unsigned int ***it SPL=P2^5; ***it QH= P3^0; ***it CLK= P3^1; void main () { uint i = 0; uint c = 0; while(1) { SPL=0; SPL=1; for(i=0;i<16;i++) { c=c<<1; if(QH) { c=c|QH; } CLK=~CLK; CLK=~CLK; } P0=c>>8; P1=c; } } 但是我不太懂 for(i=0;i<16;i++) { c=c<<1; if(QH) { c=c|QH; } 这一段,想问问您,这是啥意思. |
|
|
|
是两种操作方式,你原来的思路是用串口同步通讯的方式读入数据,最后的这段程序是用IO的方式,通过程序控制引脚给出CLK信号,再通过读引脚将165移出的数据读入,通过移位操作转成一个字节数据,是两种不同的操作方式
|
|
|
|
P0对应的应该是U1的165,串行同步通讯这种方式我也没用过,不过找过资料,这种方式就是用在类似你的这种情况,应该还是程序和时序的问题。
|
|
|
|
多谢多谢,麻烦你啦,我把你程序里REN删了,SCON改成0X10现在可以啦。多谢,前辈~ |
|
|
|
#include #define uchar unsigned char #define uint unsigned int ***it SPL=P3^4; void delay(uint ms) { uchar i; while(ms--) for(i=0;i<120;i++); } void main() { SCON=0x10; while(1) { SPL=0; SPL=1; while(RI==0); RI=0; P1=SBUF; while(RI==0); RI=0; P0=SBUF; while(RI==0); RI=0; P2=SBUF; delay(20); } } 用三个LS165,将并行数据转为串行数据,为什么第一个芯片控制的,控制的第二部分LED,第二个165控制第三部分LED,第三部分开关,控制第一部分LED。 求助前辈,这是为什么?感激不尽。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-运动追踪之编写程序
424 浏览 0 评论
855 浏览 0 评论
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
1662 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1260 浏览 0 评论
904 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11870 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-5 05:10 , Processed in 0.778428 second(s), Total 87, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号