如何編寫STC單片機的ISP協議

2021-01-08 電子產品世界

STC單片機包含兩個Flash塊,在一塊Flash中運行的程序可對另一塊Flash進行擦除和重新編程.一般都將ISP程序存放在容量較小的一塊Flash中(Block1),而將用戶代碼存放在容量較大的一塊Flash中(Block0).Block1中的ISP程序對Block0中的用戶代碼進行擦除和重新編程.在做STC單片機解密或是使用的朋友都知道,在STC單片機的程序存儲區後,還有一段大約3K的代碼,這段代碼就是STC單片機的ISP程序,在STC單片機的數據手冊裡有關於對於ISP的生機資料,既然這段代碼是可以升級的,那麼我們就可以肯定這個區域是可以改寫的,呵呵,這些涉及到了對STC單片機軟解密的技術,我不多提了,大家可以動用自己的智慧。

本文引用地址:http://www.eepw.com.cn/article/173034.htm

下面為大家提供一些自己設計STC ISP協議的資料。許多應用系統中都需要進行程序代碼升級,如果程序代碼在外部Flash存儲器中,實現程序代碼升級可以對外部Flash直接操作.但對於在單片機內部的一些系統程序代碼,就要求此單片機支持IAP(In-Application-Programming)功能.本文即介紹此情況下的ISP(In-System-Programming)程序設計方法,以及在SST和STC單片機上的具體實現.
1ISP實現基本結構
ISP的實現方式有很多種,但大致都遵循圖1所示流程.


圖1
其中,判斷用戶ISP選擇,一般有以下幾種方式.
(1)連接計算機系統,由系統的命令選擇
進入用戶ISP選擇判斷時,先由單片機發送特定特徵數據,然後等待命令數據,如果在一定的時間內,接收到計算機系統發出的選擇命令則進入用戶代碼升級,否則直接跳轉到用戶代碼執行.
(2)由用戶板上的跳線選擇
一般利用單片機空餘的埠,設計一個代碼升級選擇跳線.進入用戶ISP選擇判斷時,單片機可以直接根據此埠的狀態判斷進入用戶代碼升級還是直接跳轉到用戶代碼執行.
(3)由用戶板操作功能選擇
在用戶板的功能菜單或功能組合中,允許用戶選擇代碼升級功能,同時,在外部存儲器中存放相應的標誌.當選擇代碼升級功能時,在外部存儲器中寫入特定數據,然後程序復位.進入用戶ISP選擇判斷時,判斷外部存儲器中的數據,如果符合條件則進入用戶代碼升級,否則直接跳轉到用戶代碼執行.
2IAP程序設計
目前,許多單片機都支持IAP功能,一般這些單片機內部都包含兩個Flash塊,在一塊Flash中運行的程序可對另一塊Flash進行擦除和重新編程.一般都將ISP程序存放在容量較小的一塊Flash中(Block1),而將用戶代碼存放在容量較大的一塊Flash中(Block0).Block1中的ISP程序對Block0中的用戶代碼進行擦除和重新編程.
下面以兩種51系列兼容的Flash單片機為例,介紹IAP的程序設計.一種是SST89C54,另一種是STC89C516RD.
(1)SST89C54相關特性
SST89C54內部有20KB(16KB+4KB)程序存儲器,統一編址.Block0為0000H~3FFFH;Block1為F000H~FFFFH.Block1可以選擇映射到0000H地址開始的1KB/2KB/4KB程序區.
(2)STC89C516RD相關特性
SST89C516RD內部有72KB(64KB+8KB)程序存儲器.Block0為0000H~FFFFH,Block1可以選擇映射到0000H地址開始的8KB程序區(上電復位預設為地址映射).
SST與STC單片機的IAP操作幾乎完全相同,本刊網站(www.dpj.com.cn)中給出了IAP函數的C程序原始碼IAP.C.要特別注意的是,Block0_erase函數中對於block0的選擇,兩種單片機是不同的(正好相反).
3ISP程序到用戶代碼的切換
在設計中一般都將ISP程序設計為上電復位後運行的程序,如果不需要用戶代碼升級或升級完成後,就要將程序切換到用戶代碼執行.ISP程序到用戶代碼的切換,不同的單片機各不相同.
(1)SST89C54程序區Block1到Block0的切換實現
SST89C54單片機在燒錄時,將ISP程序寫到Block1,並且燒錄映射選擇位RB0/RB1(RE-MAP[1:0]).這樣程序上電復位時,自動將Block1映射到0000H地址開始的4KB程序區,進入ISP程序執行.由於Block1同時還分配在地址F000H~FFFFH,因此,編譯生成ISP程序代碼時,設定所有的地址範圍都在F000H~FFFFH.需要切換到用戶代碼(Block0)運行時,修改SFCF[7]控制位VIS,將Block1的0000H地址映射取消,然後程序跳轉到地址0000H執行,則開始運行Block0中的用戶代碼程序.
本刊網站中給出了ISP的C程序原始碼ISP.C.需要注意的是,此程序在Keil-C中要建立工程文件,包含
IAP.C函數以及STARTUP.A51,並且在IAP.C和ISP.C中都要去掉STC的定義.為了將地址範圍設定到F000H~FFFFH,要將STARTUP.A51中程序入口地址由0改為0F000H,如下:
CSEG AT 0F000H
?C_STARTUP: LJMP STARTUP1
還要修改編譯選項設置Target選項卡中Off-chip Code memory:Start
=0xF000;Size=0x1000;還要設置C51選項卡中Interrupt Vectors at address:0xF000.
(2)STC89C516RD程序區Block1到Block0的切換實現
STC89C516RD單片機在燒錄時,將ISP程序寫到Block1.(注意:並不燒錄SC0/SC1位).單片機上電復位時,預設的Block1映射到0000H地址開始的8KB程序區,進入ISP程序執行.需要切換到用戶代碼(Block0)運行時,ISP修改SFCF[1]控制位SWR,產生一個軟復位(Software
Reset).由於SC0和SC1都未燒錄,程序軟復位後,Block1將不再映射到0000H地址映,則開始運行Block0中的用戶代碼程序.
本刊網站中給出了ISP的C程序原始碼ISP.C.要注意的是:此程序在Keil-C中要建立工程文件,包含IAP.C函數,並且在IAP.C和ISP.C中都要保留STC的定義.

