由於相鄰中斷入口位址的間隔區間僅僅有 8 個位元組,一般情況下無法儲存完整的中斷服務程式,因此在中斷響應的位址區域存放一條無條件轉移指令,指向真正存放中斷服務程式的空間去執行。
eeprom一般放置在flash最後面,以上面0.5k為例,eeprom 起始位址為fe00~ffff
對非空區域寫入值,需要先擦除再寫,擦除flash以0.5k為單元,也就是0x200
#ifndef __eeprom_h__
#define __eeprom_h__
void eeprom_readbuffer(int addr, char *buf, int length);
void eeprom_writebuffer(int addr, char *buf, int length);
void iaperase(int addr);
char iapread(int addr);
#endif
#include "stc8h.h"
#include "intrins.h"
void iapidle()
char iapread(int addr)
void iaperase(int addr)
void eeprom_readbuffer(int addr, char *buf, int length)
/*----------------------------
傳送串列埠資料
----------------------------*/
void senddata(byte dat)
else
sbuf = acc; //寫資料到uart資料暫存器
while (ti == 0); //等待前面的資料傳送完成
ti = 0;
}
中斷向量表範圍為0000h-0200h
int changeinterruptvector(uint16_t offset)
offset >>= 8;
iaperase(0x0000);
// bootloader **跳轉位址
hex2bin新增hex2bin.exe "#l.hex"
,如下圖所示:
經過以上操作,編譯時就會自動產生bin檔案
提取碼:yv4x
最後新增bootloader的bin檔案,勾選插入
點選合併
eeprom大小設定為64k
1.keil-51微控制器實現自定義bootloader,用於程式更新 研究
2.stc51微控制器實現iap遠端公升級過程分享
STC微控制器按鍵掃瞄程式
最近在做乙個電子秤相關專案,使用stc系列微控制器作為主控晶元,專案第一階段直接使用iap15w4k58s4驅動兩個矩陣鍵盤,一切除錯順利,在專案即將結束時老闆要求使用另一塊微控制器驅動矩陣鍵盤,讀取鍵值後通過串列埠傳回之前的iap主控 理由是為了節省從矩陣鍵盤到主控板之間的長排線的成本,16p 1...
主程式,整定的stc8a的程式。初步。
測試脈衝數,並且傳送到電腦串列埠,利用stc8a晶元的串列埠3,定時器3產生波特率,利用pwm增強,pwm的p21介面產生pwm脈衝,有四個按鍵,模式選擇,確定鍵。模式選擇。模式1是設定pwm的占空比,其中pwm的週期設定固定,500hz頻率,通過設定t1h的反轉點,實現pwm,將反轉點的值設定為變...
STC微控制器控制PCA9554A程式
對pca9554a操作時要特別注意的是在主函式寫資料之前,一定要先用函式 pca9554a config 0x00 寫0x00,否則收不到資料 include include sbit sda p2 0 sbit scl p2 1 sbit beep p2 3 void delay unsigned...