久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

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

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

十速單片機(jī)TM52系列實(shí)現(xiàn)掉電記憶源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:667529 發(fā)表于 2019-12-18 16:49 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
用SRAM做掉電記憶可能存在的一些情況:
用戶在做掉電記憶時(shí),如果程序處理不好,就有可能出現(xiàn)“模式變亂”、“時(shí)間變亂”、“顯示黑屏(死機(jī)假象)”、“按鍵無(wú)效”等情況。
如果出現(xiàn)“模式變亂”、“時(shí)間變亂”用戶還可以手動(dòng)取消,但如果出現(xiàn)“顯示黑屏(死機(jī)假象)”等情況會(huì)比較麻煩,必須要等VDD電容的存電差不多完全放干才能重新工作。可以說(shuō)這是一個(gè)致命的問(wèn)題。

內(nèi)有詳細(xì)的代碼和說(shuō)明,詳見(jiàn)附件。

單片機(jī)源程序如下:
  1. //--------------------------------------------------
  2. #include "REGtenxTM52F5274B.h"   
  3. #include "Intrins.h"


  4. #define uchar unsigned char
  5. #define ulong unsigned long
  6. #define uint unsigned int


  7. unsigned char        idata        hour,min,work_menu;
  8. unsigned int        idata        checksum;


  9.   unsigned char idata RamFlag0 _at_ 0xe0;  // 強(qiáng)制定義的寄存器不要用到最后0xfx   保留最后盡量多些 SRAM keil 用來(lái)做堆棧 ,至少是十幾個(gè)
  10.   unsigned char idata RamFlag1 _at_ 0xe1;
  11.   unsigned char idata RamFlag2 _at_ 0xe2;
  12.   unsigned char idata RamFlag3 _at_ 0xe3;
  13.   unsigned char idata RamFlag4 _at_ 0xe4;
  14.   unsigned char idata RamFlag5 _at_ 0xe5;




  15. void SysInit(void)
  16. {
  17.        
  18. }

  19. void scan_time()
  20. {
  21.        
  22. }
  23. void scan_key()
  24. {
  25.        
  26. }





  27. //-------------------------------------------------
  28. void main(void)

  29. {       
  30.         unsigned  char idata i;
  31.        
  32.        
  33.        
  34.                 for(i=0;i<150;i++) CLRWDT=1;          // 在慢鐘下延時(shí)約70MS   建議上電慢鐘延時(shí)一下  起到電壓穩(wěn)定作用。

  35.        
  36.                 CLKPSC_H=1;
  37.                 CLKPSC_L=0;
  38.                                         //CLKCON = 0x02; 上電分頻后要延時(shí)8~10個(gè)nop
  39.                 _nop_();            
  40.                 _nop_();
  41.                 _nop_();
  42.                 _nop_();     
  43.                 _nop_();
  44.                 _nop_();
  45.                 _nop_();     
  46.                 _nop_();
  47.                 FCKTYPE=0;              //0=FRC, 1=FXT
  48.                 _nop_();
  49.                 _nop_();
  50.                 _nop_();     
  51.                 _nop_();   
  52.                 SELFCK=1;               //1=選擇快時(shí)鐘為系統(tǒng)時(shí)鐘源,0=慢時(shí)鐘為系統(tǒng)時(shí)鐘源
  53.                                        //切快鐘后也要延時(shí) 8~10個(gè)nop
  54.                 _nop_();            
  55.                 _nop_();
  56.                 _nop_();
  57.                 _nop_();     
  58.                 _nop_();
  59.                 _nop_();
  60.                 _nop_();     
  61.                 _nop_();
  62.                 SCKTYPE=0;              //Slow Clock Type. 1=SXT, 0=SRC
  63.                 _nop_();
  64.                 _nop_();
  65.                 _nop_();
  66.                   
  67.         if( hour>23||min>59 )
  68.                 goto ram_clr;   //務(wù)必對(duì)一些寄存器卡范圍,超范圍就清SRAM,否則可能出現(xiàn)查表溢出跑飛
  69.           
  70.         if( hour+min+work_menu!=checksum )  
  71.                 goto ram_clr;        //切記 必須要對(duì)需要記憶的寄存器做校驗(yàn)和處理,如時(shí)間 菜單等等。不可以抱僥幸心理(因?yàn)榕袛嗟腟RAM記得住,并不代表要記憶的變量也一定記得住,最方便就是計(jì)算檢驗(yàn)和)   
  72.                                 //或者單獨(dú)用一個(gè)變量 一對(duì)一備份
  73.           
  74.         //另外客戶也可以對(duì)重要的變量進(jìn)行單獨(dú)備份,例如hour、min
  75.        
  76.         if( RamFlag1!=0x11 || RamFlag2!=0x55 || RamFlag3!=0xaa || RamFlag4!=0xf5 || RamFlag5!=0xdd )
  77.                 goto ram_clr;   //判斷幾個(gè)變量,判斷的個(gè)數(shù)越多約好
  78.         else
  79.                 goto  no_clr_ram; //記得住  可以不清
  80.        
  81.        

  82. ram_clr:         
  83.         #pragma asm   //;程序這里只是清 IDATA 256個(gè)SRAM,用戶應(yīng)該默認(rèn)上電把XDATA都清掉比較好 在.A51里面設(shè)定 XDATALEN 的清楚長(zhǎng)度即可
  84.         MOV R0,#255
  85.             CLR A
  86. IDATALOOP2:           
  87.             MOV @R0,A
  88.             DJNZ R0,IDATALOOP2       
  89.         #pragma endasm


  90. no_clr_ram:   
  91.         RamFlag1=0x11;
  92.         RamFlag2=0x55;
  93.         RamFlag3=0xaa;
  94.   RamFlag4=0xf5;
  95.         RamFlag5=0xdd;  
  96.        
  97.        
  98.         SysInit();


  99.         while(1)
  100.         {                       
  101.                 //---while(!f_4ms);  主循環(huán) 幾個(gè)MS掃一圈
  102.                
  103.                 scan_time();
  104.                 scan_key();
  105.                 checksum=hour+min+work_menu;  //用戶比較方便就是在每一圈后面 重新計(jì)算一下checksum
  106.                        
  107.                
  108.         }       
  109. }
