找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6505|回復(fù): 16
打印 上一主題 下一主題
收起左側(cè)

請(qǐng)教STC15W408AS單片機(jī)專用定時(shí)器為啥喚不醒掉電狀態(tài)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
我在X寶買(mǎi)了很厲害的一塊的STC15W408AS單片機(jī)核心板,原理圖如下,燒了ISP中的STC15X系列的定時(shí)喚醒掉電模式,然后傻傻的燒錄了下,現(xiàn)在芯片醒不過(guò)來(lái)了,請(qǐng)問(wèn)如何解決?


單片機(jī)源碼:
  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC15F4K60S4 系列 掉電喚醒定時(shí)器舉例----------------------------*/
  4. /* 如果要在程序中使用此代碼,請(qǐng)?jiān)诔绦蛑凶⒚魇褂昧薙TC的資料及程序        */
  5. /* 如果要在文章中應(yīng)用此代碼,請(qǐng)?jiān)谖恼轮凶⒚魇褂昧薙TC的資料及程序        */
  6. /*---------------------------------------------------------------------*/

  7. //本示例在Keil開(kāi)發(fā)環(huán)境下請(qǐng)選擇Intel的8058芯片型號(hào)進(jìn)行編譯
  8. //若無(wú)特別說(shuō)明,工作頻率一般為11.0592MHz


  9. #include "reg51.h"
  10. #include "intrins.h"

  11. //-----------------------------------------------

  12. sfr P0M1 = 0x93;
  13. sfr P0M0 = 0x94;
  14. sfr P1M1 = 0x91;
  15. sfr P1M0 = 0x92;
  16. sfr P2M1 = 0x95;
  17. sfr P2M0 = 0x96;
  18. sfr P3M1 = 0xb1;
  19. sfr P3M0 = 0xb2;
  20. sfr P4M1 = 0xb3;
  21. sfr P4M0 = 0xb4;
  22. sfr P5M1 = 0xC9;
  23. sfr P5M0 = 0xCA;
  24. sfr P6M1 = 0xCB;
  25. sfr P6M0 = 0xCC;
  26. sfr P7M1 = 0xE1;
  27. sfr P7M0 = 0xE2;

  28. sfr WKTCL = 0xaa;                   //掉電喚醒定時(shí)器計(jì)時(shí)低字節(jié)
  29. sfr WKTCH = 0xab;                   //掉電喚醒定時(shí)器計(jì)時(shí)高字節(jié)

  30. sbit P10 = P1^0;

  31. //-----------------------------------------------

  32. void main()
  33. {
  34.     P0M0 = 0x00;
  35.     P0M1 = 0x00;
  36.     P1M0 = 0x00;
  37.     P1M1 = 0x00;
  38.     P2M0 = 0x00;
  39.     P2M1 = 0x00;
  40.     P3M0 = 0x00;
  41.     P3M1 = 0x00;
  42.     P4M0 = 0x00;
  43.     P4M1 = 0x00;
  44.     P5M0 = 0x00;
  45.     P5M1 = 0x00;
  46.     P6M0 = 0x00;
  47.     P6M1 = 0x00;
  48.     P7M0 = 0x00;
  49.     P7M1 = 0x00;

  50.     WKTCL = 49;                     //設(shè)置喚醒周期為488us*(49+1) = 24.4ms
  51.     WKTCH = 0x80;                   //使能掉電喚醒定時(shí)器
  52.    
  53.     while (1)
  54.     {
  55.         PCON = 0x02;                //進(jìn)入掉電模式
  56.         _nop_();                    //掉電模式被喚醒后,直接從此語(yǔ)句開(kāi)始向下執(zhí)行,不進(jìn)入中斷服務(wù)程序
  57.         _nop_();
  58.         P10 = !P10;                 //掉電喚醒后,取反測(cè)試口
  59.     }
  60. }

復(fù)制代碼

原理圖.pdf

8.96 KB, 下載次數(shù): 23

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:155507 發(fā)表于 2018-9-18 20:38 | 只看該作者
現(xiàn)在芯片醒不過(guò)來(lái)了, 這個(gè)問(wèn)題太籠統(tǒng)了

你檢查一下 P1^0 接口, 有沒(méi)有輸出

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:241423 發(fā)表于 2018-9-20 20:25 | 只看該作者
angmall 發(fā)表于 2018-9-18 20:38
現(xiàn)在芯片醒不過(guò)來(lái)了, 這個(gè)問(wèn)題太籠統(tǒng)了

你檢查一下 P1^0 接口, 有沒(méi)有輸出

謝謝您的回復(fù),我已經(jīng)查到原因了,是板子焊錫太少,虛焊了,導(dǎo)致供電時(shí)靈時(shí)不靈,如今已經(jīng)好了,下次買(mǎi)的時(shí)候我一定檢查焊的東西
回復(fù)

使用道具 舉報(bào)

地板
ID:975054 發(fā)表于 2021-10-31 21:12 | 只看該作者
剛碰到同樣情況,不是虛焊,研究ing。。。
回復(fù)

