求助单片机C语言大神!!!uchar temp; temp=0; P1=temp;temp++;这怎么理解?

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit SHCP=P2^0;
sbit DS=P2^1;
sbit STCP=P2^2;
uchar code ZM[ ]={点阵字模数据}
void delay_ms(unsigned int ms) //延时函数
{
uchar j;
while(ms--)
for(j=0;j<123;j++);
}
void WriteByte(uchar dat) 、//74HC595读入数据函数
{
uchar k;
for(k=0;k<8;k++)
{
dat=dat>>1;
DS=CY;
SHCP=0;
SHCP=1;
}
}
void main() //主函数
{
uchar num,temp,n,m;

while(1)
{
for(n=0;n<192;n++) //
for(m=0;m<8;m++) //重复显示8次
{
for(num=n;num<n;num++)

{
WriteByte(tab[2*num+1]);//行数据读入
WriteByte(tab[2*num+0]);
P1=temp; //列数据读入
STCP=0; // 显示上升沿打开,开始显示
STCP=1;
delay_ms(1); //延时显示
temp++; //列数据更新
if(temp==16)
temp=0;
}
}
}
}
P1=temp,这怎么理解?
用的列驱动芯片是74HC154 P1=temp那是怎么变74HC154的地址二进制码?

74HC154 的输出 从 Y0——Y15 对应的输入是 0000——1111 ,即从 0——15,所以
当 P1 = temp;...... temp++; if(temp==16) temp=0;就是循环输入 0——15
输出就是 Y0——Y15 不断循环
实际上计算机里面的都是二进制码,只不过我们表示成十进制的而已
计算机内存中任然以二进制存储,只是显示给我们的是十进制数
XXXX0000——XXXX1111,X 表示无关位,左边高位,右边低位追问

P口直接输入char型整数,比如2,就是对应0x10?总感觉怪怪的。。。。

追答

P1 = 2 应该是和 P1 = 0x02 = 0000 0010 B 一样的啊

追问

哦,是我把16进制直接看成2进制了。 TOT

温馨提示:答案为网友推荐,仅供参考