/*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位放哪?
实在是想不通 求大师解释下
谢谢
|