使用道具 舉報(bào)

5#
ID:401564 發(fā)表于 2021-10-31 21:20 | 只看該作者
ax6808 發(fā)表于 2021-10-31 21:12
剛碰到同樣情況,不是虛焊,研究ing。。。

如果單片機(jī)一直在供電,那單片機(jī)就是掉電狀態(tài)
這個(gè)時(shí)候,沒(méi)有斷電功能的下載器是無(wú)法下載的
有免冷啟動(dòng)功能的下載器是會(huì)自動(dòng)斷電的,上電第一件事就是燒錄,就是可以下載的
超過(guò)太長(zhǎng)時(shí)間的話,單片機(jī)又會(huì)再次進(jìn)入掉電,又不能下載了
回復(fù)

使用道具 舉報(bào)

6#
ID:975054 發(fā)表于 2021-10-31 21:32 | 只看該作者
Y_G_G 發(fā)表于 2021-10-31 21:20
如果單片機(jī)一直在供電,那單片機(jī)就是掉電狀態(tài)
這個(gè)時(shí)候,沒(méi)有斷電功能的下載器是無(wú)法下載的
有免冷啟動(dòng)功 ...

謝謝!剛才不小心接反了,一個(gè)U口可能燒壞了,繼續(xù)ing。。。
回復(fù)

使用道具 舉報(bào)

7#
ID:975054 發(fā)表于 2021-10-31 21:50 | 只看該作者
Sanada 發(fā)表于 2018-9-20 20:25
謝謝您的回復(fù),我已經(jīng)查到原因了,是板子焊錫太少,虛焊了,導(dǎo)致供電時(shí)靈時(shí)不靈,如今已經(jīng)好了,下次買(mǎi)的 ...

我上次買(mǎi)了一塊,也是接LED的那個(gè)電阻虛焊,led 時(shí)亮?xí)r不亮,焊好了就好,還好MCU沒(méi)虛焊
回復(fù)

使用道具 舉報(bào)

8#
ID:956872 發(fā)表于 2021-10-31 22:09 來(lái)自手機(jī) | 只看該作者
408as有必要買(mǎi)這板嗎,直接買(mǎi)直插的,插面包板就能用
回復(fù)

使用道具 舉報(bào)

9#
ID:975054 發(fā)表于 2021-10-31 22:58 | 只看該作者
Y_G_G 發(fā)表于 2021-10-31 21:20
如果單片機(jī)一直在供電,那單片機(jī)就是掉電狀態(tài)
這個(gè)時(shí)候,沒(méi)有斷電功能的下載器是無(wú)法下載的
有免冷啟動(dòng)功 ...

感謝指導(dǎo)!剛才檢查了一下,省電掉電狀態(tài)時(shí)間設(shè)置太短了,才1秒,確實(shí)就如你說(shuō)的一樣原因,后來(lái)注意時(shí)間、放電干凈后,先點(diǎn)識(shí)別或下載其他熟悉的程序后,再上電就OK了。下次設(shè)置掉電時(shí)間長(zhǎng)一點(diǎn)。
另外剛才一不小心,將地線接到5V針上了,造成負(fù)壓2伏,經(jīng)檢測(cè),把MCUvcc腳都燒短路了,還好買(mǎi)了幾塊板子,不影響試驗(yàn)進(jìn)度。
還有,PL2303下載器時(shí)不時(shí)識(shí)別不了,設(shè)備管理器里顯示“已停產(chǎn)。。。。”,經(jīng)常要重裝驅(qū)動(dòng),還好現(xiàn)在都才幾塊錢(qián)一個(gè),我有幾個(gè),其中有一個(gè)免冷啟動(dòng)的。
這段時(shí)間超低功耗改進(jìn)需求,得用掉電模式。。。+硬件I2C傳感器+后面控制裝置。。。
回復(fù)

使用道具 舉報(bào)

10#
ID:975054 發(fā)表于 2021-10-31 23:04 | 只看該作者
PEB188 發(fā)表于 2021-10-31 22:09
408as有必要買(mǎi)這板嗎,直接買(mǎi)直插的,插面包板就能用

嗯,也是,我一般也先插面包板試。。。不過(guò),現(xiàn)在芯片都SOP、TSSOP封裝為主了,就極少買(mǎi)直插的了還貴。。。小核心板帶點(diǎn)插口和LED等好用也便宜,必要時(shí)好直接焊線帶走,面包板就可不帶走了。。。
回復(fù)

使用道具 舉報(bào)

11#
ID:975054 發(fā)表于 2021-10-31 23:07 | 只看該作者
最后一句:P10 = !P10;                 //掉電喚醒后,取反測(cè)試口
回復(fù)

使用道具 舉報(bào)

12#
ID:975054 發(fā)表于 2021-10-31 23:12 | 只看該作者
最后一句:P10 = !P10;      //掉電喚醒后,取反測(cè)試口??不太清楚作用,P10是P1.0腳呀?
我搬用的是P6 = ~P6;   就是再次循環(huán)計(jì)數(shù)吧,但不明白 sfr P6 = 0xE8;  //E8H(P6)為可位尋址的數(shù)據(jù)存儲(chǔ)器 干什么用?
回復(fù)

