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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2394|回復(fù): 6
收起左側(cè)

關(guān)于STC單片機(jī)串口下載代碼長度的問題

[復(fù)制鏈接]
ID:87042 發(fā)表于 2019-10-23 08:50 | 顯示全部樓層 |閱讀模式
寫了一個(gè)數(shù)碼管顯示的程序,用STC串口下載程序,第一次下載的代碼長度為2C53H,稍作修改后,第二次下載的代碼長度為2BEBH<2C53H,出現(xiàn)部分?jǐn)?shù)碼管位不能顯示的情況,猜測可能出現(xiàn)代碼儲存覆蓋情況,有同行遇到過這種情況的嗎?怎么處理呢?
回復(fù)

使用道具 舉報(bào)

ID:235200 發(fā)表于 2019-10-23 11:13 | 顯示全部樓層
不會(huì)出現(xiàn)這種情況,應(yīng)該還是程序修改后的問題
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2019-10-23 11:17 | 顯示全部樓層
不是代碼超長問題,如果代碼超長STC-ISP會(huì)提示 “文件大小超出范圍,超出部分已被自動(dòng)截取” 。把你的MCU型號和代碼貼上來幫你看看。
回復(fù)

使用道具 舉報(bào)

ID:411550 發(fā)表于 2019-10-23 14:02 | 顯示全部樓層
應(yīng)該不會(huì)是代碼超長的問題,可以再檢查一下修改后的代碼,或者貼上來幫你看看
回復(fù)

使用道具 舉報(bào)

ID:87042 發(fā)表于 2019-10-23 14:47 | 顯示全部樓層
wulin 發(fā)表于 2019-10-23 11:17
不是代碼超長問題,如果代碼超長STC-ISP會(huì)提示 “文件大小超出范圍,超出部分已被自動(dòng)截取” 。把你的MCU型 ...

兩個(gè)程序文件A和B,A的代碼長度>B的代碼長度,只要燒錄過A的板子,A的程序都能使數(shù)碼管正常顯示,但再燒錄B,B就不能數(shù)碼管正常顯示了;但如果沒有燒錄過A的板子,B的程序都能使數(shù)碼管正常顯示。下面是對STC90C58RD+的EEPROM程序,看看有沒有可能哪一步導(dǎo)致了這種情況
回復(fù)

使用道具 舉報(bào)

