

一、單片機的內(nèi)部結構
AT89S51單片機兼容標準8051的指令系統(tǒng)及引腳。下面以AT89S51單片機為例,簡要介紹51系列單片機的內(nèi)部結構。
通常,單片機片內(nèi)含CPU、ROM、RAM、并行I/O口、定時器/計數(shù)器、中斷控制系統(tǒng)、時鐘電路、系統(tǒng)總線等。
1.中央處理器(CPU)
中央處理器是AT89S51單片機的核心,完成運算和控制功能。其CPU能處理8位二進制數(shù)或代碼。
2.程序存儲器
程序存儲器用于存放用戶編寫的程序、原始數(shù)據(jù)或表格,分為片內(nèi)程序存儲器和片外程序存儲器。
AT89S51采用片內(nèi)、片外統(tǒng)一編址的64kB(0000H~FFFFH)程序存儲器地址空間。片內(nèi)有4kB Flash Memery.地址范圍為0000H~OFFFH.
既可在線編程(ISP),也可以用傳統(tǒng)方法進行編程。
采用匯編語言或C語言編寫的源程序,必須通過編譯軟件(如Keil C51)把編譯生成二進制代碼,即機器碼。用戶編寫的程序、原始數(shù)據(jù)、表格等,都是以二進制的形式存放在程序存儲器中的。計算機的工作,就是按照事先編好的程序從0000H地址單元一條條地循序執(zhí)行的。
當AT89S51(31) 腳EA接高電平時,從片內(nèi)ROM 中的0000H地址單元開始執(zhí)行程序。當AT89S51(31)腳EA接低電平時,片內(nèi)ROM不起作用,CPU只能從片外ROM 中取指令。
內(nèi)部ROM 0000H~002AH共43個單元。被分為六段,作為程序運行的入口地址使用。其中:
0000H~0002H 為復位后或初始化引導程序地址區(qū);0003H~000AH 外部中斷0中斷入口地址區(qū);000BH~001 2H 定時器/計數(shù)器0中斷入口地址區(qū);001 3H~001 AH 外部中斷1中斷入口地址區(qū);001 BH~0022H 定時器/計數(shù)器1中斷入口地址區(qū);0023H ~ 002AH 串行中斷入口地址區(qū)。
通常, 我們編寫程序時不得占用上述中斷程序入口地址單元, 即0003H~002AH單元。也就是說, 主程序一般不放在該地址空間。編程時, 可以采用起始偽指令ORG,跳過0003H~002AH單元。
偽指令,是告訴匯編程序如何進行匯編的一類指令,不會被匯編成機器代碼,只能為匯編軟件(如Keil C51)所識別。
單片機復位后,是從0000H單元開始取指令執(zhí)行程序的。因此,應在O000H~O002H三個單元存放一條無條件轉(zhuǎn)移指令,轉(zhuǎn)到主程序,程序結構如下:
ORG O00H:用偽指令ORG指示隨后的指令代碼從0000H地址單元開始存放。
LJMP START;在O000H~0002H存放一條長跳轉(zhuǎn)指令,執(zhí)行該指令,程序轉(zhuǎn)到以START為語句標號的地址執(zhí)行。
ORG 0030H;偽指令ORG指示隨后的指令代碼從0030H地址單元開始存放。
START: ;START是主程序入口地址標號,主程序開始。
……
END ;結束偽指令,標志程序代碼到此結束。
通過該程序,保留了各中斷入口地址。對各個中斷入口地址的使用,我們在學習中斷系統(tǒng)時再進行介紹。
3.數(shù)據(jù)存儲器(RAM )
單片機的數(shù)據(jù)存儲器有片內(nèi)和片外之分,AT89S51片內(nèi)有256字節(jié)RAM,其中高128單元被專用寄存器占用,低128字節(jié)供用戶使用,用于存放可讀寫的數(shù)據(jù)。片外數(shù)據(jù)存儲器可擴展6kB存儲空間,地址范圍為0000H~FFFFH.片內(nèi)和片外RAM 的地址空間各自獨立, 指令MOV用于片內(nèi)數(shù)據(jù)存儲器之間的傳送,指令MOVX用于片外數(shù)據(jù)存儲器和累加器A之間的數(shù)據(jù)傳送。

