C51单片机相关问题,哪位大神能给我解释一下面这个高八位和低八位?

2025-03-12 22:57:32
推荐回答(3个)
回答1:

#include //包含单片机寄存器的头文件
void main(void)
{
unsigned char m,n;
unsigned int s;
m=64;
n=71;
s=m*n;
P1=s>>8; //这样写你应该可以理解了
P0=s; //一个16位数直接赋值给8位变量,潜规则就是只取低八位。
}

回答2:

看第一句注释应该是 s=m*n;(应该不能直接写m n的吧)
也就是s=4544,二进制就是0001 0001 1100 0000,高八位就是0001 0001,低八位就是1100 0000
P1=s/256,s/256就是去掉后八位的意思(256是2的八次方,除以256就是去掉后八位),也就是0001 0001,然后把这0001 0001赋值给P1口,那么P1口的P1.0和P1.4就是高电平灭,其他是低电平亮。
P0=s%256,s%256是只留后八位(取模嘛,前面的都舍弃了)

回答3:

高8位显示的数值,要乘以256,才能与低8位相加。
因为高8位的1相当于256.

备注不要太认真去看,各人的理解方式不同,
程序猿也是会进化的,只要记住公式,慢慢的你会有自己的理解方式。

另外,程序里面低8位的1口应该是亮的。