復(fù)制代碼

所有資料51hei提供下載:
TM52掉電記憶AP NOTE.zip (597.59 KB, 下載次數(shù): 41)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:229137 發(fā)表于 2020-2-24 15:17 | 只看該作者
這個(gè)不是一般用匯編來(lái)搞么
回復(fù)

使用道具 舉報(bào)

板凳
ID:367875 發(fā)表于 2020-12-12 08:38 | 只看該作者
請(qǐng)問(wèn)十速TM52系列的單片機(jī)只能通過(guò)燒錄器下載程序嗎?燒錄器哪里有便宜的賣的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区视频 | 免费av直接看 | 大香在线伊779 | 国产精品区一区二 | 国产精品成人一区二区三区夜夜夜 | 黄色一级毛片 | 狠狠操狠狠干 | av喷水| 欧美91| 成人国产一区二区三区精品麻豆 | 成人黄色在线 | 亚洲精品456 | 国产在线视频99 | 在线免费91| 国内精品久久久久久影视8 最新黄色在线观看 | 黄色综合 | 精品国产乱码久久久久久闺蜜 | 一区二区三区中文字幕 | 中文字幕成人av | 日本大香伊一区二区三区 | 国产亚洲欧美另类一区二区三区 | 欧美精品在线播放 | 日韩成人免费av | 天天成人综合网 | 综合久久久 | 巨大荫蒂视频欧美另类大 | 激情国产视频 | 成人av免费网站 | 一区二区三区在线 | www.一级毛片| 日本精品一区二区三区在线观看视频 | 国产精品久久久久久久久免费 | 欧美久久电影 | 在线成人免费视频 | 欧美一级视频免费看 | 一级特黄色毛片 | 91在线视频免费观看 | 波霸ol一区二区 | 成人免费大片黄在线播放 | 亚洲成人二区 | 国产精品久久久亚洲 |