![]() |
#include<reg51.h> void main() { unsigned int i; while(1) { P2&=0x00; i=50000; while(i--); P2|=0xff; i=50000; while(i--); } } |
WHOAMI000 發表于 2019-3-24 14:08
|
void Delay5ms() //@11.0592MHz { unsigned char i, j; i = 54; j = 199; do { while (--j); } while (--i); }每隔5毫秒的軟延遲把燈開一次延遲一次再關同一個燈再延遲一次然后在開需要打開的下一個燈延遲重復 |
WHOAMI000 發表于 2019-3-24 14:08 直接賦值最簡單,用&/|寫可以保持2、4、6、8狀態不變而不影響另作他用。用^寫徒增麻煩。 #include<reg51.h> void main() { unsigned int i; while(1) { P1&=0xaa; i=50000; while(i--); P1|=0x55; i=50000; while(i--); } } |
在最后一行加多個延時函數,另外最好在初始化的時候把不需要用到的pin配置成輸入 |
void Delay(unsigned int t) { while(--t); } |
異或是判斷語句,不是執行語句,異或做多用來判斷當前值,反而很麻煩 |
這個東西有個大佬之前做過 你可以去看他的帖子哦 加油 一起努力 |
xuyaqi 發表于 2019-3-24 11:23 如果用“異或”該怎么編寫代碼? |
延時程序多的很,抄點就行。 |
這個不能實現嗎 |
while(1) { led1=0; led3=0; led5=0; led7=0; delay(5000); led1=1; led3=1; led5=1; led7=1; delay(5000); } |
while(1) { led1=0; led3=0; led5=0; led7=0; delay(5000); led1=1; led3=1; led5=1; led6=1; led7=1; delay(5000); } |
while(1) { led1=0; led2=0; led3=0; led4=0; led5=0; led6=0; led7=0; led8=0; delay(5000); led1=1; led2=1; led3=1; led4=1; led5=1; led6=1; led7=1; led8=1; delay(5000); } |
先讓1.3.5.7亮,然后延時,然后讓1.3.5.7滅,然后延時即可。都寫在while(1)內,1.3.5.7就閃 |