关于51单片机c语言编程的问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 01:51:50
//启动A/D转换函数:StartADC()
void StartADC(uchar Address)
{
PinC = (bit) (Address & 0x04);
PinB = (bit) (Address & 0x02);
PinA = (bit) (Address & 0x01);
PinSTART = 0;
}

我用的是STC98C52,这个(bit)是什么意思啊?假如Address取值为4的话,PINA,PinB,PinC分别等于什么值啊?是几位的啊?如果可以说的详细一些,谢谢高手指点。

答:
PinC PinB PinA是位变量(只有两个值0、1);
Address是字节变量(八位二进制数,用16进制表示是从00H到FFH)。

这几句:
PinC = (bit) (Address & 0x04);
PinB = (bit) (Address & 0x02);
PinA = (bit) (Address & 0x01);

的意思是把 Address和后面的 0x04 0x02 0x01 进行“与”运算后,转换成位变量。赋给PinC PinB PinA。

bit是位变量的定义。

假如Address取值为4的话,PINA,PinB,PinC分别等于什么值啊?是几位的啊?

PINA为0,PinB为0,PinC为1.
举例说明如下:
0 0 0 0 0 1 0 0
0 0 0 0 0 1 0 0

0 0 0 0 0 1 0 0 与运算,按位相“与”

0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0

0 0 0 0 0 0 0 0 与运算,按位相“与”

0 1 1 0 1 1 1 0
0 0 1 1 0 0 1 0

0 0 1 0 0 0 1 0 与运算,按位相“与”

两者全为1时结果才是1.