| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 624 人关注过本帖
标题:加上延时后为什么下面的程序没反应,求大神帮忙。
只看楼主 加入收藏
阿飞小丫
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-1-13
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
加上延时后为什么下面的程序没反应,求大神帮忙。
先程序
#include <reg52.h>

unsigned char duan1[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
unsigned char *pduan1=duan1;
unsigned int i;
sbit key1=P3^6;
sbit wei1=P2^7;
sbit wei2=P2^6;
sbit wei3=P2^5;
sbit Led1=P1^0;
void main(void)
{
    void delay1ms(unsigned int  a);
    TMOD=0x10;
    TH1=(65536-10000)/256;
    TL1=(65536-10000)%256;
   
    //TR1=1;
    ET1=1;
    EA=1;
    while(1)
    {
        if(key1==0)
        {
            delay1ms(1);           // 难道还是时间上冲突了吗?(就这里有问题)
            if(key1==0)
            {
                TR1=0;
                P0=*(pduan1+i/100);
                wei1=0;
                delay1ms(20);
        
                P0=*(pduan1+i/10%10);
                wei1=1;
                wei2=0;
                delay1ms(20);
        
                P0=*(pduan1+i%10);
                wei2=1;
                wei3=0;
                delay1ms(20);
                wei3=1;   
            }
        }
        else TR1=1;
    }
}

void timer1_1() interrupt 3     
{
    //unsigned int i;   
    TH1=(65536-10000)/256;
    TL1=(65536-10000)%256;
    if(i==1000)
        i=0;

        P0=*(pduan1+i/100);
        wei1=0;
        delay1ms(20);

        P0=*(pduan1+i/10%10);
        wei1=1;
        wei2=0;
        delay1ms(20);

        P0=*(pduan1+i%10);
        wei2=1;
        wei3=0;
        delay1ms(20);
        wei3=1;

    i++;
}

void delay1ms(unsigned int a)      //a=10差不多是1ms
{
    unsigned char k,j;
    for(k=0;k<a;k++)
        for(j=0;j<120;j++);
}

这个程序的目的是“数码管前三位显示一个跑表,从000到999之间以1%秒速度运行,当按下一个独立键盘时跑表停止,松开手后跑表继续运行。(用定时器设计表)”。但是我把delay1ms(1)这条代码加上后按键就没反应了,屏蔽掉delay1ms(1)这条代码按键有反应。向大神请教。
搜索更多相关主题的帖子: void include 
2013-01-13 18:54
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:10 
应该不是冲突,你要不设置成2-4ms,你这个按键按下去后直接数码管上就没显示了吧?

最基础的往往是你最容易忽略的!
2013-01-13 22:17
阿飞小丫
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-1-13
收藏
得分:0 
不是没显示,是停不下来。按键不起作用。去掉delay1ms这个语句当按键按下去后计数能停下来,按键按下去后数码管上有显示。  独立按键直接接到芯片的引脚上。
2013-01-14 21:40
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:0 
回复 3楼 阿飞小丫
不应该啊,你电路是自己焊的?

最基础的往往是你最容易忽略的!
2013-01-16 22:03
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
收藏
得分:0 
TH1=(65536-10000)/256;
    TL1=(65536-10000)%256;

是怎么算的么

哥,破你无线很难的,不要老是改,少看路由器上的灯,你会死啊
2013-02-27 15:06
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
。。。。

仰望星空...........不忘初心!
2013-02-28 12:12
奔跑的萝卜
Rank: 2
等 级:论坛游民
帖 子:43
专家分:55
注 册:2013-3-18
收藏
得分:0 
确实是冲突啊,你延时1应该是1微秒左右了,再看你定时器的初值应该也是1微秒,当延时完了你计时器都跑哪去了啊。
2013-03-24 00:13
快速回复:加上延时后为什么下面的程序没反应,求大神帮忙。
数据加载中...
 
   



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

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