找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1673|回复: 6
打印 上一主题 下一主题
收起左侧

尝试写了一个交通灯的程序,但是不知道哪里错了,秒表秒数动得很快,求大神指导

[复制链接]
跳转到指定楼层
楼主
ID:792340 发表于 2020-6-29 04:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我写的代码。
#include<regx51.h>
sbit R=P1^0;
sbit Y=P1^1;
sbit G=P1^2;
sbit com1=P3^0;
sbit com2=P3^1;
unsigned char c,miao;
unsigned char dm[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(unsigned int i)
{
while(i--);
}
void timer() interrupt 1
{   
   TH0=(65536-25000)/256;
  TL0=(65536-25000)%256;
  c++;
  if(c>=40)
   c=0;
   miao--;
}
void xs()
{
com1=1;com2=0;
P2=dm[miao/10];
delay(1000);
P2=0xff;
com1=0;com2=1;
P2=dm[miao%10];
delay(1000);
P2=0xff;
}
void t0()
{
   TMOD=0X01;
    EA=1;
    ET0=1;
  TR0=1;
    TH0=(65536-25000)/256;
  TL0=(65536-25000)%256;
}
void main ()
{
t0();
    while (1)
    {
   miao=39;
   while(miao!=0)
   {
    G=0;
    Y=1;
    R=1;
    xs();
    }
   miao=5;
   while(miao!=0)
   {
    Y=0;
    R=1;
    G=1;
    xs();
   }
   miao=59;
   while(miao!=0)
   {
    R=0;
    G=1;
    Y=1;
    xs();
    }
  }  
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:789121 发表于 2020-6-29 15:11 | 只看该作者
定时器中断函数。if语句后加大括号
void timer() interrupt 1
{   
   TH0=(65536-25000)/256;
  TL0=(65536-25000)%256;
  c++;
  if(c>=40)
{
   c=0;
   miao--;
}
}
回复

使用道具 举报

板凳
ID:332444 发表于 2020-6-29 15:11 | 只看该作者
  c=0;    miao--;应该用花括号括起来,{  c=0;    miao--;}对?
回复

使用道具 举报

地板
ID:584814 发表于 2020-6-29 17:40 | 只看该作者
楼上正解。
IF如果不加括号只将随后的一句纳入条件判断,也就是说你原来的程序只有当C达到40后置零,而miao--并不受条件约束,加了括号后所有括号内的都纳入条件判断。
c>=40不写成c=40是怕跑飞么

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:792340 发表于 2020-7-1 23:01 | 只看该作者
谢谢各位大佬,确实是大佬说的那样,程序可以正常运行了
回复

使用道具 举报

6#
ID:792340 发表于 2020-7-1 23:15 | 只看该作者
xianfajushi 发表于 2020-6-29 15:11
c=0;    miao--;应该用花括号括起来,{  c=0;    miao--;}对?

是的,已经改好了。谢谢
回复

使用道具 举报

7#
ID:792340 发表于 2020-7-1 23:16 | 只看该作者
不要黑 发表于 2020-6-29 15:11
定时器中断函数。if语句后加大括号
void timer() interrupt 1
{   

你说的是对的,谢谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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