使用道具 舉報(bào)

13#
ID:975054 發(fā)表于 2021-10-31 23:18 | 只看該作者
void main()                  
{
        unsigned char i;     //長(zhǎng)時(shí)間休眠只有重復(fù)進(jìn)入掉電模式,單次最大設(shè)置32766+1約16秒
        WKTCL = 0x99;        //原來(lái)fe,設(shè)置喚醒周期為488us*(32766+1)≈16s ,先試0999約0.5秒
        WKTCH = 0x89;        //原來(lái)ff,使能掉電喚醒定時(shí)器  1+高7位值A(chǔ)0
        
        while(1)
        {
                i=2;      //0.5s*i=1s  i:0.5s的倍數(shù)可調(diào);注:內(nèi)部低頻振蕩器誤差較大需要修正
                while(i--)
                {
                    PCON = 0x02;  //進(jìn)入掉電模式
                    _nop_();      //掉電模式被喚醒后,直接從此語(yǔ)句開(kāi)始向下執(zhí)行,不進(jìn)入中斷服務(wù)程序
                    _nop_();     //一定要在設(shè)置MCU進(jìn)入掉電模式的語(yǔ)句后加2-4條 _nop_()
_nop_();
_nop_();

                }
                P6=~P6;         //掉電喚醒后,取反測(cè)試口?就是再次循環(huán)計(jì)數(shù)
        }
}
回復(fù)

使用道具 舉報(bào)

14#
ID:624769 發(fā)表于 2021-10-31 23:32 | 只看該作者
ax6808 發(fā)表于 2021-10-31 23:18
void main()                  
{
        unsigned char i;     //長(zhǎng)時(shí)間休眠只有重復(fù)進(jìn)入掉電模式,單次最大設(shè)置32766 ...

原程序的  P10 = !P10 接的LED, 是為了通過(guò) LED變化,確定掉電喚醒正常工作了。
即,如果進(jìn)入停機(jī)狀態(tài),并且成功喚醒那么 LED會(huì)周期亮滅。
如果沒(méi)有成功喚醒,則LED則不會(huì)發(fā)生變化,
如果沒(méi)有成功進(jìn)入掉電狀態(tài),則LED會(huì)閃的飛快,肉眼上看LED就屬于一直開(kāi)著從來(lái)沒(méi)關(guān)過(guò)。

你的P6 有接什么? 能起到提示作用讓你知道 掉電喚醒正常工作了么?
回復(fù)

使用道具 舉報(bào)

15#
ID:975054 發(fā)表于 2021-11-1 00:02 | 只看該作者
188610329 發(fā)表于 2021-10-31 23:32
原程序的  P10 = !P10 接的LED, 是為了通過(guò) LED變化,確定掉電喚醒正常工作了。
即,如果進(jìn)入停機(jī)狀態(tài), ...

哦!是哦,這樣可以監(jiān)控掉電狀態(tài)。不知到我照搬的那個(gè)程序中P6=~P6; 什么作用?
另外,近日試用的Keil4 c51軟件老是死機(jī)得重裝一下才能用,管理員進(jìn)入也不行,非正版漢化了,序列號(hào)已過(guò)期,還沒(méi)找到好用得版本。十幾年前用的都是專用編程器加附送的軟件,現(xiàn)在都串口ISPL了。。。我是WIN10。
回復(fù)

使用道具 舉報(bào)

16#
ID:975054 發(fā)表于 2021-11-1 00:10 | 只看該作者
188610329 發(fā)表于 2021-10-31 23:32
原程序的  P10 = !P10 接的LED, 是為了通過(guò) LED變化,確定掉電喚醒正常工作了。
即,如果進(jìn)入停機(jī)狀態(tài), ...

哦,我搬用的原程序可能有點(diǎn)點(diǎn)不同,他原來(lái)前面還有一條語(yǔ)句“sfr P6 = 0xE8”的;可能他有其他用途吧!我只查到E8H(P6數(shù)據(jù)寄存器特殊)為可位尋址的數(shù)據(jù)存儲(chǔ)器。后來(lái)我屏蔽了這一條就通過(guò)編譯了。
回復(fù)

使用道具 舉報(bào)

17#
ID:975054 發(fā)表于 2021-11-1 00:46 | 只看該作者
188610329 發(fā)表于 2021-10-31 23:32
原程序的  P10 = !P10 接的LED, 是為了通過(guò) LED變化,確定掉電喚醒正常工作了。
即,如果進(jìn)入停機(jī)狀態(tài), ...

我用的是20pin的,只有P1\3\5口,沒(méi)其他,有內(nèi)部專用定時(shí)器、I2C就可以了。8pin的I/O口不夠,16pin的沒(méi)TSSOP封裝的,只有SOP封裝的比20pin的TSSOP還占地方還貴。再次謝謝!晚安!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表