Microsoft PowerPoint - MicroProcessor05_MSC51 HW

Similar documents
DPJJX1.DOC

2-2 第二章系統分析 XTAL1/ (19/18): 時脈接腳 1. 使用內部振盪器 C1 XTAL1 C2 VSS 2. 使用外部時脈 圖 2-2 使用內部振盪器接線圖 時脈輸入 空接.. 時脈輸入 XTAL1 XTAL1 時脈輸入 XTAL1 VSS VSS VSS (a) (b) (c) 圖

目 录

PowerPoint 簡報

Microsoft PowerPoint - chap3.ppt

微處理機

Microsoft Word - 專題封面.doc

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63>

Microsoft PowerPoint - chap4.ppt

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

Microsoft PowerPoint - chap2.ppt

PowerPoint 簡報

51 C 51 isp 10 C PCB C C C C KEIL

Microsoft PowerPoint - chap12.ppt

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C

Microsoft Word 定址法實驗.doc

1 TPIS TPIS 2 2

投影片 1

教科書:系統程式 - 第 2 章、電腦的硬體結構

Microsoft PowerPoint - chap5.ppt

untitled

微處理機期末專題

» n ¹ú KS0108 x ÍÍÙ q n KS0108 KS KS0107 KS0108 KS *32 128*64 192*64 KS0108 KS0108 KS0107 KS =4096 RAM RAM LCD 2 KS

W77E58中文手册

TSINGTEK DISPLAY CO.,LTD LCD CONTROLLER & DRIVER ST7920 OR EQUIVALENT (f) 639 2A f B1

untitled

12232A LED LED LED EL EL CCFL EL CCF

1 CPU

Ps22Pdf

System Design and Setup of a Robot to Pass over Steps Abstract In the research, one special type of robots that can pass over steps is designed and se

HD61202 HD HD61203 HD61202, HY HY HD61202 HD61202 HD61203 HD =4096 RAMRAM LCD 2HD HD HD /32--

() () () () () () () () DDRAM () II

逢 甲 大 學

untitled

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

untitled

ROP_bamboofox.key

dfgdafhdafhdafhdafh

Microsoft Word - 目錄new.doc

Tel:

CC213

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

单片机原理及应用实验指导书.doc

Microsoft Word - ISSFA-0109_B_SM59264_WDT_ APN_TC_.doc

Microsoft Word - ISSFA-0237_A_SM39R_series_EEPROM_APN_TC_.doc

<4D F736F F D20B9F9B0EABBCDBBAFAB48DEB3B4C1A5BDB3F8A7692E646F63>

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x

7688使用手冊V10.doc

幻灯片 1

Microsoft Word - PLC與GP接線說明_缺WDH_2.doc

Microsoft Word - IRFWX_A051_C_SyncMOS_with_STC_APN_SC_.doc

Microsoft PowerPoint - C15_LECTURE_NOTE_08.ppt

USB解决方案.ppt

学习MSP430单片机推荐参考书

Microsoft PowerPoint - chap11.ppt

第5章:汇编语言程序设计

邏輯分析儀的概念與原理-展示版

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

1

PCM-3386用户手册.doc

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

高雄縣高英高級工商職業學校

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

Microsoft PowerPoint - C15_LECTURE_NOTE_15

<4D F736F F D FB971BEF7BB50B971A46CB8735FB773A55FA5ABA5DFB7E7AADAB0AAAFC5A475B77EC2BEB77EBEC7AED55FA97EAE61C0F4B9D2B4BCBC7AB1B1A8EEA874B2CE2E646F63>

ICD ICD ICD ICD ICD

PIC16F F MPLAB 08 16F LED 15 LED

µPSD3000 系列

中文手册

Microsoft Word - PA.doc

目录

例 如, 一 个 含 有 2000 个 记 录 的 文 件, 每 个 磁 盘 块 可 容 纳 250 个 记 录, 则 该 文 件 包 含 8 个 磁 盘 块 然 后 对 该 文 件 作 二 路 归 并 的 外 排 序, 每 次 往 内 存 读 入 两 个 磁 盘 块, 排 序 后 再 写 回 磁

2 PIC PIC 1 / CPU PIC MCU PIC RC

