单片机 C51的一段程序问题

来源:百度知道 编辑:UC知道 时间:2024/05/02 19:02:40
#include<reg51.h>
void main(void)
{
unsigned char buf;
while(1)
{
buf=p3
if(p0.0)p1=buf&0x0f;
else p1=buf;
}

}

这段程序的功能?

#include<reg51.h>
sbit CKPIN=P0^0; //检测引脚
void main(void)
{ unsigned char buf;
while(1)
{
buf=P3; //读P3的值到buf中
if(CKPIN)
P1=buf&0x0f;//如果P0.0等于1,则P1的低4位置为buf的值,高4位为零
else
P1=buf; //如果P0.0等于1,则P1=buf
}
}
//1.P1的低四位=P3的低四位
//2.如果P0.0为1,则P1的高四位清零,否则P1的高四位=P3的高四位

当P0.0为真
把P3的高四位置0后给P1
当P0.0为假
直接把P3的值给P1

P0^0=1时将p3值高四位置0,给buf
否则直接给buf

当P0.0为高电平时,就是把P1高四位变为低电平,低四位保留;
否则就是p1口就跟P3口一样!!

P0.0=1时
P1高四位为0;第四位与P3低四位相同;
P0。0=0时
P1的所有位与P3相同。