发 帖  
原厂入驻New
[问答]

那位大侠帮忙修改一下程序

2978
分享
QQ截图20110904082953.png #include <reg51.h>
#define uchar unsigned char
#define uint  unsigned int
//定义全局变量
uchar a=0;  //东西显示时间的缓存变量
uchar b=0; //南北显示时间的缓存变量
uchar time=0; //记录循环单位的位置
uchar int_time=0;//记录中断的次数
uchar clock_a_red=60; //东西定时器初值
uchar clock_a_green=80;
uchar clock_a_yellow=5;
uchar clock_b_red=60; //南北南北计时器初值
uchar clock_b_green=80;
uchar clock_b_yellow=5;
uchar code table[]={      //数码管显示编码
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
//延时模块
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
  for(j=110;j>0;j--);
}
//主函数模块
void main()
{
  TMOD=0X01;
TH1=(65535-50000)/256;
TH0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
P2=0xff;
P1=0x00;
while(1)
{
   /*数码管显示模块*/
   P2=0xfe;   
   P1=table[a/10];
   delayms(1);
   P2=0xfd;
   P1=table[a%10];
   delayms(1);
   P2=0xfb;
   P1=table[b/10];
   delayms(1);
   P2=0xf7;
   P1=table[b%10];
   delayms(1);
}
}
//中断服务模块
void T0_tme() interrupt 1
{
TH1=(65535-50000)/256;
TH0=(65535-50000)%256;
if(20==int_time++)
{
  time++;
  if(time>=0&&time<80)
  {
   P0=0xde;
   a=clock_a_red--;
   b=clock_b_green--;
  }
  else if(time>=25&&time<60)
  {
   P0=0xee;
   clock_b_green=80;
   a=clock_a_red--;
   b=clock_b_yellow--;
  }
  else if(time>=30&&time<55)
  {
   P0=0xf3;
   clock_a_red=60;
   clock_b_yellow=5;
   a=clock_a_green--;
   b=clock_b_red--;
  }
  else if(time>=55&&time<60)
  {
   P0=0xf5;
   clock_a_green=80;
   a=clock_a_yellow--;
   b=clock_b_red--;
  }
  else
  {
   time=0;
   clock_a_yellow=5;
   clock_b_red=60;
  }
  int_time=0;
}

}


0
2011-9-4 08:41:13   评论 分享淘帖 邀请回答
15个回答
额额   眼都看花了  水平太低了
2011-11-15 21:56:27 评论

举报

是本人的水平太低了   大家不要误会
2011-11-15 21:57:06 评论

举报

2011-11-23 14:13:13 评论

举报

楼主把程序跟仿真的文件发一下吧。
2011-12-7 17:29:40 评论

举报

可能是后面几个else if 几个循环嵌套有问题。。。。
2011-12-9 19:18:14 评论

举报

那张图都不清晰呀,,,不然就画画帮你改改
2011-12-9 23:55:11 评论

举报

2012-2-3 16:11:45 评论

举报

应该是20==int-time++这的问题
2012-3-8 16:02:39 评论

举报

不知道对不对,楼主会了说一下,共同学习
2012-3-8 16:04:01 评论

举报

你中断模块里面,那几个else if会不会有冲突啊
2014-7-15 17:28:00 评论

举报

你那个"TH0=(65536-50000)%256"应该改为“TL0=(65536-50000)%256”
2014-7-16 18:48:56 评论

举报

额额   眼都看花了  水平太低了
2016-7-31 18:46:14 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
我要提问
关闭

站长推荐 上一条 /8 下一条

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