| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 423 人关注过本帖
标题:关于89c52用c编的一个程序。中途不回了。望指导!!
只看楼主 加入收藏
努力地新手
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-7-31
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
关于89c52用c编的一个程序。中途不回了。望指导!!

我是想再安k1键以后秒表继续计数。但可以读出一个数来。通过按k2键在以后能显示在数码管上。望望高手帮忙!!!!




#include<reg52.h>
 #define uint unsigned int
 #define uchar unsigned char
 sbit led1=P1^7;
 uchar    led_discode[11]={0xc0,0xf9,0xa4,0xb0,0x99,
                       0x92,0x82,0xf8,0x80,0x90,0xff};
 uint num,k1num;
 sbit xsd=P0^7;
 uchar qian_bit,bai_bit,shi_bit,ge_bit;
 sbit k1=P1^0;
 sbit k2=P1^1;
 void delay_ms(unsigned int ms)  //1ms延时
{
       uchar a;
       while(ms--)
    for(a=123;a>0;a--);
}

 void nint()               //初始化
 {
    TMOD = 0x01;
    TH0 =(65536-10000)/256;
    TL0 =(65536-10000)%256;
    EA = 1;
    ET0 = 1;
 }  
 void led_display( )
{

    P0=led_discode[qian_bit];                //显示千位
    P3=0Xe0;
    delay_ms(1);
    P3=0Xff;

    P0=led_discode[bai_bit];                 //显示百位
    P3=0Xd0;
    xsd=0;
    delay_ms(1);
    P3=0Xff;
   
    P0=led_discode[shi_bit];                 //显示十位
    P3=0X7f;
    delay_ms(1);
    P3=0Xff;

    P0=led_discode[ge_bit];                  //显示个位
    P3=0Xbf;
    delay_ms(1);
    P3=0Xff;
}
void keyscan()
{
   if(k1==0)
    {
      delay_ms(1);
      if(k1==0)
      {     
      
       while(!k1);
       k1num++;
     if(k1num==1)
       {
           TR0 = 1;
       }
     if(k1num==2)
       {
      if(k2==0)
         {
             delay_ms(1);
          if(k2==0)
           {
           
            while(!k2);
           }
      
         }
        // TR0=0;

       }
      }
    }
}
void main()
{
  nint();
  while(1)
  {
      uint i;
     for(i=0;i<30;i++)
      {   
              keyscan();
              led_display();
      }
  }


}

 void Timer0Interrupt(void) interrupt 1
{
    TH0 =(65536-10000)/256;
    TL0 =(65536-10000)%256;
    num++;
    if(num==1)
    {
      num=0;
      ge_bit++;
      if(ge_bit==10)
      {
          ge_bit=0;
        shi_bit++;
        if(shi_bit==10)
        {
          shi_bit=0;
          bai_bit++;
          if(bai_bit==10)
          {
              bai_bit=0;
            qian_bit++;
            if(qian_bit==6)
            {
              qian_bit=0;
            }
   

          }
         
        }
         
      }
        
   
    }
}

搜索更多相关主题的帖子: include 数码管 
2012-08-01 16:39
ly2222
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:217
专家分:618
注 册:2012-6-15
收藏
得分:10 
不会,帮顶下。
2012-08-02 07:06
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:10 
回不了可能是中断没有处理好或者键盘扫描部分进入了死循环

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-08-03 06:20
快速回复:关于89c52用c编的一个程序。中途不回了。望指导!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035111 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved