8位单片机可以接收10位二进制(如1023的二进制是1111111111)的数据吗?如果可以,c程序什么写?

发布网友

我来回答

5个回答

热心网友

可以,但不能用串口,只能模拟串行通讯的方式来做了。比如CLK接外部中断0,DAT为P1.0程序如下:
#include<reg51.h>
sbit p10=P1^0;
unsigned int dat,num,datp[],i;
void ext0() interrupt 0
{
dat=(dat|p10)<<1;
num++;
if(num>=10)
{
datp[i]=dat;
i++;
dat=0;
}
}
main()
{
EX0=1;
IT0=1;
EA=1;
dat=0;
i=0;
num=0;
while(1);
}

热心网友

可以啊,比如

unsigned int temp;//16位变量
unsigned char i;
temp =0;
for(i=0;i<10;i++)
{
    if(PIN==1) //从PIN脚接收数据位
    {
        temp=temp | 0x0001;        
    }
    temp=temp <<1;
}

以上只是个例子。

热心网友

可以。
用10个一脚绑成16位进制,高低8位表示。
使用联合体把;
union kk
{
unsigned char a[2];
unsigned int b;
} ;
使用的时时候,只需要将引脚变量值付给a数组,
组合调用b就可以。还是自动分配转换都省了,主要注意下物理引脚定义和高低为顺序。要联机调试下。

热心网友

可以的。用C写一个小程序就可以了

热心网友

可以啊,你只要定义一个int型就行了,分开高八位与低八位,程序很多的,就是高低字节的事

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com