|
#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就闪 |