九九範文幫

位置:首頁 > 實習 > 實習報告

單晶片應用實習報告

班級:二技電一甲

單晶片應用實習報告

姓名:林桀民

學號:AD89017

相關知識

MCS-51是Intel公司所設計的8051系列單晶片總名稱在MCS-51這個大家族裡較具知名度的編號有80518751&8031實際上這些不同編號的單晶片都使用相同的核心CPU與指令及只是在製造IC時給予不同的周邊設計分別賦予這些IC一個特別編號

主要功能:

MCS-51系列單晶片的主要功能列舉如下

專為控制應用所設計的8位CPU

有完整的單位元邏輯運算指令,具有布林運算能力

有32條(4個Port)雙向且每條都可以被單獨定址的I/O

內部有兩個16位Timer/Counter

有一個通訊用的全雙工UART(序列I/O)

可接受5箇中斷源且有2層優先權的中斷結構

內部有時脈震盪器(最高頻率可到12MHz)

內部有4K的程式記憶體(ROM),128byte資料儲存器(RAM)

可在外部擴充到64K程式記憶體(EPROM)

可在外部擴充到64K資料儲存器(RAM)

8051內部結構方塊圖

8051接腳圖與功能(40):

若系統讀取外部程式,接低電位/

EA/Vpp/Psen

高電位動作,系統重置,PC回到0000H

RESET(9腳)

序列通訊輸出/入(P3.0,P3.1)

RXD/TXD

外部中斷輸入(P3.2,P3.3)

INT0/1

計時計數器的輸入(P3.4,P3.5)

T0/T1

8位I/O埠,外接記憶體可做地址

P2.0~P2.7

地址閂鎖致能訊號

ALE/Prog

外部資料的讀取/寫入(P3.7,P3.8)

RD/WR

8位I/O埠,

P1.0~P1.7

8位I/O埠,外接記憶體做資料地址線

P0.0~P0.7

時脈反相放大器輸出/入端,接石英振盪器

XTAL1/2(19/18腳)

電源(5V)/接地

Vcc(40腳)/Vss(20腳)

功能

接腳

8051基本電路圖:

基本電路中有振盪電路及開機重置電路

振盪電路:8051晶片內部有一個振盪器,可以當作CPU的時脈,再設計時脈源時,若使用晶片內部的振盪器,只要在18、19腳兩腳間接振盪頻率範圍3.5M~12MHZ的石英振盪晶體或陶質共振器,並各自接20PF~50PF的電容。

重置電路:任何微電腦系統均有硬體重置功能,硬體重置主要用來確保CPU在開機時從程式的預定起始地址開始執行及當系統當機時使系統能重新開始,8051的重至訊號輸入腳為第9腳,此輸入腳為高電位動作,且高電位至少要維持2個機械週期也就是24個振盪週期。開機時RST腳電位為高電位促使系統重置,利用電容充電效應使RST接腳電位降成低電位,8051完成重置動作固定到程式記憶體地址0000H開始執行。

8051記憶體介紹:

8051的記憶體包含程式記憶體(ROM)和資料儲存器(RAM)兩種,他們分別有不同的用途,程式記憶體的作用是在儲存所要執行的程式,而資料儲存器用來存放在程式執行過程中所產生的資料,由於8051讀取程式記憶體有專用控制線PSEN,所以程式記憶體和資料儲存器二者選址時完全獨立不相干。

程式記憶體(ROM)結構:

89C51的4K程式記憶體中,有下列幾個重要地址,若沒有用到,就作一般程式記憶體使用,單晶片系統程式儲存在程式記憶體(ROM),一般8051/52提供4~8KBytes程式記憶體。使用者將編輯好的程式,經過組譯(Assembler)、連結(Link)後,燒錄到單晶片的ROM。如果採用89C51晶片,可重複燒錄多次,每次燒錄可將前一次燒錄的程式自動清除。若採用8031晶片,由於本身沒有內建ROM,所以必須採外部擴充記憶體

TIMER0中斷服務程式地址

000BH

TIMER1中斷服務程式地址

001BH

UART序列通訊服務程式地址

0023H

功能

地址

INT1外部中斷服務程式地址

0013H

INT0外部中斷服務程式地址

0003H

RESET程式開始執行地址

0000H

程式記憶體配置圖

單晶片資料儲存器(RAM)結構:

8051的資料儲存器是隨機存取的,使用者隨時讀取或寫入資料,通常是用來當程式執行時存放資料的快取器。

SCON/SBUF

1byteX2

(98H/99H)

PSW/ACC

1byteX2

(D0H/E0H)

特殊快取器(SFR)

128byte

80H~FFH

功能

長度

地址

TCON/TMOD/TL/TH

6byte

(88H~8DH)

使用者直接定址可

設定SP建立堆疊區

80byte

30H~7FH

個別位資料定址

8bit×16

20H~2FH

R0~R7四個快取器庫

