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