單片機:
STC單片機采取EEPROM的模式而不采用FLASH.
裸機程序指令就在Flash(Flash memory)中存放,而數據就放在了RAM中(flash的寫入次數有限制,同時它的速度和RAM還是差很多)。更廣泛說,在單片機上RAM存放data段、bss段、堆棧段;ROM(EPROM、EEPROM、Flash等非易失性存儲設備)存放代碼,只讀數據段。本質上說,這和PC上程序都在RAM中存放是一樣的,PC 上是操作系統規定了可讀與可寫,而單片機上是依靠不同的存儲設備區分了可讀與可寫。當然現在的Flash是可讀寫的,如果Flash沒有寫入次數限制,速度又可以和RAM相差不多,單片機上只有Flash了。
對單片機編程后,程序的代碼段、data段、bss段、rodata段等都存放在Flash中。當單片機上電后,初始化匯編代碼將data段、bss段、復制到RAM中,并建立好堆棧,開始調用程序的main函數。以后,便有了程序存儲器,和數據存儲器之分,運行時從Flash(即指令存儲器,代碼存儲器)中讀取指令 ,從RAM中讀取與寫入數據。RAM存在的意義就在于速度更快。
第一步:連接編程器,打開編程器電源,在編程器的計算機端軟件環境中,將器件選擇MCU類型,型號列表中如果有STC89C51RC,那最好,如果沒有,只好建議選擇ATMEL 89C51試一試,設置好后,將單片機芯片按照編程器的擺放要求(一般在編程器表面有芯片的擺放示意圖),插入到管腳插中,壓上管腳扣,利用軟件讀出器件內的程序代碼(二進制),保存成HEX格式的文件。第二步:在仿真器的計算機端軟件中,利用反匯編功能,打開剛才保存的HEX格式文件,如果單片機內的程序在編譯時設置了允許注釋,那么,您可以很快得到原程序代碼(匯編語句),如果沒有注釋,那只好根據反匯編的出來的語句(匯編代碼),去查詢指令代碼表,人工翻譯出來,對一些跳轉地址,可以自己定義成特定的標號。說明:一般來說,根據對方的硬件電路圖,產品的使用說明書,即可分析出軟件功能
單片機:指令寄存器IR及指令譯碼器ID
程序計數器(PC)
由兩個8位計數器PCH\PCL組成
PC是程序的字節地址計數器,PC內容為將要執行的指令地址
改變PC內容,改變執行的流向
PC可對64KB ROM直接尋址,也可對89C51片內ROM尋址
由程序計數器(PC)中的內容指定ROM地址
取出來的指令經IR送至ID
由ID對指令譯碼產生一定序列的控制信號,以執行指令所規定的操作
可編程全 雙工串行口(串行通信)
電源線:VCC(+5V) 40 VSS(地)20
18 XTAL2 19 XTAL1 接晶振
復位引腳:RST 9
EA 訪問程序存儲控制信號 31
PSEN:外部ROM讀選能信號 29
ALE:地址鎖存控制信號30
P3第二功能口:P3.0 RXD P3.1 TXD P3.2 INT0 P3.3 INT1 P3.4 T0 P3.5 T1 P3.6 WR P3.7 RD
馮諾依曼:一套地址總線 數據總線
哈佛結構:一套地址總線 數據總線分時復用
現在的單片機:RAM ROM分離,但采用分時復用地址總線和數據總線,用movc讀ROM ,用mov movx讀RAM
改進的哈佛結構
片內ROM 0000H-FFFFH 片外ROM 000H-FFFH
片內RAM 0000H-FFFFH 片外RAM 00H-FFH
各類存儲器分別編址
EA=1:4KB以內的地址在片內,大于4KB的地址在片外,兩者共同構成64KB
EA=0:片內ROM被禁用。全部64KB地址都在片外ROM
ROM:0000H主程序跳轉指令 主程序入口地址
0003H INT0中斷跳轉指令 中斷程序入口地址
000BH T0中斷跳轉指令 0013H INT1中斷跳轉指令
001BH T1中斷中轉指令 0023H RI/TI中斷跳轉指令
0030H 主程序指令
有專門位操作指令 字節操作指令



ROM(Read Only Memory):只讀存儲器
內:以程序計數器PC作為16位指針,沒每讀一字節,(PC)+1->PC
有些指令有修改PC的功能,例如轉移類指令和MOVC指令
外:從PC取出當前ROM的16位地址,分別由P0口(低8位)和P2口(高8位)同時輸出。當信號有效時,外ROM將相應地址存儲單元中的內容送至數據總線(P0口),CPU讀入后存入指定單元
單片機讀取ROM保存成TXT

浙公網安備 33010602011771號