打印
[STC单片机]

STC15W408AS按键INT0启动后立即停止?

[复制链接]
10306|35
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
原来在12C5608AD上正常运行的程序,放到STC15W408AS上后,变得不正常了。出现一个奇怪问题: 外接电路是INT0外接按键,设定的工作程序是,上电后按键一次(同时喇叭嘀一声),单片机开始工作,再按键就暂定,再按键继续工作。用在12C的单片机上都能正常动作。可是换了15W408AS后,上电后按键一次后,单片机启动后立刻又停止了,要再按一次,才开始运行,在运行中按键,能暂定、再按能运行。用定时器0;
按键设定的二种模式都试过了,没有改变。
要请教各位大大提点?

相关帖子

沙发
yjx123| | 2014-7-31 09:56 | 只看该作者
感觉pcb还是深圳顺易捷不错,现在特大喜讯:顺易捷PCB快板打样所有工程费直降50%(低至50元) ,双面PCB批量低至398元/㎡,批量开通免费抽测(直通率95%之上)PCB价格创全球最低,交期最快,品质更好,热线0755-84086168 QQ800055586

使用特权

评论回复
板凳
ayb_ice| | 2014-7-31 10:01 | 只看该作者
是不是传说中的什么时候外部中断BUG

使用特权

评论回复
地板
如何RH|  楼主 | 2014-7-31 11:42 | 只看该作者
奇怪的是暂定键还是有用的。
会不会是掉电唤醒?上电按键自动复位,此时按键就等于暂定。

使用特权

评论回复
5
coody| | 2014-7-31 14:17 | 只看该作者
是否有去抖?进过一些新手用外中断做按键,没有去抖。普通的按钮,按一下有可能会中断几十次

使用特权

