概論一:單晶片簡介

Download Report

Transcript 概論一:單晶片簡介

課程目標

了解何謂單晶片

學會MCS-51的基本應用電路

活用MCS-51單晶片的組合語言指
令

加強程式邏輯觀念
1
單元一
單晶片概論
2
輸
入
單
元
CU
(控制單元)
CPU
何謂微電腦?
ALU
(算術邏輯單元)
輸
出
單
元
記憶單元
3
單晶片微電腦和一般微電腦最
大的不同為就是:將微電腦的
各單元做在同一個IC中,使
何謂單晶片微電腦?
用時只要再加上一些簡單的電
路即可成為一個體積小且完整
的微電腦控制系統。
4
◆ 體積小
◆ 線路簡單
單晶片的優點
◆ 價格低廉
◆ 簡單易學
5
單晶片能做什麼?
6
編號
AT89C1051
AT89C2051
AT89C4051
AT89S51
AT89LV51
AT89C52
程式記憶體
1K
2K
4K
4K
4K
4K
資料記憶體
128
128
128
128
128
256
內含比較器
1
1
1
無
無
無
串列傳輸
無
有
有
有
有
有
ATMEL MCS-51系列單晶片
計時器/計數器
1
2
2
2
2
3
工作頻率
12MHz/3V
24MHz/5V
12MHz/3V
24MHz/5V
12MHz/3V
24MHz/5V
24MHz/5V
12MHz/3V
24MHz/5V
24MHz/5V
電源電壓
2.7~6.0
2.7~6.0
2.7~6.0
4.0~6.0
2.7~6.0
4.0~6.0
接腳數
20
20
20
40
40
40
看門狗裝置
無
無
有
無
無
無
7
AT89S51的特性(一)

工作電壓:4V ~ 5.5V。

工作頻率範圍:3.5MHz~33MHz

內含4KB的Flash Memory用來儲存單晶片的
程式,允許電子式多次清除與寫入。

內含128Btyes的資料記憶空間。

二個16bits的計時/計數器。
8
AT89S51的特性(二)

111個組合語言指令。

4個雙向的I/O Ports( P0、 P1、P2 、 P3)
共32個I/O點,其低態最大驅動電流為
10mA。
9
單晶片輸出驅動電路的方式

高態驅動方式--
以輸出為 Hi 時驅動電路

低態驅動方式--
以輸出為 Lo 時驅動電路
10
高態驅動方式(較不理想的方式)
ID≒
5V - 2V
30K
= 0.1mA
約30K
300
計算得知受限於IC內提
昇電阻,輸出電流較小,
對LED的驅動力較差,
亮度比較暗
11
低態驅動方式(理想的方式)
ID=
300
5V -2V
300
= 10mA
由電路得知,當IC輸出為Lo時內部晶體
飽和接地,因此流過LED的電流就由外
部電路決定;由於此時晶體呈飽和,因
此就算大電流流入,IC本身的消耗功率
不大亦可達到較大的電路驅動力
12
AT89S51的接腳功能
應用電路
13
VDD及GND
單晶片之電源輸入端,
其工作電壓範圍為:
4V~5.5 V
返回接腳圖
14
RST重置接腳
AT89S51重置動作為高態
動作,因此若要將單晶片
重置(即重新開機),就要
將此一接腳接至高電位並
R=10KΩ
維持2個機械週期即可令
C=10uF
系統達到重置。
右圖為一般單晶片電路常
用之Power On Reset及手動
重置電路的接法。
返回接腳圖
15
Power On Reset
Power On Reset指的是開機時自動重置,是利用電容暫態
的特性完成此一動作。
VO
Power On
CPU重置
VCC
VCC
重置完成
CPU
開始動作
t
5RC
16
XTAL1 、 XTAL2
為IC內部的反相振盪器的輸入/輸出接腳,可於兩腳間接
上一個石英振盪器及電容,或由XTAL1端將時脈訊號輸
入, 以提供單晶片工作時所需之時脈訊號。
外部振
盪訊號
12MHz
20PF
返回接腳圖
17
P01~P07(輸出/入埠接腳)
單晶片對外存取資料之接腳,為開汲極電
路結構,使用時需外加提昇電阻,否則IC
的輸出狀態會變成浮接。
18
P0的內部結構
19
P1、P2、P3(輸出/入埠接腳)
單晶片對外存取資料之接腳,內部皆已有約
30KΩ之提昇電阻。
另P3埠除了作為一般輸出/入使用外,也做為串
列傳輸、中斷輸入、計數器輸入之特殊功能使
用。
20
P1、P2、P3的內部結構
21
PORT3的特殊功能接腳
P3.0:RXD(串列輸入埠)
P3.1:TXD(串列輸出埠)
P3.2:(外部中斷0)
P3.3:(外部中斷1)
P3.4:T0(外部計時/計數輸入0)
P3.5:T1(外部計時/計數輸入1)
返回接腳圖
22
AT89C2051的LED控制電路
23
AT89S51的記憶體結構

