找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4018|回复: 22
收起左侧

灯为什不灭

  [复制链接]
ID:129726 发表于 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;}
                  
                
       
                       
                 
                 }
               
          


回复

使用道具 举报

ID:94827 发表于 2016-7-9 19:27 | 显示全部楼层
keyscan有问题,if用法错误,应该是if(keys==0)这样的
回复

使用道具 举报

ID:129850 发表于 2016-7-9 23:25 | 显示全部楼层
我好像看到代码有错误
回复

使用道具 举报

ID:129868 发表于 2016-7-10 09:14 | 显示全部楼层
语法有错
回复

使用道具 举报

ID:105206 发表于 2016-7-11 09:19 | 显示全部楼层
语法错误,主函数与中断不对.
回复

使用道具 举报

ID:130024 发表于 2016-7-11 14:59 | 显示全部楼层
中断有错
回复

使用道具 举报

ID:84299 发表于 2016-7-14 21:59 | 显示全部楼层
请教他人之前还是摆好态度,把自己的代码摆整齐嘛,人家看着都头疼。
回复

使用道具 举报

ID:122633 发表于 2016-7-14 22:15 | 显示全部楼层
大哥 你能把程序摆整齐点就好了
回复

使用道具 举报

ID:130021 发表于 2016-7-15 15:21 | 显示全部楼层

 keyscan有问题,if用法错误,应该是if(keys==0)这样的
回复

使用道具 举报

ID:124330 发表于 2016-7-15 21:14 来自触屏版 | 显示全部楼层
我发现了的主要有这几点
回复

使用道具 举报

ID:124330 发表于 2016-7-15 21:25 来自触屏版 | 显示全部楼层
while(!key)应该放在i++花括号的后面,另外我看你的延时将近有40毫秒,稍微有点长哦
回复

使用道具 举报

ID:111634 发表于 2016-7-15 21:28 | 显示全部楼层
电路没有,程序注释没有,按键是否带锁也没说明,虽可揣摩楼主意图,但很吃力。
回复

使用道具 举报

ID:130744 发表于 2016-7-16 21:37 | 显示全部楼层
语法有错
回复

使用道具 举报

ID:130050 发表于 2016-7-17 21:45 | 显示全部楼层

 1.keyscan有问题,if用法错误,应该是if(keys==0)
   2.i多余可以不用只用num  这样两个条件更复杂
回复

使用道具 举报

ID:134182 发表于 2016-7-18 21:52 | 显示全部楼层
if(i==1&&num==20),这里有问题,运算优先级你没弄清楚,&&
回复

使用道具 举报

ID:134182 发表于 2016-7-18 21:53 | 显示全部楼层
&&的优先级比==高,所以if(i==1&&num==20),应该改为if((i==1)&&(num==20))
回复

使用道具 举报

ID:134192 发表于 2016-7-18 23:49 | 显示全部楼层
while(1)

         {         
                        key_Scan();                        
                        
         }
语法有错
回复

使用道具 举报

ID:125378 发表于 2016-7-19 17:52 | 显示全部楼层
keyscan有问题,if用法错误,应该是if(keys==0)这样的
回复

使用道具 举报

ID:134325 发表于 2016-7-20 09:26 | 显示全部楼层
语法有错
回复

使用道具 举报

ID:134334 发表于 2016-7-20 10:12 | 显示全部楼层
代码错误
回复

使用道具 举报

ID:134560 发表于 2016-7-22 14:33 | 显示全部楼层
关注一下
回复

使用道具 举报

ID:134560 发表于 2016-7-22 14:50 | 显示全部楼层
学习学习
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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