评论回复
6
如何RH|  楼主 | 2014-7-31 15:01 | 只看该作者
程序:
#include <STC15F2K60S2.H>  //15W408AS
#include <stdio.h> //
#include <intrins.h> //
#include <math.h>
sbit        DA         =        P3 ^ 2;
  int main ()
  {  
     P1  = 0xff;                  
     ledr=0;
     EX0 = 0;              
     nume=0;
     while(1)
      {
              if(DA==0)
                    {
                 delay(10);      
                 delay10ms(60);
               _nop_();
               _nop_();
                while (DA == 0);
                           {

                 didi_f1();      //给外部中断0一个跳变电压时让蜂鸣器响一下
                _nop_();
                _nop_();
  TMOD = 0x01;         
  TH0  = -(36340/256);  
  TL0  = -(36340%256);
  ET0 = 1;              
  TR0 = 1;              
  EX0 = 0;              
  IE0 = 1;              
  PX0 = 1;            
  PT0 = 0;            
  EA  = 1;   
  dd_10s();             // 中断延时
执行到这个位置,就停了,要再按键才能运行。
上电按键时能听见嘀嘀二声响,然后就停止了。(正常应该就嘀一声的)

使用特权

评论回复
7
yhn1973| | 2014-7-31 16:29 | 只看该作者
STC15W的INT0中断和其他51的不是完全兼容,好像是某种设置下上升沿和下降沿都能中断。15W有很多都和标准51不兼容,例如波特率不能有T1产生(没有T1),PCA没有高速翻转管脚功能,一不小心就容易中招,我就中了PCA没有高速翻转管脚功能的招,害得一批板子白做了,程序调试也白花了大量的时间。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
如何RH + 1 赞同
8
如何RH|  楼主 | 2014-7-31 21:02 | 只看该作者
原来是使用STC12C系列的,因为AD采样牵连到基准电源,所以想用STC15W内带参考基准电压的。
原来在12C上用的AD采样程序,都要作了修改才能在15W上用,这个也就是化多点时间,总算勉强能用了,对那个要精细CP测量的电压,以及存放到EPPROM还不是很明白。暂时搁一边。
起先以为上电按键开机,应该很简单的,同样的电路,只不过换了芯片,结果很沮丧。暂定、再运行都正常,上电按键开机变成上电开机停机了,百思不解:上电按键结果是二个动作,而暂定还是一个动作。
按键一次出现二个动作,是像抖动,可暂定按键确很正常?
说是防抖不够,可在12C系列上都一直正常在用的。在15W的INT0按键上还加了多个104电容,没有变化。
楼上说的很有道理,STC15W与以前12C系列有不兼容!

使用特权

评论回复
9
如何RH|  楼主 | 2014-8-1 16:55 | 只看该作者
询问**,回答要检查程序?
问题还是没解决

使用特权

评论回复
10
如何RH|  楼主 | 2014-8-2 09:16 | 只看该作者
好奇怪,只要把EX0=1,就会自动中断一次。把EX0=1;的位置移动,响应时间也会跟着走

使用特权

评论回复
11
如何RH|  楼主 | 2014-8-2 13:52 | 只看该作者
菜鸟笨鸟法:
把中断按键函数里原设定的变量值,取反;原 if(running){.....} 改为 if(~running){...}
再上电按键,居然解决问题了,虽然还是嘀嘀二声,可是能继续执行后面程序了
那位大师能解释 这个笨鸟撞出来的办法 的依据?

使用特权

评论回复
12
coody| | 2014-8-2 15:26 | 只看该作者
yhn1973 发表于 2014-7-31 16:29
STC15W的INT0中断和其他51的不是完全兼容,好像是某种设置下上升沿和下降沿都能中断。15W有很多都和标准51 ...

15W系列,有的有Timer1,就可以做串口1的波特率。没有Timer1的只能由Timer2做波特率。
每路PCA都有高速翻转管脚的,你可能没注意看。

使用特权

评论回复
13
coody| | 2014-8-2 15:26 | 只看该作者
yhn1973 发表于 2014-7-31 16:29
STC15W的INT0中断和其他51的不是完全兼容,好像是某种设置下上升沿和下降沿都能中断。15W有很多都和标准51 ...

15W系列,有的有Timer1,就可以做串口1的波特率。没有Timer1的只能由Timer2做波特率。
每路PCA都有高速翻转管脚的,你可能没注意看。

使用特权

评论回复
14
coody| | 2014-8-2 15:26 | 只看该作者
yhn1973 发表于 2014-7-31 16:29
STC15W的INT0中断和其他51的不是完全兼容,好像是某种设置下上升沿和下降沿都能中断。15W有很多都和标准51 ...

15W系列,有的有Timer1,就可以做串口1的波特率。没有Timer1的只能由Timer2做波特率。
每路PCA都有高速翻转管脚的,你可能没注意看。

使用特权

评论回复
15
coody| | 2014-8-2 15:26 | 只看该作者
yhn1973 发表于 2014-7-31 16:29
STC15W的INT0中断和其他51的不是完全兼容,好像是某种设置下上升沿和下降沿都能中断。15W有很多都和标准51 ...

15W系列,有的有Timer1,就可以做串口1的波特率。没有Timer1的只能由Timer2做波特率。
每路PCA都有高速翻转管脚的,你可能没注意看。

使用特权

评论回复
16
yhn1973| | 2014-8-2 16:15 | 只看该作者
coody 发表于 2014-8-2 15:26
15W系列,有的有Timer1,就可以做串口1的波特率。没有Timer1的只能由Timer2做波特率。
每路PCA都有高速翻 ...

15W的PCA的高速输出输出的是脉冲,不是传统PCA上的翻转管脚,并且脉冲的频率分辨率最大为8位,由CCAPnL的值决定,而传统PCA上的翻转管脚是16位的,差别很大,这个害得我不轻,谁能想到老姚连这个也整成不兼容的。

使用特权

评论回复
17
yhn1973| | 2014-8-2 16:18 | 只看该作者
15W的PCA的高速输出类似于C8051F上的PCA的脉冲发生器方式,但C8051F的PCA还有16位的高速输出方式。

使用特权

评论回复
18
匿名  2014-8-5 15:41
因为你不知道,STC15W408AS  无定时器2

使用特权

评论回复
19
yhn1973| | 2014-8-5 16:07 | 只看该作者
有T2,无T1。

使用特权

评论回复
20
coody| | 2014-8-12 20:31 | 只看该作者
yhn1973 发表于 2014-8-2 16:15
15W的PCA的高速输出输出的是脉冲,不是传统PCA上的翻转管脚,并且脉冲的频率分辨率最大为8位,由CCAPnL的 ...

STC的PCA也是16位可翻转IO的。
8位是PWM。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

40

帖子

3

粉丝