Microsoft Word - FM12232C.doc

Microsoft PowerPoint - C15_LECTURE_NOTE_08.ppt

Microsoft Word - SMB-63-2(簡体字).doc

投影片 1

单片机学习教程

Microsoft Word - 透析8051之迴圈控制方法.doc

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica

a b c d e f g C2 C1 2

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

Microsoft Word - ~ doc

untitled

MCS FCC

Bus Hound 5

FM1935X智能非接触读写器芯片

TH2512/TH2512A Tonghui Electronics reserves the right to make changes at any time without notice in order to improve design and supply the best possib

四位微控制器ML64168_ _.doc

Transcription:

微處理機原理 Unit 5: MCS-51 Hardware 中原大學機械工程學系張耀仁 justin@cycu.edu.tw Intel 8051 Intel 8052/8031 MCS-51/52 系列比較 Intel 在 1981 年首先推出第一個 8 位元的 8051 微控制器 8052 與 8031 特性上幾乎相同 任何在 8051/8031 上所發展的軟體程式, 均可直接在 8052 上執行, 反之不然 系列比較 標準的 MCS-51 微控制器 : RAM: 128 位元組 ROM: 4K 位元組 定時器 : 2 個 串列通信埠 : 1 個 通用並列 I/O 埠 : 4 個 (8 位元 ) 特性 8031 8051 8052 ROM 0 KB 4 KB 8 KB RAM 128 B 128 B 256 B 定時器 2 2 3 I/O 埠位元 32 32 32 串列通信 1 1 1 中斷來源 5 5 6 Intel 8751/8752 Atmel AT89C51 MCS-51/52 系列比較 可以使用紫外光 ( 波長 2537Å) 清除的可規劃 ROM (UV- EPROM) 將快閃記憶體技術整合於 MCS-51 系列比較 MCS 51/52 微控制器系統架構 (15) 外部中斷輸入 中斷要求控制器 (INT controller) 微控制器系統架構 ROM(4KB) ROM(4KB) RAM(128B) RAM(128B) 定時器 0 定時器 1 定時器 2 計時器輸入 CPU 時脈產生器 BUS 控制 4 I/O 埠串列埠 8052 擴充部分 P0 P1 P2 P3 位址 / 資料 TxD RxD 接腳說明 說明 (1) Port 1 Port 0 Port 2 xx: 表示須接高電位, 當此接腳由高電位變成低電位時致能 1

接腳說明 8051 pinouts 共 40 接腳, 其中 32 接腳作為 I/O port lines 每個 I/O 埠有 8 條 I/O 線都是雙向, 分成四個 I/O 埠 (P0 P1 P2 P3), 總計 32 條 I/O 線 (48,4) 24 接腳具雙重用途 : I/O Control line Address or data bus I/O 埠 每個 I/O 架構上都有栓鎖器 輸出驅動器和輸入緩衝器 (48,5) 靜態特性 I/O 埠 (P0~P3) 所送出的訊號會被栓鎖, 除非再次的更動, 否則訊號固定不變 ( 稱為靜態訊號 )(48,8) 程式設計者只要在 SFR 填入特殊暫存器的資料, 便可以在 I/O 埠上得到相對應的訊號 (48,10) 栓鎖器以典型的 D 型正反器代表, 兩個 FET 強化輸出電流能力 ( 輸出驅動器 )(48,19) Port 0 Pins 32 39 可位元定址 ( 個別設定接腳為輸入或輸出 ) Mini-component design: 作為一般用途 I/O 埠 Large design with external memory: 當存取外部記憶體時, 作為較低 8 位元位址匯流排 (A0-A7) 和資料匯流排 (D0-D7) Port 0 動作 當寫入指令 ( 如 : MOV P0, A ) 操作埠時, 會呈現靜態輸出特性 若送出 1 時 D 型正反器 Q 為 1 多工器受選擇線控制 ( 此時選擇線為 0 開關下切 ), 所以 Q1 OFF, Q2 的輸入腳也為 0,Q2 OFF, 接腳輸出呈現高阻抗 Z 狀態 資料線送出 0 時,Q2 ON, 所以接腳接地即 0 訊號 Port 1 Pins 1 8 可位元定址 與外部元件之介面 Port 2 Pins 21 28 可位元定址 作為一般用途 I/O 埠 當存取外部記憶體時, 作為較高 8 位元位址匯流排 (A8-A15) Port 3 雙重用途 I/O 埠 可位元定址阜腳功能阜腳功能 P3.0 RXD( 串列埠輸入 ) P3.4 T0( 計時器 0 外部時脈輸入 ) P3.1 TXD( 串列埠輸出 ) P3.5 T1( 計時器 1 外部時脈輸入 ) P3.2 /INT0( 外部中斷 0 輸入 ) P3.6 /WR( 外部資料記憶體寫信號 ) P3.3 /INT1( 外部中斷 1 輸入 ) P3.7 /RD( 外部資料記憶體讀信號 ) 電源與振盪電路 V SS : 電路之地電位 (GND) 接腳 V CC : 電源接腳, 須接 +5 V XTAL 在 XTAL1 和 XTAL2 腳上, 跨接石英 (Crystal) 或陶瓷震盪器便可供應晶片內部所需要的時脈 (15,3) 石英或陶瓷震盪器典型值約 1 M~12 MHz, 電容則採 10 p~30 pf (15,5) 常用石英晶體 :12 MHz 電容為 30 pf ± 10 pf 2

