标题: 灯为什不灭 [打印本页]

作者: 张军豆    时间: 2016-7-9 16:32
标题: 灯为什不灭
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define led P0
sbit  key=P1^0;
unsigned int  i=0,num=0;
void Delayms(unsigned int c);
void init();
void key_Scan();

       
         void key_Scan()
         {       
         if(!key)
         {       
            Delayms(1);
                   if(!key)
                   {
                  
                  
                           while(!key)
                        {
                          P0=0x01;
                          i++;
                         
                        }
                         }          
                         }
         
         
         
         }
         
         

                 void Delayms(unsigned int c)   
{
    unsigned char a, b;

       
   while(c--)
   {
                for (b=38;b>0;b--)
                {
                        for (a=130;a>0;a--);
                }

        }      
}

         void main()
         {       
         init();
         key=1;
         P0=0x00;
         while(1)

         {         
                        key_Scan();                        
                         
         }
                  
         }
         void  init()
         {
           TMOD=0x01;
           TH0=(65536-45872)/256;
       TL0=(65536-45872)%256;
       EA=1;
       ET0=1;
       TR0=1;
         
         }


         void T_time() interrupt 1
         {
                     
                     TH0=(65536-45872)/256;
            TL0=(65536-45872)%256;
                                 num++;
                if(i==1&&num==20)
                {
                                    
                   P0=0x00;}
                  
                
       
                       
                 
                 }
               
          



作者: sxszpeng    时间: 2016-7-9 19:27
keyscan有问题,if用法错误,应该是if(keys==0)这样的
作者: 127565    时间: 2016-7-9 23:25
我好像看到代码有错误
作者: distance1502    时间: 2016-7-10 09:14
语法有错
作者: jubaolun    时间: 2016-7-11 09:19
语法错误,主函数与中断不对.
作者: cpysss    时间: 2016-7-11 14:59
中断有错
作者: aiwang51    时间: 2016-7-14 21:59
请教他人之前还是摆好态度,把自己的代码摆整齐嘛,人家看着都头疼。
作者: songdaxuan    时间: 2016-7-14 22:15
大哥 你能把程序摆整齐点就好了
作者: sdhhyq    时间: 2016-7-15 15:21

 keyscan有问题,if用法错误,应该是if(keys==0)这样的
作者: Jesse_ice    时间: 2016-7-15 21:14
我发现了的主要有这几点
作者: Jesse_ice    时间: 2016-7-15 21:25
while(!key)应该放在i++花括号的后面,另外我看你的延时将近有40毫秒,稍微有点长哦
作者: zl2168    时间: 2016-7-15 21:28
电路没有,程序注释没有,按键是否带锁也没说明,虽可揣摩楼主意图,但很吃力。
作者: rrergregvre    时间: 2016-7-16 21:37
语法有错
作者: 超级小太阳    时间: 2016-7-17 21:45

 1.keyscan有问题,if用法错误,应该是if(keys==0)
   2.i多余可以不用只用num  这样两个条件更复杂
作者: huayangshiboqi    时间: 2016-7-18 21:52
if(i==1&&num==20),这里有问题,运算优先级你没弄清楚,&&
作者: huayangshiboqi    时间: 2016-7-18 21:53
&&的优先级比==高,所以if(i==1&&num==20),应该改为if((i==1)&&(num==20))
作者: TIANYUN1573    时间: 2016-7-18 23:49
while(1)

         {         
                        key_Scan();                        
                        
         }
语法有错
作者: 王杰    时间: 2016-7-19 17:52
keyscan有问题,if用法错误,应该是if(keys==0)这样的
作者: Super玛莉    时间: 2016-7-20 09:26
语法有错
作者: Jessica啊啊啊    时间: 2016-7-20 10:12
代码错误
作者: majianya    时间: 2016-7-22 14:33
关注一下
作者: majianya    时间: 2016-7-22 14:50
学习学习




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1