标题: 我是单片机的新人,做流水灯遇到点小麻烦,求大神帮忙 [打印本页]

作者: 不是大神的小韩    时间: 2016-9-25 11:14
标题: 我是单片机的新人,做流水灯遇到点小麻烦,求大神帮忙
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,tt,flag;
//void delay(uint z);
void main()
{
        temp=0Xfe;
        P1=temp;
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        TR0=1;       
        while(1)
                {
                if(flag==1)
                flag=0;
                //delay(10000);
                temp=_crol_(temp,1);
                P1=temp;
                }
}
void exter0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        if(++tt==20000)
                {
                tt=0;
                flag=1;       
                }
}
这是我做的流水灯程序,可是在灯是全亮的,哪出错了啊,大神帮助我。


作者: 半夏123    时间: 2016-9-25 12:17
感觉延迟有问题啊,程序中是零延迟,你把延迟函数模块具体写出来呗
作者: 半夏123    时间: 2016-9-25 12:23
还有c语言程序中“//”是注释的意思,程序运行时会忽略//后面的内容,所以没有报错

作者: wxx    时间: 2016-9-25 12:49
加我qq1160188484  给你解决

作者: a0931727149    时间: 2016-9-25 13:50
程序沒有太大的問題 ,,,猜測是轉態時間過長   

if(++tt==20000) 改成  if(++tt== 2)  看看

作者: a0931727149    时间: 2016-9-27 08:37
a0931727149 发表于 2016-9-25 13:50
程序沒有太大的問題 ,,,猜測是轉態時間過長   

if(++tt==20000) 改成  if(++tt== 2)  看看

while(1)
                {
                if(flag==1)
                flag=0;
                //delay(10000);
                temp=_crol_(temp,1);
                P1=temp;
                }
改成
while(1)
                {
                if(flag==1)
                    {
                     flag=0;
                //delay(10000);
                    temp=_crol_(temp,1);
                   P1=temp;
                  }
                }

作者: STC89C51    时间: 2016-9-27 08:51
楼上正解!




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