| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 287 人关注过本帖
标题:新手求助~~单片机C程序问题
只看楼主 加入收藏
qunqun3012
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-10-12
结帖率:50%
收藏
 问题点数:0 回复次数:0 
新手求助~~单片机C程序问题
8路输入,89s52的板子,现在我想实现一个比较输出的效果,就是我可以同时按下好几个键,然后这些按下的键会将已经被置零的length[7]的数组相应位赋值,同时start_data置1,T2每0.5秒(大概这个时间把)定时检测start_data是否为1,为1表示数组里有不为零的也就是说被赋值了,然后执行中断比较出最大的数并输出那个数。

小弟刚学C,调试了很久没改好··请大家帮下忙并指点下,我贴出来的程序是根据别人的改的,实现不了很是郁闷·

#include <AT89X52.H>
#include <stdio.h>

sbit K0=P1^0;
sbit K1=P1^1;
sbit K2=P1^2;
sbit K3=P1^3;
sbit K4=P1^4;
sbit K5=P1^5;
sbit K6=P1^6;
sbit K7=P1^7;

unsigned int length[7]={0};

unsigned int n,i,click=0;
unsigned char s0,s1,s2,s3,s4,s5,s6,s7;
unsigned char start_data=0;


timer2() interrupt 1
{
    click++;
    if(click==10)
    {
      click=0;
      if(start_data==1)
       {
          for(i=7;i>=1;i--)
             {
               if(length[i]-length[i-1]==1)
                 {
                   printf("#%d",length[i]);
                   start_data=0;
                   for(n=0;n<=7;n++)
                    {
                      length[n]=0;
                    }
                   break;
                 }
             }
       }
    }  

}




 
void main(void)
{
   

   
    SCON = 0x50;
    TMOD = 0x20;   
    TCON = 0x40;
    TH1 = 0xfd;   
    TL1 = 0xfd;
    TI = 1;
    TR1 = 1;
    RCAP2H=0x3C;
    RCAP2L=0xAF;
    TR2=1;
    ET2=1;
    EA=1;


    while(1)
    {


      if(!K0)
        {
           for(n=0;n<1000;n++);
            
                  for(;s0<=1;s0++)
               {
                    length[0]=1;
                      start_data=1;
               }
         }   
           else if(K0)
         {
                  
               for(n=0;n<1000;n++);   
               s0=1;
         }                 
      
      if(!K1)
         {
            for(n=0;n<1000;n++);
                  for(;s1<=1;s1++)
               {
                    length[1]=2;
                      start_data=1;
   
               }
         }   
           else if(K1)
         {
                  
               for(n=0;n<1000;n++);   
               s1=1;
         }
         
       if(!K2)
         {
            for(n=0;n<1000;n++);
                  
                  for(;s2<=1;s2++)
               {
                    length[2]=3;
                      start_data=1;
   
               }
         }   
           else if(K2)
         {
            
               for(n=0;n<1000;n++);   
               s2=1;
         }            

       if(!K3)
         {
            for(n=0;n<1000;n++);
            
                  for(;s3<=1;s3++)
               {
                    length[3]=4;
                      start_data=1;
               }
         }   
           else if(K3)
         {
            
               for(n=0;n<1000;n++);   
               s3=1;
         }
        
      

       if(!K4)
         {
            for(n=0;n<1000;n++);   
           
               for(;s4<=1;s4++)
               {
                    length[4]=5;
                      start_data=1;

               }
         }   
           else if(K4)
         {
            
               for(n=0;n<1000;n++);   
               s4=1;
         }         

       if(!K5)
         {
            for(n=0;n<1000;n++);   
           
               for(;s5<=1;s5++)
               {
                    length[5]=6;
                      start_data=1;
               }
         }   
           else if(K5)
         {
            
               for(n=0;n<1000;n++);   
               s5=1;
         }            

        if(!K6)
         {
            for(n=0;n<1000;n++);   
         
               for(;s6<=1;s6++)
               {
                    length[6]=7;
                      start_data=1;
                    
               }
         }   
           else if(K6)
         {
         
               for(n=0;n<1000;n++);   
               s6=1;
         }   

       if(!K7)
         {
            for(n=0;n<1000;n++);   
         
               for(;s7<=1;s7++)
               {
                    length[7]=8;
                      start_data=1;
            
               }
         }   
           else if(K7)
         {
   
               for(n=0;n<1000;n++);   
               s7=1;
         }
                  
     }
   
}

搜索更多相关主题的帖子: 单片机 
2010-11-05 14:21
快速回复:新手求助~~单片机C程序问题
数据加载中...
 
   



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

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