特別
1.其變數的定義,無大小寫分別
8051的架構
微單晶--CPU,Memory,I/O
1.Memory 架構
除了無ROM型的8031及8032外,MCS-51之記憶体包括程式記憶体(ROM)與資料記憶体(RAM)
標準的8X51--4 kB ROM 及 128b RAM,而標準的8032 及8X52則為8K ROM ,256 b RAM
最多可以擴充到64K B(RAM,ROM)
1.1程式記憶体
存程式的位置,而CPU將自動從程式memory 讀取所要執行的指令碼.而MCS-51可選擇內部,外部部 程式記憶体
1.8031,32 ,沒有內部的程式記憶体,
2.由#EA來控制(code banking
3.MCU reset後,從ROM的0000H 位置開始執行,以其程式記憶体順序執行,故要在其0000H加上一個跳躍
(若卻改變其
1.Adjust the address of the reset vector.,在starup.a51中
PUBLIC ?C_STARTUP
CSEG AT 0 ;------------this change
?C_STARTUP: LJMP STARTUP1
2.Adjust the addresses of the interrupt vectors
provides the INTVECTOR directive you can use to adjust where interrupt vectors are located.
ex;C51 PROGRAM.C INTVECTOR(0x4000)
3.Locate program code above the reset and interrupt vectors.
如何建立其程式是由指定位址的ROM file,the BL51 Linker assumes that code memory
You can use the CODE directive to specify the starting location for code memory
1.2資料記憶体(default 128 b
"在此其內部及外部 RAM可以共存",但在存取資料記憶体時,所採用的指令並不一樣(MOV,MOVX
1.其可分為三個區塊
1.1可直接定址或間接定址(0000~007F) ,DATA for direct access
1.2只能間定址(0080~00FF) ,idata for indirect access .Rx
1.3特殊功能暫存器直接定址(0080~00FF),sfr
2.可直接定址或間接定址(0000~007F) ,DATA
在此128 b又可分為三個部分
2.1暫存器庫區
0000~001F,分為4個register bank(RB0,RB1..RB3);又每一blank分為8個register(R0,R1...R7)
任何時間,只有使用其中一個register blank(由其程式狀態定組(PSW中RS1,RS0來控制
(在MCU rest時其堆疊指標(SP)是指向07H,故需要改到30H的位置以上
2.2可位元定址(0080~008F
共16B(128bit)指的是可以指定存取一個位元(bit)
2.3一般資料及堆疊
8051中斷架構
共有三種型態的中斷
1.外部中斷
2.計時器中斷
3.串列埠中斷
外部中斷.相關控制暫存器
1.計時計數器控制暫存器 TCON
2.中斷致能...... IE
3.中斷優先 IP
TCON:記錄各個中斷源所產生的動作旗標,並包含計時器啓動控制位元
B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
TR1--計時器1 啓動位元 TR0---
IE1--外部中斷1動作旗標.硬清;IE0----
IT1--外部中斷1動作型式選擇,;IT0----
1--下緣;
IE:致能各中斷
B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
EA | ET2 | ES | ET1 | EX1 | ET0 | EX0 |
EA---set 1,依個別的致能位元決定
unset,disable all
ET2,1,0---計時器
ES--串列
EX1,0---外部中斷
IP:各中斷的優先
B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
PT2 | PS | PT1 | PX1 | PT0 | PX0 |
IF user set one of bit,then which is hight
計時器中斷:相關控制暫存器
TCON ;計時器控制暫存器
TMODE ;計時器工作模式
TH0 ;計時器0高8bit
TL0 ....
TH1
TL0
TCON..........同上
TMODE:模式選擇
mode 0:13 bit 計時
mode 1:16 bit 計時
mode 2:reload 計數,TLx真正計數脈波的計數器,THx放置重新載入值的暫存器
mode 3:****將計時器0分為2個獨立的8位元計時器,由TL0(TF0,TH0(TF1;且其計時器1仍可使用在模式0,1,2;可用於使用於串列埠的鮑率
B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 |
C/T :c/t=0,計時;c/t=1,計數
M0,1;動作模式,
串列埠中斷;相關控制暫存器
mode 0:
做串列傳送I/O控制,非串列通訊.由TXD送出移位脈波,由RXD送出或接收串列資料
單純的8位元資料,同步脈波為1/12.(74164,74165
work fre:1/12
mode 1:
串列通訊,由TXD傳送,由RXD接收.資料由10位元組成.first bit ,起始位元.最後為終止位元
由timer 1設定
timer 1 的模式需為mode 2(reload,TH1做重載計時值
work fre==(2^smode) /32 X fre/(12*[256-TH1])
mode 2:
同mode 1,但多了一個位元,可用於程式設定或由scon 's bit 3 (多處厘機控制.
只有工作頻率1/32或1/64
mode 3:
同mode 2.可改變其工作頻率
B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
smo,1 : 設定工作模式(sm0=0,sm1=0---mode 0;sm0=1,sm1=0---mode 2
SM2 :用於mode 2,3(多處理機時
REN :串列介面接收位,set,表示接收致能
TB8 :mode 2,3所送出的bit 9資料位元.
RB8 :mode 2,3..........................
TI :串列傳輸資料發送中斷,當傳送一筆資料後(mode 0,send 8 bit;others mode 送出停止位元時
將此設為1.(需由軟体清除
RI :串列傳輸資料接收中斷,當接收一筆資料後(mode 0,send 8 bit;others mode 接收停止位元時
將此設為1.(需由軟体清除
沒有留言:
張貼留言