标题: 这段用单片机函数来实现流水灯的代码为什么只执行了一次,请各位看看 [打印本页]

作者: 小白大佬轻点喷    时间: 2022-12-14 14:23
标题: 这段用单片机函数来实现流水灯的代码为什么只执行了一次,请各位看看
求助各位大佬,单片机源程序如下:
#include <STC12C5A60S2.H>
#include<INTRINS.h>

void main()
{
        P0M0=0xff;
        P0M1=0x00;//io口模式配置,删掉也一样
        
        P0=0x01;//将共阴led第一个点亮
        while(1){
        P0=_crol_(P0,1);//调用crol函数实现流水灯
        delay(500);
        }
}
//delay函数为count毫秒
void delay(unsigned char count)
{
        unsigned char i, j;
        while(count--){
        i = 2;
        j = 239;
        do
        {
                while (--j);
        } while (--i);
}
}        

求各位大佬留下你们宝贵的建议,谢谢


作者: coody_sz    时间: 2022-12-14 15:39
不是执行了一次,是一直在执行,只不过后面P0输出的都是0x00。
作者: 小白大佬轻点喷    时间: 2022-12-14 16:32
coody_sz 发表于 2022-12-14 15:39
不是执行了一次,是一直在执行,只不过后面P0输出的都是0x00。

大佬,细说?
作者: billaj    时间: 2022-12-14 18:43
_crol_带循环 <<是位左移,后面补0
然后一直是0。。。
作者: wulin    时间: 2022-12-14 19:03
延时函数要声明
#include <STC12C5A60S2.H>
#include<INTRINS.h>

void delay(unsigned char count);

void main()
{
        P0M0=0xff;
        P0M1=0x00;//io口模式配置,删掉也一样       
        P0=0x01;//将共阴led第一个点亮
        while(1)
        {
                P0=_crol_(P0,1);//调用crol函数实现流水灯
                delay(500);
        }
}
//delay函数为count毫秒
void delay(unsigned char count)
{
        unsigned char i, j;
        while(count--)
        {
                i = 2;
                j = 239;
                do
                {
                        while (--j);
                } while (--i);
        }
}
作者: wulin    时间: 2022-12-14 19:07
billaj 发表于 2022-12-14 18:43
_crol_带循环

P0=_crol_(P0,1);是循环左移,与<<不同。
作者: cccc888    时间: 2022-12-14 19:26


改成这样,如图。

作者: 小白大佬轻点喷    时间: 2022-12-14 19:48
wulin 发表于 2022-12-14 19:03
延时函数要声明
#include
#include

抱歉,这是我从一个工程上弄下来的,有点小错误。。感谢的解答了

作者: 小白大佬轻点喷    时间: 2022-12-14 20:01
cccc888 发表于 2022-12-14 19:26
改成这样,如图。

请问大佬为什么用temp储存和直接用io口不一样呢,求解答,麻烦你了




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