就想辦法著手研究了一下,就寫了一段**在8051核心的64k空間依次讀取所有的資料,最後得到了乙個2k多一點的isp所用的bin檔案,反彙編得到彙編檔案,就在那花功夫細細地看了看實現方法,
注意:如果被巨集晶科技的員工看到這份協議,請見諒。因為錯誤也有你們的一半,是你們激發我去開發這份協議得,詳見文件後邊的《後話》小節。同時這也說明乙個問題,你自己的保密工作做得不夠。因為我做矛的技術並不高明,只是你們的盾太弱了。
當年我想從你們那得到協議,未果,於是便有了下邊的這些。
強調:請各位閱讀者不要胡亂傳播,以免損害了巨集晶科技的利益。建議各位購買巨集晶專用的isp燒寫器。
協議幀簡介:主要構成如下
head
sign
reserved
length
frame
data
checkksum
trail
各個填充區詳細說明:
名稱長度
功能head
2-byte
包頭 (0x46,0xb9)
sign
1-byte
標識 (0x6a或0x68)
reserved
1-byte
預留區 (填充0x00)
length
1-byte
(head + length + data)的總長
frame
1-byte
用以區分不同的幀
data
0~0x8a bytes
資料checksum
1 byte
校驗和trail
1 byte
包尾 (0x16)
包頭head:(0x46,0xb9)
預留 reserved:填充0x00
包長length:是包頭區,包長區,資料區的總長度
幀型別frame:區分不同的幀
值value
幀型別描述
0x00
資料幀:包內存放要寫入flash的資料
0x80
確認幀,沒有資料
0x81
錯誤幀,沒有資料
0x82
結束幀0x84
準備幀,準備開始傳送資料
0x8e
波特率更改
0x8f
波特率檢驗
0x30,0x50,0x86,0x8d,0x52
暫時不需要(未詳解)
資料區data:用以存放要傳送的資料
校驗和checksum:僅計算包頭區,包長區,資料區
波特率檢驗幀(0x8f)和波特率更改幀(0x8e)
波特率檢驗幀(0x8f):
setbaud
reserved
ispwrite
各個填充區詳細說明:
名稱長度
功能setbaud
2-byte
用以設定mcu的波特率引數,填充為:(##xx ***xb,##h)
其中第1個位元組中##是需要填充的,依次代表4052晶元中的smod位和t1x12位,第2個位元組為填入tl1和th1中的資料,timer1使用方式2—autoreload。
reserved
2-byte
預留區(填充0x00)
ispwrite
1-byte
設定isp寫,應為0x8#,其中#的範圍為0~7,用以設定isp擦寫的等待時間,與晶振速率有關,具體請參照《stc12c2052ad.pdf》的p40。
波特率更新幀(0x8e):
setbaud
reserved
填充方法與波特率檢驗(0x8f)幀中的一樣,且要求資料一樣。
返回值:返回接收到的資料和命令。並且在接收到波特率更新幀後採用新的波特率傳送資料。
3.3.準備幀(0x80)和引導幀(0x84)
準備幀(0x80):可以不帶資料。
引導幀(0x84) :可以不帶資料,至少在3.5和3.6版中,可以不用去管。
返回值:準備幀(0x80)和引導幀(0x84)的返回值相同,均返回準備幀。
3.4.資料幀(0x00)
用以下格式填充協議包中的資料區
res 1
address
res 2
lenflashdata
名稱長度
功能res 1
3-byte
預留區1 (填充0x00)
address
2-byte
位址區res 2
1-byte
預留區2 (填充0x00)
len1-byte
flash資料長度
flashdata
1-0x80 bytes
存放flash資料
00,00,00,08,80,00,80,########(表示0x80位元組資料)
返回值:返回準備幀(0x80),帶一位元組資料,該資料為上一幀flash資料的校驗和。
其中校驗和計算方式與整包的計算方式相同,但應強調的是,計算的結果再減1,詳見(2.基本概念 中的 校驗和模組)。例如:如果上一包資料為0x80個0,則按照計算函式則得到0x01,最後減1,即校驗值為0x00。
3.5.結束幀(0x82)
**
STC微控制器輸出可調的pwm
pca0初始化 auxr1 0x30 auxr1 0x10 切換io口,0x00 p1.2 p1.1 p1.0 p3.7,0x10 p3.4 p3.5 p3.6 p3.7,0x20 p2.4 p2.5 p2.6 p2.7 ccapm0 0x42 工作模式 pwm pca pwm0 pca pwm0 ...
STC微控制器硬體PWM的使用分析
stc微控制器 具有pca功能的 怎麼實現可變頻率的pwm輸出?很多朋友還在使用定時器做可變頻pwm,這裡我就介紹怎麼使用硬體pwm,在定時器0的分頻基數下設計pwm。首先看cmod這個暫存器,這裡我們主要關注 cps0,cps1,cps2,這三個位控制選擇pca的計數脈衝源。對應pwm功能,則是選...
STC15微控制器的EEPROM程式設計
在程式中使用 stc15微控制器是乙個8位的微控制器,據說在世界上銷量最大,是國產的品牌。其中也有許多值得稱道的地方,比如不用晶振,不用外部的儲存器,flash可以做記憶體使用等。可以進入休眠狀態,外部中斷就可以喚醒等。在使用者需要保持資料,當掉電可以儲存這些資料,等下次啟動後繼續使用資料。這個功能...