BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / circuit / #25892同步于 2015/7/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖

[电设]求教一单片机问题

cathy2834
2015/7/16镜像同步3 回复
写的PWM波程序,按键调节占空比。程序下到单片机内,在调试界面功能完全正常,按键灵敏,波形稳定。但一退出调试界面,就按键失灵,按好几下才有反应。 检测按键的程序是用看门狗定时器写的,用的是教材里的例程啊......迷惑ing......求助!!![ema1] /****************************************************************************************************** * 名 称:WDT_init() * 功 能:设定WDT定时中断为16ms,开启WDT定时中断使能 * 入口参数:无 * 出口参数:无 * 说 明:WDT定时中断的时钟源选择ACLK,可以用LPM3休眠。 * 范 例:无 ******************************************************************************************************/ void WDT_init() { //-----设定WDT为16ms中断----- WDTCTL=WDT_ADLY_16; //-----WDT中断使能----- IE1|=WDTIE; } #pragma vector=WDT_VECTOR __interrupt void WDT_ISR(void) { //-----启用Port1事件检测函数----- P1_IODect(); //检测通过,则会调用事件处理函数 } /****************************************************************************************************** * 名 称:P1_IODect() * 功 能:判断是否有键被按下,哪个键被按下,并调用相应IO的中断事件处理函数 * 入口参数:无 * 出口参数:无 * 说 明:必须用最近两次扫描的结果,才知道按键是否被按下 * 范 例:无 ******************************************************************************************************/ void P1_IODect() { static unsigned char KEY_Now=0; //变量值出函数时需保留 unsigned char KEY_Past=0; KEY_Past=KEY_Now; //-----查询IO的输入寄存器----- if(P1IN&BIT3) KEY_Now=1; else KEY_Now=0; //-----前一次高电平、后一次低电平,说明按键按下----- if((KEY_Past==1)&&(KEY_Now==0)) P13_Onclick(); }
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
cathy2834机器人#1 · 2015/7/16
其他程序下到单片机里,退出调试界面只供电,都可以正常工作。就这个不知道为啥按键不灵......
cathy2834机器人#2 · 2015/7/16
问题解决了,在网上查说这种问题应该是时钟问题,于是把WDTCTL=WDT_ADLY_16改成WDTCTL=WDT_MDLY_8,就可以退出调试界面也正常工作。但具体原因仍不详......继续求解[ema1] P.S.书上例程是错的,下下来退出调试界面也不行.....[ema8]
mc34机器人#3 · 2015/7/16
置看门狗非同小可,贫道从来在程序功能全部搞定之后,放松几日,再择吉时沐浴焚香,静室中冥思各处代码腾挪机锋,方可定夺。