程式記憶體(ROM)
由Flash RAM構成,因此資料可輕易的以電
壓的方式寫入及抹去,主要是儲存單晶片
的執行程式。

資料記憶體(RAM)
或統稱為暫存器,主要是存放程式執行過
程中所產生的數據資料,整個記憶體在結
構上又可分為一般資料存取區和特殊功能
暫存器(SFR)兩大區塊。
24
程式記憶體 (一)
AT89S51的程式記憶體
(ROM)共有4KB,
其位址範圍為
0000H~0FFFH ,其程
式記憶體可以外加擴
充。
0FFFH
0002H
0001H
0000H
25
程式記憶體 (二)
在4KB的程式記憶體中有六個特殊位址,其功
能及說明如下:

0000H
程式執行的起始位址(即系統重置後系統
執行程式的第一個位址)。
一般我們在寫程式時都會在這一個位址加
上跳躍的指令直接跳到程式的真正進入點。
26
程式記憶體 (三)

0003H
這個位址為外部硬體中斷0(INT0)的進
入點。就是說當89S51硬體中斷0發生時,
程式計數器PC會被設為0003H;因此中斷
0一但發生且被CPU認可時,它就會自動
的跳到此一位址去執行所要做的中斷服
務程式。
27
程式記憶體 (四)

000BH
這個位址為計時/計數器0(TIMER0)溢
位中斷的進入點。就是說當89S51的計時/
計數器0產生溢位且被認可時,程式計數
器PC會被設為000BH,此時CPU會自動的
跳到此一位址去執行所要做的中斷服務程
式。
28
程式記憶體 (五)

0013H
這個位址為外部硬體中斷1(INT1)的進
入點。就是說當89S51硬體中斷1發生時,
程式計數器PC會被設為0003H;因此中斷0
一但發生且被CPU認可時,它就會自動的
跳到此一位址去執行所要做的中斷服務程
式。
29
程式記憶體 (五)

001BH
這個位址為計時/計數器1(TIMER1)溢位
中斷的進入點。就是說當89S51的計時/計
數器1產生溢位且被認可時,程式計數器
PC會被設為000BH,此時CPU會自動的跳
到此一位址去執行所要做的中斷服務程式。
30
程式記憶體 (六)

0023H
這個位址為串列通訊中斷的進入點。就是
說當AT89S51串列埠接收或傳送資料完畢
時產生中斷請求且被CPU認可時,程式計
數器PC會被設為0023H;因此CPU會自動
的跳到此一位址去執行所要做的中斷服務
程式。
31
資料記憶體
00FFH
特殊暫存器
(SFR)
80個位址,可自由使用區域,一般
可規劃為一般資料存放區及堆疊使
用
一般資料區
80個位址,可自由使用區域,一般
可規劃為一般資料存放區及堆疊使
用
可位元定址區
16個位址共128個位元,存取時可以
Byte為單位亦可以位元為單位
0080H
007FH
0030H
002FH
0020H
001FH
0000H
四個暫存器庫
32個位址,8個位址為一個單位,其
編號皆為R0~R7,可由PSW選擇使
用
32
資料記憶體-四個暫存器庫
RS1
RS0
暫存器庫
位 址
0
0
RB0
0000H~0007H
0
1
RB1
0008H~000FH
1
0
RB2
0010H~0017H
1
1
RB3
0018H~001FH
0000H~001FH共32個位址,可平均分為四組,每一組
皆以R0~R7來代表8個位址,使用時每一時間只能用
其中一組,至於使用哪一組,則可用PWS中的RS1、
RS0來設定。
33
資料記憶體-可位元定址區
7F
7E
7D
7C
7B
7A
79
78
2FH
77
76
75
74
73
72
71
70
2EH
6F
6E
6D
6C
6B
6A
69
68
存取時有兩種方式:
2DH
67
66
65
64
63
62
61
60
2CH
5F
5E
5D
5C
5B
5A
59
58
2BH
57
56
55
54
(2)
53 01H:同(1)之存取位元
52
51
50
2AH
4F
4E
4D
4C
47
46
45
44
3F
3E
3D
3C
4B
4A
49
48
29H
註:為了避免和一般8位元資料存取時
43 混淆,故在指令集中有專為位元存
42
41
40
28H
3B 取設計之指令。
3A
39
38
27H
37
36
35
34
33
32
31
30
26H
2F
2E
2D
2C
2B
2A
29
28
25H
27
26
25
24
23
22
21
20
24H
1F
1E
1D
1C
1B
1A
19
18
23H
17
16
15
14
13
12
11
10
22H
0F
0E
0D
0C
0B
0A
09
08
21H
07
06
05
04
03
02
01
00
20H
(1) 20H.1:代表0020H的第1位元
34
PWS-程式狀態字組
主要是用來記錄CPU在執行「數學」或
是「邏輯運算」之後所產生的各種狀態
以及暫存器庫的選擇 。
PSW
7
6
5
4
3
2
CY
AC
F0
RS1
RS0
OV
Carry Flag Auxiliary Carry
Flag flag
進位旗標 輔助進(借)位旗標
一般旗標
暫存器庫選
Overflow
擇位元
溢位旗標
1
0
P
Parity
同位旗號
35
結論
單晶片程式的設計,說穿了就是對單晶
片內的記憶體資料做存取及運算,因此
若想要寫好單晶片程式,就必需要對其
記憶體的組成有基本的認知。
36
AT89S51的組合語言指令
共有111個指令 ,可分為下列五大類:

