2544|1

93

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

在用AT89C51定时计数时出现的问题 [复制链接]

#include
#define uchar unsigned char
#define unit unsigned int
char DATA_7SEG[10]={0xC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
uchar  FFW[4]={0xfe,0xfd,0xfb,0xf7}; /*正转*/
uchar  REV[4]={0xf7,0xfb,0xfd,0xfe};  /*反转*/
int i=0;
uchar hour=0,min=0,sec=0;
uchar deda=0;
uchar set=0;
void delay();
void conv();
void disp();
void init_timer()
{
  TMOD=0X01;
  TH0=0XEC;
  TL0=0X78;
IE=1;
  TR0=1;
}
void TO_SRV(void) interrupt 1
{
    TH0=0XEC;
  TL0=0X78;
   deda++;
}
void conv()
{
  if(deda>=200)
  {
           sec++;
         deda=0;
  }
  if(sec==60)
  {
           min++;
         sec=0;
  }
  if(min==60)
  {
     hour++;
         min=0;
  }
  if(hour==24)
  {
     hour=0;
  }
  }
  void disp()
  {
           P0=DATA_7SEG[hour/10];P2=0XFE;
         P0=DATA_7SEG[hour%10];P2=0XFD;
         P0=DATA_7SEG[min/10]; P2=0XFB;
         P0=DATA_7SEG[min%10]; P2=0XF7;
         P0=DATA_7SEG[sec/10]; P2=0XFE;
         P0=DATA_7SEG[sec%10]; P2=0XDF;
  }

  void set_time()
  {
   
         if(P3_0==0)/*设置小时*/
         delay();
        if(P3_0==0)
        hour++;
        if(hour==24)
        hour=0;
   if(P3_1==0)/*设置分钟*/
         delay();
        if(P3_1==0)
        min++;
        if(min==60)
        min=0;
        if(P3_6==0)/*设置秒针*/
         delay();
        if(P3_6==0)
        sec++;
        if(sec==60)
        sec=0;
  }
  void totime()
  {
     if(hour==12&&min==10&&sec==0)
         {
         for(;sec<=3;)
         {
         P1=FFW;
         i++;
         delay();
         if(i>=4)
         i=0;
         }
         P1=0xff;
         }
         if(hour==12&&min==50&&sec==0)

           {
         for(;sec<=3;)
         {
         P1=REV;
         i++;
         delay();
         if(i>=4)
         i=0;
         }
         P1=0xff;
         }
  }
  void time()
  {
   conv();
   disp();
   totime();
  }
  void scan_key()
  {if(P3_7==0)
  set++;
  if(set>=2)
  set=0;
  F0:if(P3_7==0)
  goto F0;
  }
void delay()
{
  unit j;
  for(j=0;j<2;j++)
   {;}
   }
   void main()
   {
    init_timer();
        while(1)
        {
         if(P3_7==0)
         scan_key();
     switch(set)
         {
           case 0: time();break;
           case 1: set_time();break;
           default: break;
         }
        }
   }
                                                                                                                                                                                                                           这是我的程序,用keil没有错误,但是用proteus仿真出不了结果,不知道到底时怎么回事,麻烦各位高手帮忙看一下                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

最新回复

其实不是我不想帮你,我真的不知道从何帮起 谢谢  详情 回复 发表于 2008-9-30 12:08
点赞 关注

回复
举报

61

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
其实不是我不想帮你,我真的不知道从何帮起

谢谢
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表