[STC单片机] 求助,数码管计数记着记着就停了

[复制链接]
JY-DX-JY 发表于 2015-12-10 14:58 | 显示全部楼层
还有一点我不清楚。你那个干簧管是怎么给下降沿的?是你手动给的吗?
至于复位键不起作用,可能你显示占得时间太长,导致按键不灵敏。
显示你可以这样写,不用延时。你设置个计数器,比如int Count;
在主循环里计数,到了一个阈值,比如100,则刷新显示。
这样显示占用的时间就会大大减少。
 楼主| chenjinyu 发表于 2015-12-10 15:01 | 显示全部楼层
JY-DX-JY 发表于 2015-12-10 14:58
还有一点我不清楚。你那个干簧管是怎么给下降沿的?是你手动给的吗?
至于复位键不起作用,可能你显示占得 ...

是手动给的,相当于磁力开关的这么一个东西
JY-DX-JY 发表于 2015-12-10 15:09 | 显示全部楼层
还有,你说记着记着就停了,一般计到多少会停?
flame123 发表于 2015-12-10 15:11 | 显示全部楼层
这样吧,你在中断里面放入一个led指示灯的控制,看看情况。另外,你的复位键为什么不起作用,那是因为你多了一句init();你刚把最高中断给关掉,你又打开了,这个当然不起作用了,至于你的重新上电,那是相当于系统初始化复位了的作用。
 楼主| chenjinyu 发表于 2015-12-10 15:14 | 显示全部楼层
JY-DX-JY 发表于 2015-12-10 15:09
还有,你说记着记着就停了,一般计到多少会停?

不一定,有时候时间长,有时候时间短,
JY-DX-JY 发表于 2015-12-10 15:20 | 显示全部楼层
Delay10ms();
你这个延时10ms准不准?你最好测一下有多长。
这个子程序你是怎么写的?
 楼主| chenjinyu 发表于 2015-12-10 15:30 | 显示全部楼层
JY-DX-JY 发表于 2015-12-10 15:20
Delay10ms();
你这个延时10ms准不准?你最好测一下有多长。
这个子程序你是怎么写的? ...

在13ms左右,我用stcisp那的延时计算功能 直接让它把代码生成出来了
JY-DX-JY 发表于 2015-12-10 15:34 | 显示全部楼层
你给那个下降沿的频率有多快?太怪异了。
 楼主| 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;
       
        }
       

计数停止的时候,灯也不再亮了,应该是没进来中断
 楼主| chenjinyu 发表于 2015-12-10 15:56 | 显示全部楼层
JY-DX-JY 发表于 2015-12-10 15:34
你给那个下降沿的频率有多快?太怪异了。

就是自己手动控制的啊!现在换成按键了
JY-DX-JY 发表于 2015-12-10 15:57 | 显示全部楼层
会不会是频率太快,还没处理完又进中断,从而堆栈溢出了。
 楼主| chenjinyu 发表于 2015-12-10 16:07 | 显示全部楼层
JY-DX-JY 发表于 2015-12-10 15:34
你给那个下降沿的频率有多快?太怪异了。

现在按键,示波器上显示低电平那块差不多在150ms左右
JY-DX-JY 发表于 2015-12-10 16:10 | 显示全部楼层
会不会那个腿有毛病?换个单片机试试。
 楼主| chenjinyu 发表于 2015-12-10 16:18 | 显示全部楼层
JY-DX-JY 发表于 2015-12-10 16:10
会不会那个腿有毛病?换个单片机试试。

但它前段时间计数还是正常的,只是记着记着就不动了,我在中断里加了个让它led灯闪烁,发现计数停止的时候灯不再闪烁,所以应该是没进中断,我之前用软件持续给它高低电平,它是可以计数的,上次做过另一块板子,也是计数记着记着就停止了
JY-DX-JY 发表于 2015-12-10 16:20 | 显示全部楼层
你的板子什么样,给我看看。我几乎想不出来还有什么可能。难道晶振停振了。单片机不工作了
JY-DX-JY 发表于 2015-12-10 16:21 | 显示全部楼层
要不你让灯在主程序里闪烁,看看不计数时灯还闪不闪。
 楼主| chenjinyu 发表于 2015-12-10 16:33 | 显示全部楼层
JY-DX-JY 发表于 2015-12-10 16:21
要不你让灯在主程序里闪烁,看看不计数时灯还闪不闪。

闪得
JY-DX-JY 发表于 2015-12-10 16:40 | 显示全部楼层
IT0=1 ;//设置下沿触发跳变
EX0=1;
EA=1;
在数码管显示程序里加上这三句试试。
我怀疑这几个寄存器的值被改掉了。
lrhsx33 发表于 2015-12-10 16:43 | 显示全部楼层
进入中断,马上关中断,退出时再打开试试。
如果IO口不是施密特结构有没有可能重复入中断的可能?猜的:shutup:
JY-DX-JY 发表于 2015-12-10 16:45 | 显示全部楼层
楼上说的有道理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部