系統時序 內部振盪器產生狀態序列 ( 若使用 12 MHz 石英晶體振盪器 ) 每秒產生 12 百萬個振盪週期 (Clock cycle) 每一個機械週期 (Machine cycle) 由 6 個狀態序列 (State Cycle,S1 S6), 即 12 個振盪週期所組成 (16,2) 每一個狀態序列 (State) 有 2 個震盪器週期 (OSC Cycle), 即 P1(Phase 1) 和 P2(Phase 2) (16,3) 每個狀態週期包含有兩個 指令提取 解碼 執行 完成一個指令通常需要一個機械週期 1 機械週期 = (16,5) f XTAL 為石英震盪頻率 XTAL 震盪頻率為 12 MHz, 就表示一個機械週期為 1 µs (17,1) T clock = 1/12 MHz = 83.33 ns 83.33 ns 12 = 1 µs MCS-51 指令處理資料速度通常為 µs( 微秒 ) (13,14) 標準運作時脈為 12 MHz, 指令周期約在 1 µs~4 µs 區間 (17,3) 重置 RESET 重置信號輸入接腳 正常的重置方法 :RST 接腳必須由 1 準位觸發重置程序後, 再回復電位為 0, 讓單晶片恢復正常執行狀態 (19,2) 必須維持至少 2 個機械週期 所有埠腳 (Port 0 Port 3) 皆為輸入狀態 : 讓 I/O 埠 32 個接腳全部出現高態 ( High ) 電氣訊號 (17,8) 內部相關的暫存器會被重置為特定的內容值, 其中, 程式計數器 (PC) 被設為 0000H PC=0000H, 從程式記憶體 0000H 處開始執行指令 (19,5) 只需接一個電容器至 +V CC 通常會在 RESET 腳用一個 8.2 ~ 10 kω 電阻器接地, 以縮短開機重置時間 外部程式記憶體相關腳位 /EA (External Access) 存取外部程式記憶體的致能腳 須接 +V CC /EA = 1,CPU 執行內部程式記憶體 (ROM),8051 為 4KB, 若超過此容量,CPU 將強迫提取外部程式記憶體 接地時 (/EA = 0) 內部程式記憶體失效,CPU 被迫只讀取外部程式記憶體 /PSEN (Program Store Enable) Pin 29: Output signal 程式儲存致能信號 : 是 8051 晶片讀取外部程式記憶體的激發信號, 當晶片在讀取外部記憶體時, 會送出此信號到記憶體上的輸出致能腳促使記憶體送出程式碼 外部程式記憶體相關腳位 ALE (Address Latch Enable) Pin 30 位址閂鎖致能信號 當 CPU 對外部裝置存取資料時, 此腳輸出脈波之負緣可用來鎖住由 P0 送出之低位元組位址 ALE is the signal that latches the address into an external register during the first half of a memory cycle. This done, the Port 0 lines are then available for data input or output during the second half of the memory cycle 程式計數器 程式計數器 (Program Counter, PC) 16 位元暫存器 CPU 執行指令會依據 PC 暫存器內容 ( 紀錄 ROM 位址指標 ) 指示, 擷取燒錄在 ROM 的指令 (19,10) PC 記錄下一個要執行指令的位址 (19,11) 可定址之最大記憶體空間為 64KB (2 16 ) PC 內含值為 0000H CPU 每提取一個指令碼後,PC 內容會自動加 1 特殊情況 跳躍指令 : 如 JMP 副程式呼叫指令 : 如 CALL 硬體中斷 3

