/*8X8行扫描,左移显示*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code TAB[]={0xFF,0xF7,0xFB,0x81,0xFB,0xF7,0xFF,0xFF};
uchar i,t,j=0;
delay(uchar t)
{
while (t--)
{;}
}
void main(void)
{ uchar T,Y,Q;
while(1)
{
for(Q=0;Q<8;Q++)
for(T=0;T<100;T++) //速度
{
P2=0x01;
for(i=0;i<8;i++)
{
Y=TAB[i+1]*256+TAB
;
Y=Y<<(7-Q)|Y>>Q;
P1=Y%256;
delay(60);
P2=P2<<1|P2>>7;
}
}
}
}
这段代码是别人写的
Y=TAB[i+1]*256+TAB;
Y=Y<<(7-Q)|Y>>Q;
P1=Y%256;
这几句看不懂
我的分析是这样的
Y=TAB[i+1]*256+TAB; 首先定义的Y是uchar类型,一次只能装8位,其次TAB[i+1]*256相当于左移8位,但是你的数组的类型也是uchar,如果这样的话移掉的8位放哪?
实在是想不通 求大师解释下
谢谢
此帖出自小平头技术问答
#define uchar unsigned char
#define uint unsigned intuchar code TAB[]={0xFF,0xF7,0xFB,0x81,0xFB,0xF7,0xFF,0xFF};
uchar i,t,j=0;delay(uchar t)
{
while (t--)
{;}
}void main(void)
{ uchar T,Y,Q;
while(1)
{
for(Q=0;Q<8;Q++)
for(T=0;T<100;T++) //速度
{
P2=0x01;
for(i=0;i<8;i++)
{
Y=TAB[i+1]*256+TAB;
Y=Y<<(7-Q)|Y>>Q;
P1=Y%256;
delay(60);
P2=P2<<1|P2>>7;
}
}
}
}
上面程序掉了一个【i】
这个是完整的程序
一周热门 更多>