![]() |
發布時間: 2024-9-1 20:48
正文摘要:/******************************************************************/ #include "eeprom.h" #include <intrins.h> /***************************************************************** ... |
已解決,謝謝大家 |
STC莊偉 發表于 2024-9-2 10:13 你說用比較器做掉電檢測,其他用法都是錯的?? 那么,STC的“掉電中斷”是干什么吃的? 樣子貨? |
qq378912453 發表于 2024-9-2 22:07 update_admin_passwd和update_admin_passwd1在哪里運行? |
本帖最后由 newlined 于 2024-9-3 09:12 編輯 前邊樓層已經想到了,編輯掉了,請版主刪掉此貼,謝謝。 |
wpppmlah 發表于 2024-9-2 08:40 這個main 初始化已經初始化了 ,就是根據官方改的,目前可以寫可以讀,就是斷電不會保存 |
#include "config.h" /************* 功能說明 ************** 選擇時鐘 11.0592MHz (可以在配置文件"config.h"中修改). ******************************************/ /**********************************************/ int main(void) { P_SW2 |= 0x80; // 允許訪問擴展寄存器xsfr IRCDB = 0x10; // IRCDB設置減小,增加內部高速振蕩器去抖 IAP_TPS = 11; //設置EEPROM操作等待參數(11.0592MHz),初始化設置一次即可 EA = 1; // 允許全局中斷 INT0_Init(); Timer0_Init(); GPIO_config(); PrintfInit(); // 串口波特率 ADC_config(); Touch_Init(); /**********************************************/ open_flag = 1; // 默認開的狀態 close_flag = 0; /**********************************************/ mode_yongjiu = 1; //永久模式(固定模式) mode_linshi = 0; /**********************************************/ while (1) { // key(); /**********************************************/ Touch_Scan(); /**********************************************/ Show_Vol(); // 顯示電池的電壓 /**********************************************/ handle_key_function(); // 狀態機切換 /**********************************************/ } } |
STC的EEPROM的讀寫擦除方法: 字節讀:部分系列可使用unsigned char/int/long code指針或匯編MOVC訪問(STC89/90系列除外)。 字節編程:二進制1可以寫為0,0不能寫為1,必須擦除后才可以繼續寫。 扇區擦除:沒有字節擦除,1次擦1扇區為512字節,擦除后全部恢復為0xFF。 |
1、你沒有給出STC8H具體的單片機型號,所以一定注意,有些單片機是出廠自帶EEPROM,有些沒有EEPROM,而只有再手動分割FLASH出來作為EEPROM使用。手上正好有艾克姆科技的STC8H8K64U的開發板,把相關資料分享給你。
![]() 2、STC8H8K64U是沒有片內EEPROM的,所以需要在STC-ISP下載軟件時分好EEPROM空間。如果芯片自帶片內EEPROM,則無需分割,比如STC8H8K48U。 ![]() 3、程序源碼見附件,下載程序后,打開串口助手可觀察對片內EEPROM的讀寫操作。 ![]() |
34.05 KB, 下載次數: 1
![]() |
平常不要操作 STC32G/STC8H的EEPROM: 1,上電時讀到 SRAM 中; 2,平常在SRAM中改寫; 3,掉電時及時保存到 EEPROM/DATA-FLASH中! 用內部比較器做外部掉電檢測!!! 其他用法都是錯誤的用法 ![]() |
代碼不全,main()呢? |
單字節,指定地址讀寫,進行實驗,如果沒問題,就是你的連續讀寫代碼有問題,另外注意連續讀寫跨扇區問題,STC是扇區擦除,寫之前需要對當前扇區先進行擦除操作,才能寫.嚴格按照官方的代碼進行操作,一般不會出問題,另外設置等待參數為什么要注釋掉呢: //IAP_TPS = 12; |