ORG 指令 (20, 範例 2-2.2) 使用 ORG 指令進行定位, 告訴組譯器把隨後的指令置放於程式記憶體 (ROM) 的位址 ORG 為虛擬指令並不會佔據任何記憶體空間 例 :ORG 0000H MOV P1, #11111110B CALL DELAY MOV P1, #11111110B 指令 ( 此指令共需要 3 個機械碼 ) 燒錄於程式記憶體 (ROM) 位址 0000H 0001H 0002H 上 CALL DELAY 指令 ( 此指令共需要 2 個機械碼 ) 燒錄於程式記憶體 (ROM) 位址 0003H 0004H 上 MCS-51 內部記憶體 內部記憶體 程式記憶體 (ROM):4KB 資料記憶體 (RAM) 資料儲存區 (General-purpose storage) 可位元定址區 (Bit-addressable storage) Internal RAM: 128 Bytes 暫存器庫區 (Register banks) (Special function registers, SFR) A 累加器 B 暫存器 程式狀態字元 堆疊指標 資料指標暫存器內部資料記憶體使用 MOV 指令存取 程式記憶體 原始程式 (.asm 檔 ) 翻譯成執行檔 (.hex 檔 ) (21,8) 執行檔內部會記錄轉換後機械碼 使用燒錄器可以把這些機械碼存入 MCS-51 單晶片內部的 ROM 上 每個指令的機械碼大小並不一致, 可能佔據 1~3 位元組 (21,15) 程式記憶體 (ROM) 儲存程式碼 (4KB: 0000H ~ 0FFFH) 7 個特殊用途位址 : 存放中斷副程式起始位址 程式計數器與計數器與程式程式記憶體關係 程式計數器 16 位元暫存器 MCS-51 之 ROM 位址線共計 16 條 (16 位元 ) (25,4) PC0~PC15 分別控制著 16 條程式位址線, 藉著程式計數器可改變欲抓取的指令 (25,6) 16 條位址選擇線, 共可以選擇 64 Kbytes 的容量 (25,8) 事實上 8051 只常駐 4 Kbytes 的程式, 必要時可以使用外部擴充的方式, 使單晶片程式容量達到 64 Kbytes (25,9)(25,11) 外部程式記憶體 當 /EA=1 時 ( 即 /EA 接至 VCC), 表示不使用外部擴充方式, 此時 8051 所執行得的是來自於單晶片內部 (25,13) 若 /EA=0(/EA 接至 GND), 則 8051 內部 Flash ROM 失效, 其抓取的程式完全由外部記憶體提供 (25,14) 程式從 ROM 位址 0000H 處開始執行 (26,6) 特殊情況, 會直接更改 PC 值 (26,9) 分支跳躍指令 ( 含無條件跳躍 條件跳躍 ) 呼叫副程式 接受中斷請求中斷源位址 重置 (RESET) 外部中斷 0 (/INT0) 計時 / 計數器 0 中斷 外部中斷 1 (/INT1) 計時 / 計數器 1 中斷串列埠中斷計時 / 計數器 2 中斷 (8052) 0000H 0003H 000BH 0013H 001BH 0023H 002BH 分支跳躍 跳躍表示方式 (26,15) Rel 非代表程式記憶體的實際位址, 而是相對偏移位址 (Relative Offset) 由於 Rel 為一帶符號之 8 位元值, 代表此類型的跳躍空間僅能在 -128 Bytes 到 +127 Bytes 之間 Addr11 記載著實體位址 (Address) 的 11 個低階位址 執行此種跳躍時, 目前 PC 值較低階 11 位元會被這 11 位元 (Addr11) 取代, PC10~PC0 會更改, 但 PC15~PC11 此 5 位元不變 此類型的跳躍空間僅在 2 Kbytes(2 11 =2K) 的位址範圍有效 Addr16 記載著 16 位元的實際位址 (Address) 表示 PC15~PC0 會全部更改, 其跳躍範圍可在程式記憶體 64 Kbytes 任何地點 (2 16 =64K) 4