8byte×4

00H~1FH

資料儲存器(RAM)是單晶片在執行程式時,儲存處理資料的地方。一般8051/52提供128~256Bytes資料儲存器。其中又可將它們區分為下列幾項功能的快取器與記憶體區:

n[00~1FH]的32個位元組可分為四個快取器庫,分別為RB0、RB1、RB2、RB3。每個快取器庫有8個快取器,分別為R0、R1、R2、R3、R4、R5、R6、R7。

n[20~2FH]的16位(2BYTES)可做直接位定址,例如SETB20H.0、CLR20H.1。

n[30~7FH]80個位元組的記憶體區又稱為”使用者RAM”,可以直接定址存取資料,同時也可以由使用者透過設定SP,自定堆疊資料區。

n[80~FFH]的128個位元組資料,8031/8051晶片沒有提供。在8031/8052晶片可做間接定址資料區,或是可直接定址的狀態快取器(SFR)使用。其中包括P0、P1、P2、P3埠的對應快取器,以及稍候我們作UART通訊功能會用到的SCON序列控制快取器、與定時器/計數器控制快取器…。

熟悉這些記憶體的結構,對撰寫單晶片程式會有很大的幫助。讀者想自行撰寫或修改單板微電腦的系統監督程式,最好能下點工夫,將這些記憶體的功能與結構做充分的瞭解。

中斷向量地址:

由於這些內部程式記憶體的地址都與中斷有關,所以我們也稱這些地址為中斷向量,在撰寫程式時,若程式本身沒有利用到中斷的功能,則以下七個特別的地址可視為一般程式記憶體地址來處理,但是若程式中使用到某個中斷時,則該中斷對應的地址,就必須保留,因為,只要該中斷髮生時,接下來被執行的就是位於該地址的指令,下列這些地址是各種中斷服務程式的進入點。

功能

地址

中斷

序列埠中斷向量

0023H

UART

計時計數中斷TIMER2向量

002BH

TIMER2

計時計數中斷TIMER1向量

001BH

TIMER1

計時計數中斷TIMER0向量

000BH

TIMER0

外部中斷INT1向量

0013H

INT1

外部中斷INT0向量

0003H

INT0

系統重置啟始地址

0000H

RESET

單晶片指令集:

資料定址指令:累加器,快取器,直接,間接記憶體定址與I/O埠間的資料轉移。

算術運算指令:資料做加(ADD)、減(SUB)、乘(MUL)、除(DIV)運算,或加一(INC),減一(DEC)等運算。

邏輯運算指令:資料做AND(ANL)、OR(ORL)、XOR(XRL)運算,與RR、RL、RRC、RLC位旋轉功能。

布林代數運算指令:位資料的清除與設定,如SETB,CLR。或位資料的運算ANLC,bit...等。

程式流程控制:迴圈,呼叫子程式(CALL),中斷,條件判斷的跳躍。如JMP,JZ,CJNZ,DJNZ,RET...等指令。

範例應用:

名稱:

單開關控制燈號變化,以指撥開關以控制程式流向,造成燈號的變化

動作要求:

接於阜腳P2.7上之指撥開關撥至ON位置時,P2.7阜腳為低電壓,接於P0之8個LED燈不停的作霹靂燈之動作,直制止撥開關撥至OFF位置時,P2.7為高電位,LED燈號變成奇偶位置不停地互動亮滅。

電路圖:

程式:

ORG00H

START:JBP2.7,LOOP2;檢查P2.7,若為1則跳至LOOP2,否則往下執行

LOOP1:MOVDPTR#TABLE;設定表格之起始為止於DPTR

MOVR3,#07H;設定表格資料之地址組數於R3

MOVA,#00H;設定偏移量起始地址值0於A快取器

L1:JBP2.7,LOOP2;在LOOP1迴圈中,依據DPTR及A

MOVR0,A;依序由表格取出七個位元組資料送

MOVCA,@A+DPTR傳至P0作霹靂燈動作且檢查P2.7之變

MOVP0,A;化,以決定是否跳出LOOP1迴圈

MOVR5,#5

ACALLDELAY

MOVA,R0

INCA

DJNZR3,L1

AJMPLOOP1;無條件跳出LOOP1

LOOP2:MOVA,#55H;在L2迴圈中,不停的作奇偶燈互動換互亮滅的動作並檢查P2.7之變化,已決定是否跳出L2迴圈

L2:JNBP2.7,LOOP2

MOVP0,A

MOVR5,#5

ACALLDELAY

XRLA,#FFH

AJMPL2

DELAY:MOVR3,#38H;子程式,延遲時間=R5*20ms

D1:MOVR6,#F9H

DJNZR6,$

DJNZR7,D1

DJNVR5,DELAY

RET

TABLE:DB7EH,0BDH,0DBH,07EH;霹靂燈之表格資料

DB0DBH,0BDH,7EH

END