兄弟的你sec进行移位有错,是移位操作,不是累加 |
P0=~_crol_(1,sec); |
光看你的图就知道问题在哪里了,你的sec这个变量在循环里累加,一开始是0,然后是1,2,3.....但是你要转换为二进制去看啊,其实你的sec是0000,0001,0010,0011,0100......这样子变化的,所以根本没有流水灯的效果嘛,要通过移位操作才行,不能累加。 |
#include "reg52.h" #include "intrins.h" #define uchar unsigned char #define uint unsigned int void main() { uint cnt; uchar sec=0; TMOD=0x01; TH0=0xB8; TL0=0x00; TR0=1; P0=0xfe; while(1) { if(TF0==1) { TF0=0; TH0=0xB8; TL0=0x00; cnt++; if(cnt>=50) { cnt=0; P0=_crol_(P0,1); } } } } |
1.灯是低电平亮2.移位那里有错,你对sec进行移位有错。 |