你碰到了什么问题呢 |
mengzhixinheng 发表于 2021-3-17 13:55 uchar j,k,z; for(j=8;j>0;j--) { for{k=0;k<j;k++} { P2=(0x01<<k)|z; delay(500); } z=P2; } |
光说不练 发表于 2021-3-16 17:51 这个好,简洁明了 |
1045964948 发表于 2021-3-17 22:33 改j数组加0xff. 这个已经没难度了吧!!! |
感谢各位大神 |
mengzhixinheng 发表于 2021-3-17 13:55 好了可以了,非常感谢 |
mengzhixinheng 发表于 2021-3-17 13:55 但是流到第八位没办法常亮,我再思考思考,谢谢 |
mengzhixinheng 发表于 2021-3-17 13:55 谢谢我去看看 |
uchar tab[]={0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe}; for(j=8;j>0;j--) for{k=0;k<j;k++} { P2=(0x01<<k)|tab(8-j); delay(500); } 注意:逻辑没错,程序没编译,自己修改 |
8乘8等于64种花样,即64个数据,每次读出延时一下就能实现。 |
unsigned char a=0x01; P2 = 0; for(i=0;i<8;i++){ P2=P2|(a<<i); delay_1s(); } |
yzwzfyz 发表于 2021-3-15 22:33 这个能说详细一点吗谢谢 |
啤酒瓶子老大 发表于 2021-3-15 23:31 这个能说详细一点吗谢谢 |
可以用一个数组。LED[]={0X01,......} FOR {然后P2=LED[];} 明白了吗。 |
不要用直接用:P2.0-7 先设8个灯为:L1-L8,将你需的显示的形式一一列出: 如 第一步:L3,4 亮1秒 第二步:L1,2,5,6 亮1秒 第三步:…… …… 完成上面程序后,再决定L1-8是哪张灯,这样做很机动。 方法举例:定义L1为P0.6……,将8张灯定义一下,就可以了。 |