标题: 单片机怎么实现移位寄存器的功能? [打印本页]

作者: 白亚涛147    时间: 2020-8-27 18:09
标题: 单片机怎么实现移位寄存器的功能?
通过P1.0输入一个脉冲,让P0.0值1让后对这个高电平移位

脉冲从P1.0口输入,当有一个脉冲出现时让P0.0值1,让后通过P1.1口再输入一个脉冲对P0移位,每一个脉冲移动一位。通过51单片机实现移位寄存的功能?请问大侠这个函数怎么写?拜托了

Screenshot_20200827_180520.jpg (488.41 KB, 下载次数: 55)

Screenshot_20200827_180520.jpg

作者: csmyldl    时间: 2020-8-28 00:24
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;
}
作者: wulin    时间: 2020-8-28 06:22
#include <REG52.H>

sbit K1=P1^0;

void main()
{
        while(1)
        {
                if(!K1)
                {
                        P0<<=1;
                        while(!K1);
                }
        }
}
作者: 烈火    时间: 2020-8-28 08:39
可以这样写
sbit PP=P1^0;
main()
{
char V=0;
P0=0;
while(PP!=0)   //出现低脉冲
{
V=(V<<1)+1;
if (V==0xff) V=0;
P0=V;
}
作者: aayon1979    时间: 2020-8-28 09:04
建议先画个流程图就容易了
作者: 白亚涛147    时间: 2020-8-28 09:24
谢谢大家的帮忙
作者: 山水间    时间: 2020-8-28 09:27
这个不就是流水灯的代码吗?楼主可以看看那些单片机书籍,比如郭天祥的,一般都会有流水灯,这是单片机入门时最先遇到的小实验之一
作者: 白亚涛147    时间: 2020-8-28 09:31
csmyldl 发表于 2020-8-28 00:24
sbit PP=P1^0;
main()
{

怎么通过P1^0的脉冲进行移位?
作者: 塞北江南    时间: 2020-8-28 10:09
这个事你最好看看IIC视频,时面就有你说到的内容,说白就是数据一位一位的传输过程
作者: csmyldl    时间: 2020-8-28 10:45
烈火 发表于 2020-8-28 08:39
可以这样写
sbit PP=P1^0;
main()

需要确定一个脉冲只移位一次,你去掉一条,可能一个脉冲移位了多次(看脉冲宽度)




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1