分支跳躍指令 (28,7) SJMP 僅限於下個指令 -128~+127 Bytes 之間 佔據 2 Bytes 之程式記憶體空間 AJMP 有 2 Kbytes 範圍 LJMP 則有 64 Kbytes 範圍 程式設計師在撰寫原始程式時, 絕大部分用標記去指定目標位址 (27,1) 指令跳躍能力佔據容量 SJMP REL -128 到 +127 Bytes 2 Bytes AJMP ADDR11 2K Bytes 區塊 2 Bytes LJMP ADDR16 64K Bytes 任何位址 3 Bytes 副程式 呼叫副程式指令 (30,4) ACALL ( 絕對呼叫副程式 ) 必須在距離副程式 2 Kbytes 範圍內 LCALL( 長程呼叫副程式 ) 可以在 64 Kbytes 任何範圍內 動作 (30,9) 當呼叫副程式時, 下一個指令的位址會被自動地推入 (PUSH) 堆疊 (Stack) 記憶體內部儲存 副程式之標記位址會被載入 PC 內, 並轉移至副程式執行指令 執行到 RET 後, 系統再自動地從堆疊區取出 (POP) 剛才推入的位址回 PC, 以使程式恢復到主程式繼續執行程式指令 注意 (30, 範例 2-3.8) 副程式不可以使用程式跳躍指令 ( 如 :JMP 指令 ) 跳到副程式任何標記上, 必須使用 ACALL 或 LCALL 指令來進行呼叫 程式流程 MCS-51 指令執行 在正常的情況下,PC 逐步遞增並執行指令, 但是一旦遇到程式跳躍指令, 則會使程式流程改變 由於各個時間點只能執行一個指令, 常稱為單步執行 (Single-Step Execution) (31,3) 迴圈設計 可以在主程式的最後一個指令, 使用程式跳躍指令, 跳回先前的標記, 重複執行主要的功能 (31,15) 原地踏步 如果不想重複進行主功能, 程式流程一直重複在一指令上踏步 (32,1) HERE: JMP HERE( 或者簡寫成 JMP $) 資料記憶體 RAM MCS-51 在 8051 內部提供了 128 Bytes 的 RAM (33,1) RAM 為資料記憶體 (Data Memory) 或內部記憶體 (Internal Memory) (33,2) 較低位址 128 Bytes 的資料記憶體 -- 位址編號 00H~7FH 較高位址 128 Bytes 的資料記憶體 -- 位址編號 80H~FFH (8052 才有 ) SFR(Special Function Register): 位址編號 80H~FFH 直接定址或間接定址 RAM 資料儲存區可位元定址區 暫一存般器用途 不可作為間一接般資存料取記區憶體使用 資料儲存區 資料儲存區 共 80 個 byte, 位址 30H ~ 7FH 只能以位元組定址使用 用途 由鍵盤輸入的數值儲存於此區 可將堆疊指標 SP 指至此區, 當作堆疊器 (Stack) 使用 定址方式 存取資料時, 必須指明欲存取資料的位址, 此稱定址模式 (34,6) 直接定址 (Direct addressing) 把直接位址放在指令上 (34,8):MOV A, 5FH a byte of data 間接定址 (Indirect addressing through R0 or R1) 藉著 @R0 或 @R1 指向欲抓取資料的定址 (34,10) MOV R0, #5FH immediate add. To move the value 5FH into R0 MOV A, @R0 indirect add. To move the data pointed at by R0 into the accumulator 5

