找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 2958|回复: 6
收起左侧

我是单片机的新人,做流水灯遇到点小麻烦,求大神帮忙

[复制链接]
ID:140389 发表于 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;       
                }
}
这是我做的流水灯程序,可是在灯是全亮的,哪出错了啊,大神帮助我。

回复

举报

ID:116644 发表于 2016-9-25 12:17 | 显示全部楼层
感觉延迟有问题啊,程序中是零延迟,你把延迟函数模块具体写出来呗
回复

举报

ID:116644 发表于 2016-9-25 12:23 | 显示全部楼层
还有c语言程序中“//”是注释的意思,程序运行时会忽略//后面的内容,所以没有报错
回复

举报

ID:138419 发表于 2016-9-25 12:49 | 显示全部楼层
加我qq1160188484  给你解决
回复

举报

ID:140371 发表于 2016-9-25 13:50 | 显示全部楼层
程序沒有太大的問題 ,,,猜測是轉態時間過長   

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

举报

ID:140371 发表于 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;
                  }
                }
回复

举报

ID:137239 发表于 2016-9-27 08:51 | 显示全部楼层
楼上正解!
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表