ID:87042 發(fā)表于 2019-10-23 14:48 | 顯示全部樓層


  1. #include "eeprom.h"
  2. /*
  3. stc90c58rd+
  4. 29K
  5. 58扇區(qū)
  6. 0x8000 - 0xF3FF
  7. 0x200/扇區(qū)(512Byte)
  8. */


  9. /*Define ISP/IAP/EEPROM command*/
  10. #define CMD_IDLE    0               //Stand-By
  11. #define CMD_READ    1               //unsigned char-Read
  12. #define CMD_PROGRAM 2               //unsigned char-Program
  13. #define CMD_ERASE   3               //Sector-Erase

  14. #define ENABLE_IAP 0x80           //if SYSCLK<40MHz

  15. void IapIdle();
  16. unsigned char IapReadByte(unsigned int addr);
  17. void IapProgramByte(unsigned int addr, unsigned char dat);
  18. void IapEraseSector(unsigned int addr);

  19. /********************************************************
  20. 函數(shù)功能: 禁用ISP / IAP / eepm功能
  21. 輸入?yún)?shù):
  22. 輸出參數(shù):
  23. 說    明:
  24. *********************************************************/
  25. void IapIdle()
  26. {
  27.     ISP_CONTR = 0;                 
  28.     ISP_CMD = 0;                    
  29.     ISP_TRIG = 0;                  
  30.     ISP_ADDRH = 0x80;               
  31.     ISP_ADDRL = 0;                 
  32. }

  33. /********************************************************
  34. 函數(shù)功能: 從ISP / IAP / eepm區(qū)域讀一個(gè)字節(jié)
  35. 輸入?yún)?shù):
  36. 輸出參數(shù):
  37. 說    明:
  38. *********************************************************/
  39. unsigned char IapReadByte(unsigned int addr)
  40. {
  41.     unsigned char dat;                     

  42.     ISP_CONTR = ENABLE_IAP;  
  43.     ISP_CMD = 0xF8;      
  44.     ISP_CMD = CMD_READ;            
  45.     ISP_ADDRL = addr;              
  46.     ISP_ADDRH = addr >> 8;               
  47.     ISP_TRIG = 0x46;               
  48.     ISP_TRIG = 0xb9;         
  49.     _nop_();                        
  50.     dat = ISP_DATA;                 
  51.     IapIdle();                    

  52.     return dat;   
  53.        
  54. }
  55. /*
  56. void IAPReadNByte(unsigned int Add,unsigned char *pDat,unsigned char n)
  57. {
  58.         while(n--)
  59.         {
  60.                 *pDat++ = IapReadByte(Add++);
  61.         }
  62. }
  63. */
  64. /********************************************************
  65. 函數(shù)功能: 向EEPROM寫入1unsigned char數(shù)據(jù)
  66. 輸入?yún)?shù):
  67. 輸出參數(shù):
  68. 說    明:
  69. *********************************************************/
  70. void IapProgramByte(unsigned int addr, unsigned char dat)
  71. {
  72.     ISP_CONTR = ENABLE_IAP;  
  73.     ISP_CMD = 0xF8;      
  74.     ISP_CMD = CMD_PROGRAM;         
  75.     ISP_ADDRL = addr;              
  76.     ISP_ADDRH = addr >> 8;         
  77.     ISP_DATA = dat;               
  78.     ISP_TRIG = 0x46;               
  79.     ISP_TRIG = 0xb9;               
  80.     _nop_();_nop_();_nop_();                       
  81.     IapIdle();
  82. }

  83. /********************************************************
  84. 函數(shù)功能: 擦除一個(gè)扇區(qū)數(shù)據(jù)
  85. 輸入?yún)?shù):
  86. 輸出參數(shù):
  87. 說    明:
  88. *********************************************************/
  89. void IapEraseSector(unsigned int addr)
  90. {
  91.     ISP_CONTR = ENABLE_IAP;         //Open IAP function, and set wait time
  92.     ISP_CMD = 0xF8;
  93.     ISP_CMD = CMD_ERASE;            //Set ISP/IAP/EEPROM ERASE command
  94.     ISP_ADDRL = addr;               //Set ISP/IAP/EEPROM address low
  95.     ISP_ADDRH = addr >> 8;          //Set ISP/IAP/EEPROM address high            
  96.     ISP_TRIG = 0x46;               
  97.     ISP_TRIG = 0xb9;  
  98.     _nop_();                        //MCU will hold here until ISP/IAP/EEPROM operation complete
  99.     IapIdle();
  100. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2019-10-23 18:07 | 顯示全部樓層

STC90C58RD+的用戶程序區(qū)最大可以保存32712字節(jié),你的程序才11347字節(jié),不可能超出?赡軉栴}出在EEPROM存儲區(qū)。建議下載時(shí)勾選“下次下載用戶程序時(shí)擦除用戶EEPRO區(qū)”試試。
無標(biāo)題.jpg

回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产色网站 | 中文在线一区二区 | 国产精品激情在线 | 久久www免费人成看片高清 | 日本精品视频 | 91久久夜色精品国产网站 | 91av在线免费观看 | 久久国产综合 | 精品av| 国产资源网 | 欧美一区不卡 | 青青久久 | 97精品超碰一区二区三区 | 婷婷亚洲综合 | 日韩电影免费观看中文字幕 | 精品国产一区二区三区久久影院 | 激情小视频 | 麻豆91精品91久久久 | 久久国产精品网 | 神马久久春色视频 | 国产精品久久久久久久久久久久久久 | h视频免费在线观看 | 国产成人精品一区二区三区 | 成人免费网站www网站高清 | 国产 欧美 日韩 一区 | 韩日一区二区 | 国产一区视频在线 | 91成人在线| 欧美一区二区免费视频 | 国产乱码精品一区二区三区av | 一区精品国产欧美在线 | 在线视频国产一区 | 久久国产精品一区 | 亚洲网视频 | 久久久久久成人 | 九色视频网站 | 91一区二区| 亚洲 中文 欧美 日韩 在线观看 | 日韩成人中文字幕 | 亚洲激情综合 | 成人区一区二区三区 |