百度知道 - 信息提示

日期:2025-01-13 02:49:35 人气:1

百度知道 - 信息提示

    A+
热门评论

间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。

/*****************************看看这个行不,假设8个小灯与P0口相连*********************************/#include #include #define uint unsigned int #define uchar unsigned char uint num , temp , i;void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }uint a[] = {0xfe , 0xfc , 0xf8 , 0xf0 , 0xe0 , 0xc0 , 0x80 , 0x00} ; int main(void) { while(1) { for(i = 0 ; i < 8 ; i++) { temp = a[i] ; P0 = temp ; for(num = 0 ; num < (8 - i) ; num++) { P0 = temp ; temp=_crol_(temp,1); delay(300) ; } } } }

阅读全文

求解 希望大虾帮忙间隔300ms第一次一个管亮流动一次, 第二次两个管亮流动,依次到8个管亮, 然后重复整个

你应该是_crol_没看懂吧,这是character to rotate left的缩写,也就是字符循环左移的意思。例如 void test_crol (void) { char a;/* character to rotate left要循环左移的字符 */ char b;/* bit positions to rotate要循环左移的位数 */ a = 0xA5;/*a = 1010_0101*/ b = _crol_(a,3); /* b now is 0x2D 循环左移3次以后,变成0010_1101*/ } 这个弄明白了吧,然后再看<<这个的,这个是算术左移吧,如果a = 1010_0101,那么a<<3以后应该a=0010_1000,不懂?就是这个左移以后右边将自动补0,而不是补上左边移掉的数据。

阅读全文