間接定址說明 @ 為間接定址模式之表示符號, 其後為位址指標, 位址指標不是 R0 就是 R1 (38, 範例 2-4.4) MOV A,@R0( 將 R0 所指向位址的位元組資料搬到累積器 ACC) MOV A,@R0 ( 正確的間接定址 ) MOV @R1,A ( 正確的間接定址 ) MOV A,@R2 ( 錯誤的間接定址 ) MOV @R7,A ( 錯誤的間接定址 ) 範例 2-4.5 直接定址間接定址 MOV A,39H MOV 6AH,A MOV 07H,#BAH MOV R0,#39H MOV A,@R0 MOV R0,#6AH MOV @R0,A MOV R1,#07H MOV @R1,#BAH 可位元定址區 RAM 位址 00H~7FH 可以接受直接定址模式 間接定址模式兩種 (35,1) 可位元定址區 (Bit addressable RAM) 共 128 個可位元定址之位元 (16 個 byte), 位址 20H ~ 2FH (37,3) 每個位元可單獨用位元定址法直接定址 每個位元可設定 (Set) 清除 (Clear) AND/OR 等運算 Example: SETB 67H to set bit 67H SETB 26H.3 將 26H 的 Bit 3 設為 1 暫存器庫區 暫存器庫 (Register bank) 共 32 個 byte, 位址 00H ~ 1FH 分為 4 個暫存器庫, 每個暫存器庫有 8 個一般用途暫存器 R0 ~ R7 預設暫存器庫為 Bank 0 ( 位址 00H ~ 07H) Example: MOV A, R5 read the contents of address 05H into A 暫存器庫之選擇 以指令改變程式狀態字元 PSW 中的暫存器庫選擇位元 RS1 與 RS0 RS1 (PSW.4) RS0 (PSW.3) 暫存器庫 0 0 Bank0 0 1 Bank1 1 0 Bank2 1 1 Bank3 系統重置後, 堆疊指標 SP 會設定為 07H, 若堆疊動作開始時, 資料將由位址 08H( 即 Bank 1 的 R0 處 ) 開始存放 (Special Function Register,SFR) 位址 80H ~ FFH 共 128 位址, 但大部份未定義, 僅其中 21 SFR 位址有定義 定址方式 內部記憶體位址 80H ~ FFH: 只能以間接定址方式存取資料 : 只能以直接定址方式存取資料 Example: SETB 0E0H set bit 0 in the accumulator, leaving the other bits unchanged A 累加器 (Accumulator) 簡稱 ACC 或 A 可位元定址 算數運算 邏輯運算及資料搬移等工作, 都需要藉由累加器來完成 B 暫存器 可位元定址 用於乘法和除法的運算 乘法 : 運算結果的高位元組存入 B 暫存器中, 而低位元組存入 A 累加器 除法 : 運算結果的商數存入 A 累加器中, 而餘數存入 B 暫存器中 輸出 / 輸入埠暫存器 8051 具有 4 個 8 位元的輸出輸入埠 經由這四個輸出輸入埠與外界進行資料交換 分別為資料記憶體 80H 90H A0H B0H 等四個位元組 (byte), 並一輸出 / 輸入埠分別命名為 P0 P1 P2 及 P3 當軟體程式對輸出輸入埠 P0~3 作輸出 / 輸入的動作, 即是對 80H 90H A0H 及 B0H 等四個位元組作寫入 / 讀出的動作 程式狀態字元 (Program Status Word,PSW) 可位元定址, 位址 D0H, 紀錄 CPU 運算後之狀態旗標 旗標位址位元 名稱 功能 CY D7H 7 進位旗標 加減運算之進 ( 借 ) 位 布林運算時之累加器 AC D6H 6 輔助進位旗標 BCD 運算時之進位調整 由位元 3 至位元 4 之進位 F0 D5H 5 使用者旗標 一般用途 RS1 D4H 4 暫存器庫選擇旗標 RS0 D3H 3 暫存器庫選擇旗標 OV D2H 2 溢位旗標 OV = 0, 未溢位 OV = 1, 溢位 - 1 保留 P D0H 0 同位旗標 P = 0, A 累加器中含偶數個 1 P = 1, A 累加器中含奇數個 1 6