算數運算指令

邏輯運算指令

資料搬移指令

位元操作指令

跳躍指令
37
AT89S51的組合語言語法
每一列指令可分為下列四個欄位:
標記欄
運算碼
運算元
註解
Label:
Operation
Operands
; Commend
為AT89C2051之指令
為指令執行時之相關資料。
用來說明此一敘述之功能,
可代表將來此行程式燒錄在ROM中的位址。這個
依指令的特性,這個欄位
增加程式之可讀性。(此註
部份在撰寫程式時只需給它一個名稱(第一個字
中運算元的個數可能是1個、
解在做組譯時會略過)
不可為數字或是使用保留字元),將來組譯器在
2個或是沒有;這裏所放的
資料可能是數值、暫存器
組譯時就會自動幫我們算出真的的位址值。如此
位址或是標記名稱。
做法可以省去我們在做程式開發時的麻煩。(註:
這個欄位為非必要性欄位,可有可無)
38
AT89S51的程式範例
標記欄
運算碼
運算元
註解
Label:
Operation
Operands
; Commend
START:
MOV
R0,#7
;令R0=7
目的,來源
本行指令執行完後,R0=7
39
AT89S51的定址法
所謂的定址法指的是「CPU存取資料的方
法」;可分為下列五種---

立即定址法

直接定址法

間接定址法

暫存器定址法

索引定址法
40
立即定址法
運算元中的一個就是常數(即是將數值資
料直接存入暫存器中)。
MOV
R3 , #7
找到資料記
憶體位址
將立即資料放
入指定位址
00H
04H
00H
07H
03H
00H
02H
00H
01H
00H
00H
41
直接定址法
就是將某個位址的內含值傳到另一個暫存
器中。
MOV
20H , 22H
找到資料來源
位址
找到目的
位址
將資料複製
到目的位址
00H
24H
1FH
23H
A0H
04H
22H
06H
21H
04H
20H
42
間接定址法
就是利用R0、R1當成指標,而指標的內含值即記憶體
位址。這種方式可以取得所有暫存器及程式記憶體或
資料記憶中任一個位址的資料。
MOV
R0 , #4
MOV
A , @R0
從R0的內含值找到04H的
先將04H資
位址,再將04H位址的內
料存入R0
容複製到A
@代表間接定址,
即R0的值代表的
是要定址的位置
00H
1FH
.
.
1FH
E0H
00H
03H
00H
02H
00H
01H
00H
04H
00H
04H
43
暫存器定址法
R0~R7和累積器A間的資料存取 。
MOV
R0 , R2
找到資料來源
位址
找到目的
位址
將資料複製
到目的位址
00H
04H
1FH
03H
A0H
02H
06H
01H
04H
A0H
00H
44
索引定址法
利用DPTR暫存器為基底值,然後將這個基底值加上
累積器的值,得到一個位址值然後以此位址值取出其
中的內容,這個方式主要是用於查表 。
45
AT89S51的指令集符號說明
符號
說明
A
代表累積器
Rn
代表暫存器R0~R7,其中n所指的就是0~7的值
direct
代表可直接定址的位址值
@Ri
間接定址到Ri指向的DATA Memory的位址,i只可為0或1
#data
代表一個8bit的立即資料值
#data16
代表一個16bit的立即資料值
bit
位元位址
rel
這是程式跳躍時的相對位址 (在程式中rel為一標記名稱)
Addr16
代表16bit的位址值,最大可跳64K
Addr11
代表11bit的位址值,最大可跳2K
46
AT89S51的程式結構
;===以下是變數宣告區===
I EQU 00H
;===以下是程式區 ===
ORG
0
START:
MOV R0,#0
DJNZ R0,$
MOV SP,#60H
.
.
AGAIN:
主程式
AJMP AGAIN
END
47
AT89S51的第一個程式
START:
AGAIN:
ORG 0
MOV
R0, #0H
DJNZ
R0,$
MOV
SP,#60H
MOV
P1, #0
MOV
P1, #0FFH
AJMP
AGAIN
48
AT89S51的第一個程式改良
START:
AGAIN:
DELAY:
D1:
ORG
MOV
DJNZ
MOV
MOV
ACALL
MOV
ACALL
AJMP
MOV
MOV
DJNZ
DJNZ
RET
END
0
R0, #0H
R0,$
SP,#60H
P1, #0
DELAY
P1, #0FFH
DELAY
AGAIN
R0,#0
R1,#0
R1,$
R0,D1
49
END
50