烈火 发表于 2020-8-28 08:39 需要确定一个脉冲只移位一次,你去掉一条,可能一个脉冲移位了多次(看脉冲宽度) |
这个事你最好看看IIC视频,时面就有你说到的内容,说白就是数据一位一位的传输过程 |
csmyldl 发表于 2020-8-28 00:24 怎么通过P1^0的脉冲进行移位? |
这个不就是流水灯的代码吗?楼主可以看看那些单片机书籍,比如郭天祥的,一般都会有流水灯,这是单片机入门时最先遇到的小实验之一 |
谢谢大家的帮忙 |
建议先画个流程图就容易了 |
可以这样写 sbit PP=P1^0; main() { char V=0; P0=0; while(PP!=0) //出现低脉冲 { V=(V<<1)+1; if (V==0xff) V=0; P0=V; } |
#include <REG52.H> sbit K1=P1^0; void main() { while(1) { if(!K1) { P0<<=1; while(!K1); } } } |
sbit PP=P1^0; main() { unsigned char V=0; P0=0; while(!PP) //出现低脉冲 { while(PP); V=(V<<1)+1; if (V==0xff) V=0; P0=V; } |