发新帖本帖赏金 4.00元(功能说明)我要提问
返回列表
打印
[STC单片机]

求助,数码管计数记着记着就停了

[复制链接]
楼主: chenjinyu
手机看帖
扫描二维码
随时随地手机跟帖
21
JY-DX-JY| | 2015-12-10 14:58 | 只看该作者 回帖奖励 |倒序浏览
还有一点我不清楚。你那个干簧管是怎么给下降沿的?是你手动给的吗?
至于复位键不起作用,可能你显示占得时间太长,导致按键不灵敏。
显示你可以这样写,不用延时。你设置个计数器,比如int Count;
在主循环里计数,到了一个阈值,比如100,则刷新显示。
这样显示占用的时间就会大大减少。

使用特权

评论回复
22
chenjinyu|  楼主 | 2015-12-10 15:01 | 只看该作者
JY-DX-JY 发表于 2015-12-10 14:58
还有一点我不清楚。你那个干簧管是怎么给下降沿的?是你手动给的吗?
至于复位键不起作用,可能你显示占得 ...

是手动给的,相当于磁力开关的这么一个东西

使用特权

评论回复
23
JY-DX-JY| | 2015-12-10 15:09 | 只看该作者
还有,你说记着记着就停了,一般计到多少会停?

使用特权

评论回复
24
flame123| | 2015-12-10 15:11 | 只看该作者
这样吧,你在中断里面放入一个led指示灯的控制,看看情况。另外,你的复位键为什么不起作用,那是因为你多了一句init();你刚把最高中断给关掉,你又打开了,这个当然不起作用了,至于你的重新上电,那是相当于系统初始化复位了的作用。

使用特权

评论回复
25
chenjinyu|  楼主 | 2015-12-10 15:14 | 只看该作者
JY-DX-JY 发表于 2015-12-10 15:09
还有,你说记着记着就停了,一般计到多少会停?

不一定,有时候时间长,有时候时间短,

使用特权

评论回复
26
JY-DX-JY| | 2015-12-10 15:20 | 只看该作者
Delay10ms();
你这个延时10ms准不准?你最好测一下有多长。
这个子程序你是怎么写的?

使用特权

评论回复
27
chenjinyu|  楼主 | 2015-12-10 15:30 | 只看该作者
JY-DX-JY 发表于 2015-12-10 15:20
Delay10ms();
你这个延时10ms准不准?你最好测一下有多长。
这个子程序你是怎么写的? ...

在13ms左右,我用stcisp那的延时计算功能 直接让它把代码生成出来了

使用特权

评论回复
28
JY-DX-JY| | 2015-12-10 15:34 | 只看该作者
你给那个下降沿的频率有多快?太怪异了。

使用特权

评论回复
29
chenjinyu|  楼主 | 2015-12-10 15:53 | 只看该作者
flame123 发表于 2015-12-10 15:11
这样吧,你在中断里面放入一个led指示灯的控制,看看情况。另外,你的复位键为什么不起作用,那是因为你多 ...


void exint0() interrupt 0
{

         deng=1;
           Delay10ms();
            deng=0;
         

        a++;
        if(a==100)
                a=0;
       
        }
       

计数停止的时候,灯也不再亮了,应该是没进来中断

使用特权

评论回复
30
chenjinyu|  楼主 | 2015-12-10 15:56 | 只看该作者
JY-DX-JY 发表于 2015-12-10 15:34
你给那个下降沿的频率有多快?太怪异了。

就是自己手动控制的啊!现在换成按键了

使用特权

评论回复
31
JY-DX-JY| | 2015-12-10 15:57 | 只看该作者
会不会是频率太快,还没处理完又进中断,从而堆栈溢出了。

使用特权

评论回复
32
chenjinyu|  楼主 | 2015-12-10 16:07 | 只看该作者
JY-DX-JY 发表于 2015-12-10 15:34
你给那个下降沿的频率有多快?太怪异了。

现在按键,示波器上显示低电平那块差不多在150ms左右

使用特权

评论回复
33
JY-DX-JY| | 2015-12-10 16:10 | 只看该作者
会不会那个腿有毛病?换个单片机试试。

使用特权

评论回复
34
chenjinyu|  楼主 | 2015-12-10 16:18 | 只看该作者
JY-DX-JY 发表于 2015-12-10 16:10
会不会那个腿有毛病?换个单片机试试。

但它前段时间计数还是正常的,只是记着记着就不动了,我在中断里加了个让它led灯闪烁,发现计数停止的时候灯不再闪烁,所以应该是没进中断,我之前用软件持续给它高低电平,它是可以计数的,上次做过另一块板子,也是计数记着记着就停止了

使用特权

评论回复
35
JY-DX-JY| | 2015-12-10 16:20 | 只看该作者
你的板子什么样,给我看看。我几乎想不出来还有什么可能。难道晶振停振了。单片机不工作了

使用特权

评论回复
36
JY-DX-JY| | 2015-12-10 16:21 | 只看该作者
要不你让灯在主程序里闪烁,看看不计数时灯还闪不闪。

使用特权

评论回复
37
chenjinyu|  楼主 | 2015-12-10 16:33 | 只看该作者
JY-DX-JY 发表于 2015-12-10 16:21
要不你让灯在主程序里闪烁,看看不计数时灯还闪不闪。

闪得

使用特权

评论回复
38
JY-DX-JY| | 2015-12-10 16:40 | 只看该作者
IT0=1 ;//设置下沿触发跳变
EX0=1;
EA=1;
在数码管显示程序里加上这三句试试。
我怀疑这几个寄存器的值被改掉了。

使用特权

评论回复
39
lrhsx33| | 2015-12-10 16:43 | 只看该作者
进入中断,马上关中断,退出时再打开试试。
如果IO口不是施密特结构有没有可能重复入中断的可能?猜的:shutup:

使用特权

评论回复
40
JY-DX-JY| | 2015-12-10 16:45 | 只看该作者
楼上说的有道理。

使用特权

评论回复
发新帖 本帖赏金 4.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则