如何用c语言编程使得p1^0 p1^1 p1^2的输出为二进制加法的循环
发布网友
发布时间:2022-11-18 16:54
我来回答
共2个回答
热心网友
时间:2024-02-14 03:33
一般在程序里面写成除二取余数的方法来得到。
跟二进制的数的取法手工算法一样。
任意数除2以后,如果有小数点,就在堆栈中写进一个1,没有小数就写0。然后除完以后,把堆栈的数倒取出来,就成了该数字的二进制。
这个算法要写在你执行循环语句(循环语句你知道怎么写吧!不会接着问)的后面,就可以输出来了。追问没有这么复杂吧 如果是p0的八个输入输出做二进制加法的话 num=0x00 p0=num m++就可以了吧
现在我只是想用p0的前三个脚p0.0p0.1p0.2怎么写程序??p0.3到p0.7我还有别的用
热心网友
时间:2024-02-14 03:34
P1=1;//初始赋值
for(i=0;i<7;i++)//循环7次P1.1-P1.7 最开始是P1.0
{
P1=P1+P1;//P1的值加上P1 相当于*2 在二进制中每次*2都会向前进位就实现了P1.0-P1.7的循环点亮
}
完整程序:
#include<reg51.h>
void delay200ms(void) //?? 0us
{
unsigned char a,b,c;
for(c=4;c>0;c--)
for(b=116;b>0;b--)
for(a=214;a>0;a--);
}
void main(void)
{
unsigned char i;
while(1)
{
P1=1;
delay200ms();
for(i=0;i<7;i++)
{
P1=P1+P1;
delay200ms();
}
}
}追问谢谢 不过我的问题是我只用p0的前三个口做二进制加法输出 后面的五个口我还有别的作用
追答//用多一个变量j来做加法运算即可
//赋值时先用与运算清理后3位再采用或运算赋值后3位
//不会影响到P1.3-P1.7
#include
void delay200ms(void) //?? 0us
{
unsigned char a,b,c;
for(c=4;c>0;c--)
for(b=116;b>0;b--)
for(a=214;a>0;a--);
}
void main(void)
{
unsigned char i,j;
while(1)
{
j=1;
P1=(P1&0xf8)|j;
delay200ms();
for(i=1;i!=0x08;i<<=1)
{
j=j+j;
P1=(P1&0xf8)|j;
delay200ms();
}
}
}
热心网友
时间:2024-02-14 03:33
一般在程序里面写成除二取余数的方法来得到。
跟二进制的数的取法手工算法一样。
任意数除2以后,如果有小数点,就在堆栈中写进一个1,没有小数就写0。然后除完以后,把堆栈的数倒取出来,就成了该数字的二进制。
这个算法要写在你执行循环语句(循环语句你知道怎么写吧!不会接着问)的后面,就可以输出来了。追问没有这么复杂吧 如果是p0的八个输入输出做二进制加法的话 num=0x00 p0=num m++就可以了吧
现在我只是想用p0的前三个脚p0.0p0.1p0.2怎么写程序??p0.3到p0.7我还有别的用
热心网友
时间:2024-02-14 03:33
一般在程序里面写成除二取余数的方法来得到。
跟二进制的数的取法手工算法一样。
任意数除2以后,如果有小数点,就在堆栈中写进一个1,没有小数就写0。然后除完以后,把堆栈的数倒取出来,就成了该数字的二进制。
这个算法要写在你执行循环语句(循环语句你知道怎么写吧!不会接着问)的后面,就可以输出来了。追问没有这么复杂吧 如果是p0的八个输入输出做二进制加法的话 num=0x00 p0=num m++就可以了吧
现在我只是想用p0的前三个脚p0.0p0.1p0.2怎么写程序??p0.3到p0.7我还有别的用
热心网友
时间:2024-02-14 03:34
P1=1;//初始赋值
for(i=0;i<7;i++)//循环7次P1.1-P1.7 最开始是P1.0
{
P1=P1+P1;//P1的值加上P1 相当于*2 在二进制中每次*2都会向前进位就实现了P1.0-P1.7的循环点亮
}
完整程序:
#include<reg51.h>
void delay200ms(void) //?? 0us
{
unsigned char a,b,c;
for(c=4;c>0;c--)
for(b=116;b>0;b--)
for(a=214;a>0;a--);
}
void main(void)
{
unsigned char i;
while(1)
{
P1=1;
delay200ms();
for(i=0;i<7;i++)
{
P1=P1+P1;
delay200ms();
}
}
}追问谢谢 不过我的问题是我只用p0的前三个口做二进制加法输出 后面的五个口我还有别的作用
追答//用多一个变量j来做加法运算即可
//赋值时先用与运算清理后3位再采用或运算赋值后3位
//不会影响到P1.3-P1.7
#include
void delay200ms(void) //?? 0us
{
unsigned char a,b,c;
for(c=4;c>0;c--)
for(b=116;b>0;b--)
for(a=214;a>0;a--);
}
void main(void)
{
unsigned char i,j;
while(1)
{
j=1;
P1=(P1&0xf8)|j;
delay200ms();
for(i=1;i!=0x08;i<<=1)
{
j=j+j;
P1=(P1&0xf8)|j;
delay200ms();
}
}
}
热心网友
时间:2024-02-14 03:34
P1=1;//初始赋值
for(i=0;i<7;i++)//循环7次P1.1-P1.7 最开始是P1.0
{
P1=P1+P1;//P1的值加上P1 相当于*2 在二进制中每次*2都会向前进位就实现了P1.0-P1.7的循环点亮
}
完整程序:
#include<reg51.h>
void delay200ms(void) //?? 0us
{
unsigned char a,b,c;
for(c=4;c>0;c--)
for(b=116;b>0;b--)
for(a=214;a>0;a--);
}
void main(void)
{
unsigned char i;
while(1)
{
P1=1;
delay200ms();
for(i=0;i<7;i++)
{
P1=P1+P1;
delay200ms();
}
}
}追问谢谢 不过我的问题是我只用p0的前三个口做二进制加法输出 后面的五个口我还有别的作用
追答//用多一个变量j来做加法运算即可
//赋值时先用与运算清理后3位再采用或运算赋值后3位
//不会影响到P1.3-P1.7
#include
void delay200ms(void) //?? 0us
{
unsigned char a,b,c;
for(c=4;c>0;c--)
for(b=116;b>0;b--)
for(a=214;a>0;a--);
}
void main(void)
{
unsigned char i,j;
while(1)
{
j=1;
P1=(P1&0xf8)|j;
delay200ms();
for(i=1;i!=0x08;i<<=1)
{
j=j+j;
P1=(P1&0xf8)|j;
delay200ms();
}
}
}