相關焦點

  • 51單片機玩轉物聯網基礎篇01-開發環境搭建
    前言上至航天,下至兒童玩具,凡事沾一點智能的東西,都離不開單片機的身影......,本文開始,我們學習STC89C52單片機,這款單片機屬於8051系列單片機,51單片機作為入門級單片機不僅在教學實驗中應用廣泛,在實際項目中應用亦是十分廣泛。
  • 學習單片機,為什麼我建議你從51單片機開始
    隨著物聯網的大潮,單片機的學習又有高潮,可是面對品類繁多的單片機,不知從何學起,不知道到底學習單片機需要哪些知識;是從8位單片機、16位單片機,還是現在正流行的32位單片機開始學習呢。因此經過我的教學經驗,如果想開始學習單片機,最好從51單片機開始學起,我都推薦STC系列的51單片機學習。原因就是一句話,因為51系列單片機簡單,學習起來也簡單。但是簡單不代表它功能少,51單片機雖然簡單,但體系是完備的。所以當你學會51單片機,會非常快速入門其它單片機學習。
  • STC單片機程序燒錄與ISP下載相關知識
    導讀:本文為您介紹常見串口USB、RS232、UART三者轉換模塊及其電路原理圖,單片機ISP下載及單片機程序燒錄相關內容,設備連接操作方法。本文引用地址:http://www.eepw.com.cn/article/201710/366385.htm  前面已經說了,單片機相當於一個微型電腦,所以單片機是可以執行程序的。
  • STC單片機免斷電下載程序的另一種更簡單的方法
    看到網上有一些STC單片機免斷電下載程序的例子。但是都是要用串口中斷來完成。}else if(cdd==0x55){ISP_CONTR=0x20; //軟復位,從用戶程序區啟動}else{senddata(cdd);}}else{TI=0;}}另外還要在stc
  • NEOM與stc籤署協議,為創造全球領先的認知城市開展基礎設施工作
    - NEOM的新一代認知城市將會支持其前沿城市環境,改善居民和企業的生活,遠遠超出當前智慧城市的能力 - stc將為支持NEOM的發展,提供先進的5G和IoT網絡 沙烏地阿拉伯NEOM新城2020年7月29日 /美通社/ -- NEOM Co.宣布,在與stc(沙特電信公司)集團籤署合約,以便建立將能加速實現
  • STC12C2052AD單片機AD轉換C語言程序
    如果你需要應用在你自己的項目中,您只需要更改io就能直接應用了//程序的完整版本下載地址:http://www.51hei.com/ziliao/file/stc12c2052adde.rar#include stc12c2052ad.h> //stc單片機專用的頭文件#include intrins.h>#define uchar unsigned char
  • 基於Modbus通信協議的eView觸控螢幕與51單片機的通信設計
    單片機廣泛應用於工控領域中,與觸控螢幕配合,可組成良好的人機互動環境。 觸控螢幕與單片機通信,需要根據觸控螢幕採用的通信協議為單片機編寫相應的通信程序。Modbus協議是美國Modicon公司推出的,一種有效支持控制器之間以及控制器經由網絡(如乙太網)與其他設備之間進行通信的協議。本文以STC89C51單片機和人機電子有限公司的eView觸控螢幕為例,介紹其通信程序的開發過程。
  • STC單片機和STM32單片機哪個更適合入門?
    在綜合收集網上相關信息後,我相信很多剛入行的朋友,都應該被支持51單片機和STM32單片機任一種硬體平臺作為入門的理由搞得不知所措。我雖不才,但是,也從事硬體研發工作十年之久。因此,我也想從自己的角度給各位剛入行或準備進入電子產品硬體研發行業的工程師和大中專學生一個儘可能全面的參考依據。當然,我發布的言論,也僅僅是代表我個人的觀點,各位朋友如何做出抉擇,依舊要考各位朋友自己斟酌。
  • JTAG/SWD/ISP/SWIM詳解單片機的四種燒寫方式
    在學習單片機之前,要先清楚單片機程序是如何燒寫到單片機內部的,在燒寫的過程中需要用到什麼工具?因為不通用的燒寫工具可能價格較貴,比如說Micorchip單片機使用的ICD系列編程器,單臺價格在600-1000元人民幣之間。今天和大學來認識一下單片機最常用的四種燒寫方式和所使用到的工具。
  • 單片機ISP編程器使用
    單片機ISP編程器就是用來把這個hex文件燒寫到單片機裡去的工具,這樣我們的程序才會被執行。簡單介紹一下我們使用的ISP編程器,什麼是在系統編程技術呢?在系統可編程技術即In System Programming,簡單地說就是指待編程的單片機在實驗板(目標板)上,不用拆下來用編程器進行編程,只需利用ISP編程接口,通過下載線就可把程序代碼下載到單片機內部,ISP技術是對傳統編程技術的一大革新。通過ISP技術,我們在燒寫程序的時候就不用頻繁拔插晶片,只要滑鼠點擊即可把程序寫入單片機,徹底告別以前那樣用編程器反覆燒寫撥插晶片的煩惱。
  • 51單片機程序下載、ISP及串口基礎知識
    串行接口按電氣標準及協議來分還包括UART、RS232、RS422、RS485等。 老式的臺式計算機和部分筆記本上則有RS232串口,這裡RS232指的是RS232電平的串口。後來由於這種串口使用很少、速度較慢、體積較大而逐漸在筆記本甚至臺式機上被淘汰了。
  • 編寫延時函數的簡單方法
    此過程中需要注意,單片機晶振的選擇,因為for循環裡指令的執行時間和晶振有直接關係,本例中晶振使用11.0592M。編寫一段關於延時的函數,主要利用for循環,代碼如下:void delay_ms(unsigned int ms){unsigned int i;unsigned char
  • 中國電信與巴林stc合作 加快MENA地區數位化進程
    stc Bahrain公司宣布與中國電信全球公司(China Telecom Global,CTG)籤署了合作夥伴關係,將加快中東和北非(MENA)地區經濟數位化的進程。作為新的合作夥伴關係的一部分,stc Bahrain的客戶將能夠享受到更方便和可靠的聯繫,以支持他們的業務增長,特別是那些希望擴展到亞太地區的客戶。中東和北非地區是中國電信全球擴張的重要市場,將進一步加強中國電信對其中東和北非市場客戶的網絡支持,並使中國企業進一步開拓全球市場,積極擁抱數字經濟。
  • STC單片機程序下載問題及解決方法
    在單片機停電狀態下,點下載按鈕,再給單片機上電2.停止下載,重新選擇 RS-232 串口, 接好電纜3.可能需要先將 P1.0/P1.1 短接到地4.可能外部時鐘未接5.因 PLCC、PQFP 轉換座引線過長而引起時鐘不振蕩,請調整參數6.可能要升級電腦端的 STC-ISP.exe 軟體7.若仍然不成功
  • isp牌照如何申請?辦理需要多長時間
    所以很多人一致認為isp牌照就是寬帶運營商牌照,事實並不是這樣的。isp牌照isp牌照即isp業務經營許可證,是國家單位給從事isp業務的企業頒發的從業資格證明,其中isp業務是指通過從基礎運營商那裡購買的帶寬資源,並以自己品牌形式轉賣給用它用戶的業務過程,常見的業務類型有村村通戰略,戶戶通,小區帶寬,樓宇寬帶,寫字樓寬帶等等,isp牌照是證明企業能從事寬帶接入業務,國內民資企業通過自建光纖網絡給小區、農村、寫字樓提供上網寬帶服務。
  • 關於PL2303用於STC單片機下載的討論
    測試的STC單片機:STC12LE5A60S2USB轉串口晶片:PL2303HX(E版或F版)本文引用地址:http://www.eepw.com.cn/article/201611
  • 北京isp許可證辦理流程要注意什麼?
    北京isp許可證辦理流程要注意什麼?關於網絡訪問的問題,除了三大運營商之外,實際上還有許多從事商業服務的公司。 但是,這類企業的市場服務量很小,因此大多數人並不了解它們。 在這種情況下,公司應申請isp許可證。isp許可證是公司合法從事網絡訪問服務的標準,並且也是合規性的標誌。
  • 單片機用Bootloader輕鬆實現程序下載
    Bootloader流程以STM8單片機為例,該如何實現Bootloader呢?今天和大家分享一下。STM8單片機如果要下載hex文件的話需要通過STVP和STLINK來實現,單片機的引腳SWIM就是下載接口。如果產品在用戶端被封裝好了,無法通過SWIM來下載該怎麼辦呢?就使用Bootloader,STM支持CAN和UART實現Bootloader。就是通過CAN通信或者UART通信將數據存放在STM8的Flash上。
  • isp許可證備案是什麼?2019年如何快速辦理?
    什麼是isp許可證備案?它的全稱為網際網路接入服務業務(ISP);職稱上面歸類於第二類增值電信業務(B14類)。在了解isp許可證之前,我們可以先了解下網際網路接入服務業務。isp許可證,簡單來說,是企業從事網際網路接入服務,所必須具備的一種資質證書,沒有它就不能夠正常的經營,會被相關機構嚴格處理。尤其是2019年,5G時代的來臨,網際網路加入服務又將是一個爆點,會有更多的企業想要進行辦理isp許可證,那到底該如何辦理呢?小編整理出以下信息供以參考。哪些企業業務需要辦ISP許可證?
  • LabVIEW與STC89C54單片機串口通信實現
    下位機主要是用來採集數據,可以通過嵌入式控制器、單片機控制器、PLC等來實現。上位機主要是圖形界面,用來實時顯示採集數據,並進行數據分析及處理,同時可以控制下位機。2.本實例實現的功能首先利用單片機STC89C54通過串口發送「你好,LabVIEW」,LabVIEW將單片機發送到數據進行顯示。通過這個實例來了解LabVIEW的串口通信設計。3.下位機硬體設計與軟體設計(1)硬體設計單片機串口通信硬體電路設計比較簡單,主要包括單片機STC89C54最小系統以及MAX232和九針串口。