程式狀態字元 進位旗標 (Carry flag) Example: if the accumulator contains FFH ADD A, #1 A = 00H, CY = 1 Example: MOV R5, #55H 01010101 MOV A, #0AAH +) 10101010 ADD A, R5 11111111 輔助進位旗標 (Auxiliary carry flag) Example: MOV R5, #1 00000001 MOV A, #9 +) 00001001 ADD A, R5 00001010 A = FFH, CY = 0 A = 0AH, AC = 1 程式狀態字元 溢位旗標 (Overflow flag) Example: Hex: 0F Decimal: 15 + 7F + 127 8E 116 142 OV = 1 同位旗標 (Parity bit) 在每一個機械週期, 同位旗標位元 (P) 會自動被設定或清除 累加器中含 1 的個數與 P 位元相加, 恆保持偶數 Example: A = 10101101 P = 1 用於串列埠傳輸時檢查用 堆疊指標 (Stack Pointer,SP) 當執行 PUSH CALL 或中斷時,SP 值先加 1, 再將返回主程式位址推入堆疊暫存器中 當執行 POP RET RETI 時, 再將堆疊頂端內容取出存入程式計數器 PC 中, SP 值再減 1 初始位址 :07H 資料指標暫存器 (Data Pointer,DPTR) 程式記憶體之位址為 16 位元, 其內容長度為 8 位元 資料記憶體之位址為 8 位元, 其內容長度為 8 位元 DPTR 為 16 位元暫存器 由 2 個 8 位元暫存器 DPH DPL 所組合而成 被用於程式記憶體定址 (16 位元 ), 或用於存取外部擴充之 RAM 的資料 (42,6) 定址模式 定址 (Addressing) 模式 分成三類 : 立即資料定址 暫存器定址 記憶體定址定址模式格式範例立即資料 (Immediate) 定址 #data8 ADD A, #44H 暫存器 (Register) 定址 Rn (R0 ~ R7) ADD A, R5 直接 (Direct) 定址 addr8 ADD A, 55H ( 暫存器 ) 間接 (Indirect) 定址 @Ri (@R0, @R1) ADD A, @R0 絕對 (Absolute) 定址 addr11 AJMP BACK ( 暫存器 ) 相對 (Relative) 定址 disp8 SJMP AHEAD 長程 (Long) 定址 addr16 LJMP FAR_AHEAD 指標 (Indexed) 定址 @A+PC MOVC A, @A+PC 定址模式 立即資料 (Immediate) 定址 Example: MOV A, #12 load the value 12 (0CH) into the ACC ( 運算碼 ) ( 運算元 ) Example: ADD A, #56H 將常數資料 (56H) 加入累積器 A 中 立即運算元前須加 # 運算元可為數值常數 符號變數 運算式 Example: MOV PSW, #00011000B 選擇暫存器庫 Bank 3 暫存器 (Register) 定址 Example: MOV A, R7 將暫存器 R7 的 8-bit 內容移至累積器 A 中 Example: ADD A, R0 將 R0 的內容加入累積器 A 中 定址模式 直接 (Direct) 定址 使用 1 個位元組作為運算元位址, 因此資料存取的範圍為 0 到 255 個位元組 當 bit 7 =0, 存取範圍介於 0 ~ 127 (00H ~ 7FH) 當 bit 7 =1, 存取範圍介於 128 ~ 255 (80H ~ FFH) Example: MOV 20H, #12H 將常數資料 (12H) 載入內部資料記憶體位址 20H 處 Example: ADD A, 34H 將內部資料記憶體位址 34H 的內容加入累積器 A 中 Example: MOV 0A0H, #34H MOV P2, #34H 將常數資料 (#34H) 載入 PORT 2 7

定址模式 ( 暫存器 ) 間接 (Indirect) 定址 可以使用的暫存器包括 R0 R1 DPTR 三個 R0 與 R1 可以存取內部或外部資料記憶體中的最前面 256 個位元組 DPTR 只能存取外部資料記憶體 ( 至 64K 位元組範圍 ) 相當於 指標 (Pointer), 其內容為 RAM 之位址 Example: MOV R0, #32H ( 立即資料定址 ) 將常數資料 (32H) 載入暫存器 R0 MOV A, @R0 ( 間接定址 ) 將內部資料記憶體 32H 位址中資料移至累積器 A 中 8