Microsoft Word - 專題封面.doc



Similar documents
DPJJX1.DOC

W77E58中文手册

專題最終版.doc

目 录

R/W

微處理機期末專題

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

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

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

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

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

untitled

12232A LED LED LED EL EL CCFL EL CCF

STC90C51RC-cn.pdf

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

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

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

Ps22Pdf

dfgdafhdafhdafhdafh

untitled

1 TPIS TPIS 2 2

untitled

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

» 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

1 2 / 3 1 A (2-1) (2-2) A4 6 A4 7 A4 8 A4 9 A ( () 4 A4, A4 7 ) 1 (2-1) (2-2) ()

4 / ( / / 5 / / ( / 6 ( / / / 3 ( 4 ( ( 2

逢 甲 大 學

四、通 讯 规 约

untitled

粤社保函〔2013〕80号

民 國 105 年 大 專 程 度 義 務 役 預 備 軍 官 預 備 士 官 考 選 簡 章 目 錄 壹 考 選 依 據 1 貳 考 ( 甄 ) 選 對 象 1 參 資 格 規 定 1 肆 員 額 及 專 長 類 別 2 伍 報 名 及 選 填 志 願 日 期 方 式 3 陸 選 填 官 科 (

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS

<313034A4BDB67DA4C0B56FBA5DB3E65FBD64A5BB2E786C7378>

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

SIK) 者, 需 實 施 1 年 以 上, 經 體 格 檢 查 無 後 遺 症 者 5. 身 體 任 何 部 分 有 刺 青 紋 身 穿 耳 洞 者, 不 得 報 考, 各 項 檢 查 結 果 須 符 合 體 位 區 分 標 準 常 備 役 體 位 二 在 校 軍 訓 成 績 總 平 均 70 分

E170C2.PDF

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

4.进度控制(网络计划)0.ppt

10 t10 論 病 例 計 酬 案 件 申 請 件 數 11 t11 論 病 例 計 酬 案 件 日 數 12 t12 論 病 例 計 酬 案 件 醫 療 費 用 點 數 6 9 案 件 分 類 2( 論 病 例 計 酬 案 件 ) 之 申 請 件 數 加 總 8 9 案 件 分 類 2( 論 病

! *!"#$%&'()*+,-./#01 6, 8 6, 8 6, 8 8!"# ( / )!"# ( / )!"# ( / )! ( ) 3SB3!" Ø22mm!"# ( / ) 6, 8 6, 8 6, 8 8!"# ( / )!"# ( / )!"# ( ) 7, 10 7, 9 7, 8

7688使用手冊V10.doc

! "! "! # $ # # %#!# $# &# # ()*+, )-.) /# () () 0# 1,2.34, 4*.5)-*36-13)7,) ,9,.).6.(+ :# 13).+;*7 )-,7,<*7,-*=,>,7?#

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

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63>

Ps22Pdf



untitled

高二立體幾何

投影片 1

不淨觀之探究----以《大度智論》為主

1

诺贝尔生理学医学奖获奖者

untitled

PowerPoint 簡報

Microsoft Word - 烘焙食品乙級第二部份 doc

untitled

Ps22Pdf

《计算机应用基础》学习材料(讲义)

《信息系统安全等级保护测评准则》

1 CPU

Microsoft Word - IRFWX_A051_C_SyncMOS_with_STC_APN_SC_.doc

Microsoft PowerPoint - C15_LECTURE_NOTE_15

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

2 14 PORTC.1 PORTB.3 PORTA.2/T0 GND PORTB.2 PORTA.0 PORTC.3 PORB.0/OSCO PORTB.1/OSCI PORTC.0 PORTC.2 SH69P21 /SOP PORTA

声 明 本 公 司 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 股 票 发 行 方 案 不 存 在 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 和 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 根 据 证 券 法 的 规 定

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1


TouchWin Human Machine Interface


1-1 2

第二章

EC( )13 第 2 頁 (b) 把 總 目 100 在 年 度 常 額 編 制 內 所 有 非 首 長 級 職 位 按 薪 級 中 點 估 計 的 年 薪 總 值 上 限 提 高 12,480,540 元, 即 由 461,070,000 元 增 至 473,550

Ch03_嵌入式作業系統建置_01

標準 BIG 中文字型碼表 A 0 9 B C D E F 一 乙 丁 七 乃 九 了 二 人 儿 入 八 几 刀 刁 力 匕 十 卜 又 三 下 丈 上 丫 丸 凡 久 么 也 乞 于 亡 兀 刃 勺 千 叉 口 土 士 夕 大 女 子 孑 孓 寸 小 尢 尸 山 川 工 己 已 巳 巾 干 廾


MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi

(CIP) : /. :, 2003 ISBN T S CIP (2003) ( 1 : ) : * : :

Persuasive Techniques (motorcycle helmet)

PCM-3386用户手册.doc

2005.book

数 学 高 分 的 展 望 一 管 理 类 联 考 分 析 第 一 篇 大 纲 解 析 篇 编 写 : 孙 华 明 1 综 合 能 力 考 试 时 间 :014 年 1 月 4 日 上 午 8:30~11:30 分 值 分 配 : 数 学 :75 分 逻 辑 :60 分 作 文 :65 分 ; 总

untitled

<4D F736F F D FB971BEF7BB50B971A46CB8735FB773A55FA5ABA5DFB7E7AADAB0AAAFC5A475B77EC2BEB77EBEC7AED55FA97EAE61C0F4B9D2B4BCBC7AB1B1A8EEA874B2CE2E646F63>

µPSD3000 系列

2 12

因 味 V 取 性 又 鸟 U 且 最 大 罗 海 惜 梅 理 春 并 贵 K a t h l ee n S c h w e r d t n er M f l e z S e b a s t i a n C A Fe rs e T 民 伊 ' 国 漳 尤 地 视 峰 州 至 周 期 甚 主 第 应

但 洋 糖 最 终 乘 船 溯 江 而 上, 再 加 上 民 国 初 年 至 抗 战 前 夕 二 十 余 年 间, 四 川 接 连 不 断 遭 受 水 灾 旱 灾 地 震, 平 均 每 月 爆 发 两 次 军 阀 混 战, 乡 村 遭 受 极 大 破 坏,( 赵 泉 民,2007) 农 村 经 济

ISO h.PDF

untitled

SIGNUM 3SB3


MCS FCC

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

幻灯片 1

& ($ ) * +!"", &#!""#! +$ ) ( * +!"", - ($ ) * + % ($ ) * + * ), ($ ( # *$ ) ( + ) (. ($ / ($ ) ( * + &/ )! $!%

<4D F736F F D F F315FAAFEA5F333AAF9B645C2E5C0F8AA41B0C8C249BCC6B24DB3E6B443C5E9A5D3B3F8AEE6A6A12E646F63>

(CIP) : / :,, :, ISBN N - 42 CIP (2000) / /

軟體的安裝

Transcription:

逢 甲 大 學 資 訊 工 程 學 系 專 題 研 究 報 告 8051 小 遊 戲 -21 點 指 導 教 授 : 陳 德 生 學 生 : 許 博 益 中 華 民 國 九 十 六 年 六 月 I

目 錄 第 一 章 緒 論 1 1-1 研 究 背 景 1 1-2 研 究 動 機 2 1-3 研 究 目 的 3 1-3-1 21 點 源 起 3 1-3-2 21 點 規 則 3 第 二 章 微 電 腦 介 紹 5 2-1 微 電 腦 基 本 架 構 5 2-2 單 晶 片 微 電 腦 6 2-3 單 晶 片 微 電 腦 7 第 三 章 MCS-51 架 構 介 紹 10 3-1 MCS-51 系 列 單 晶 片 微 電 腦 的 認 識 10 3-2 MCS-15 接 腳 說 明 11 3-3 暫 存 器 與 資 料 記 憶 體 13 3-3-1 累 加 器 13 3-3-2 工 作 暫 存 器 13 3-3-3 I/O port 暫 存 器 14 3-3-4 資 料 記 憶 體 15 3-4 計 時 / 計 數 器 20 3-4-1 計 時 / 計 數 器 的 功 能 20 3-4-2 計 時 / 計 數 器 的 驅 動 與 使 用 20 3-4-3 TMOD 模 式 控 制 暫 存 器 之 設 定 20 3-4-4 TCON 控 制 暫 存 器 之 設 定 25 3-5 中 斷 服 務 與 中 斷 設 定 26 3-5-1 中 斷 的 功 能 26 3-5-2 8051 的 中 斷 向 量 與 中 斷 相 關 暫 存 器 27 第 四 章 開 發 環 境 -SimLab 8051 30 4-1 SimLab 介 紹 30 4-2 LCD 實 習 板 33 4-2-1 LCD 內 部 旗 標 與 暫 存 器 34 4-2-2 LCD 控 制 指 令 37 第 五 章 實 作 21 點 40 5-1 系 統 流 程 40 5-2 程 式 介 紹 45 5-2-1 記 憶 體 分 配 45 5-2-2 亂 數 取 牌 45 II

5-2-3 鍵 盤 47 5-2-4 關 於 LCD 48 第 六 章 結 果 與 建 議 51 6-1 21 點 - 與 電 腦 拔 河 51 6-1-1 遊 戲 的 公 平 性 51 6-1-2 策 略 擬 定 51 6-2 統 計 資 料 52 6-3 未 來 展 望 53 參 考 文 獻 54 誌 謝 55 III

圖 表 目 錄 圖 2-1 微 電 腦 基 本 架 構 5 圖 3-1 MCS-51 接 腳 圖 11 圖 3-2 8051 內 部 結 構 圖 13 圖 3-3 8051 資 料 記 憶 體 結 構 15 表 3-1 MCS-51 系 列 常 用 編 號 之 特 性 10 表 3-2 暫 存 器 R0~R7 範 圍 設 定 表 14 表 3-3 SFR 內 部 結 構 圖 15 表 3-4 SFR 預 設 值 17 表 3-5 暫 存 器 位 址 圖 18 表 3-6 中 斷 源 的 中 斷 向 量 以 及 旗 標 暫 存 器 27 圖 3-3 8051 資 料 記 憶 體 結 構 15 圖 4-1 基 本 型 實 習 板 或 功 能 型 專 題 板 中 選 取 任 一 項 實 習 板 31 圖 4-2 開 啟 組 語 檔 案 31 圖 4-3 組 譯 組 合 語 言 32 圖 4-4 模 擬 實 習 板 32 圖 4-5 LCD 控 制 結 構 圖 33 圖 4-6 LCD 電 路 圖 33 圖 4-7 DD RAM 位 址 與 可 供 顯 示 位 置 對 應 圖 37 表 4-1 LCD 外 部 接 腳 功 能 表 34 表 4-2 暫 存 器 選 用 表 35 表 4-3 LCD 字 元 碼 與 字 型 對 應 表 36 表 4-4 LCD 指 令 控 制 表 37 圖 5-1 鍵 盤 配 置 圖 40 圖 5-2 歡 迎 畫 面 40 圖 5-3 下 注 畫 面 40 圖 5-4 初 始 發 牌 畫 面 41 圖 5-5 爆 點 畫 面 41 圖 5-6 Lose 畫 面 42 圖 5-7 Deuce 畫 面 42 圖 5-8 Win 畫 面 42 圖 5-9 GAME OVER 畫 面 43 圖 5-10 系 統 流 程 圖 44 圖 5-11 鍵 盤 電 路 圖 47 圖 5-12 SimLab LCD 腳 位 配 置 圖 48 表 5-1 玩 一 千 次 勝 負 統 計 表 52 IV

1-1 研 究 背 景 第 一 章 緒 論 我 們 都 知 道, 電 腦 的 最 基 本 組 成 單 位 是 中 央 處 理 單 元 (CPU) 記 憶 體 以 及 I/O, 各 有 其 專 司 職 責 及 用 途 例 如,CPU 負 責 將 程 式 解 碼 及 執 行 記 憶 體 負 責 儲 存 程 式 及 資 料, 而 I/O 則 負 責 提 供 電 腦 系 統 與 外 界 週 邊 設 備 的 溝 通 管 道 在 微 電 腦 術 語 中, 通 常 我 們 所 稱 的 微 電 腦 指 的 是 通 用 型 (General Purpose) 微 處 理 機 晶 片, 例 如 Z80 6502 8085 80386 晶 片 等, 也 就 是 說 這 些 晶 片 只 具 有 CPU 的 功 能, 若 想 要 構 成 一 部 完 整 的 電 腦 系 統 ( 如 PC/AT 個 人 電 腦 等 ), 則 必 須 要 搭 配 其 它 的 記 憶 體 晶 片 I/O 介 面 晶 片 以 及 相 關 的 支 援 晶 片, 這 些 CPU 晶 片 才 能 動 作 單 晶 片 微 電 腦 (Single Chip Microcomputer) 則 是 將 CPU 記 憶 體 I/O 這 些 單 元 組 合 在 同 一 晶 片 之 內, 這 些 晶 片 只 需 要 少 量 的 支 援 電 路 即 可 獨 立 工 作, 如 此 就 可 以 大 量 地 減 少 電 路 板 面 積 及 降 低 成 本, 因 此 頗 為 適 合 家 電 汽 車 工 業 控 制 等 產 品 及 用 途 上, 所 以 單 晶 片 微 電 腦 又 稱 之 為 微 控 制 器 (Microcontroller) 一 般 而 言, 單 晶 片 微 電 腦 只 含 有 少 量 的 記 憶 體 及 I/O 點, 以 此 所 介 紹 的 8 位 元 8051 晶 片 為 例, 它 有 4Kbyte 的 ROM 128byte 的 RAM 以 及 32 條 I/O 點, 雖 然 這 麼 少 量 的 記 憶 體 及 I/O 是 不 能 與 一 般 的 電 腦 系 統 相 比, 但 在 控 制 用 途 上 卻 是 綽 綽 有 餘 除 記 憶 體 及 I/O 之 外, 單 晶 片 微 電 腦 晶 片 還 含 有 一 些 特 殊 的 功 能 及 內 建 電 路, 包 括 硬 體 中 斷 計 時 器 (Timer) LCD 液 晶 顯 示 器 串 列 通 信 介 面 類 比 / 數 位 轉 換 器 (A/D Converter) 數 位 / 類 比 轉 換 器 (D/A Converter) PWM 信 號 輸 出 1

等 等, 這 些 電 路 無 非 是 要 滿 足 一 些 特 殊 的 設 計 需 求 因 此, 選 擇 適 當 的 單 晶 片 微 電 腦 晶 片 來 滿 足 設 計 所 需 也 是 一 門 學 問 1-2 研 究 動 機 8051 是 一 種 8 位 元 的 單 晶 片 微 電 腦 的 名 稱, 屬 於 MCS-51 單 晶 片 的 一 種, 由 英 特 爾 公 司 於 1981 年 製 造 的 MCS-51 族 系 單 晶 片 到 現 在, 有 更 多 的 IC 設 計 商, 如 ATMEL 飛 利 浦 Winbond 等 公 司, 相 繼 開 發 了 功 能 更 多 更 強 大 的 相 容 產 品 第 一 次 摸 到 這 顆 8051 時, 是 在 系 上 修 習 微 處 理 機 這 門 課 的 時 後 當 時 就 覺 得 很 神 奇, 這 顆 IC 可 以 重 複 燒 錄, 儘 管 現 在 在 PC 上 的 CPU 大 部 分 都 已 經 是 80X86, 但 是 8051 卻 還 可 以 在 實 際 應 用 上, 佔 有 一 席 之 地 單 晶 片 系 統, 優 點 不 外 乎 體 積 小, 省 電, 速 度 快, 我 想 這 也 就 是 8051 到 限 在 仍 能 在 單 晶 片 界 屹 立 不 搖 的 原 因 吧 儘 管 它 功 能 有 限, 但 是 運 用 在 控 制 家 電 配 合 8051 組 語 大 致 上 可 以 解 決 大 部 分 的 問 題, 雖 然 它 沒 有 華 麗 的 介 面, 但 是 易 於 使 用 組 合 語 言 控 制, 速 度 也 快, 也 讓 這 一 片 小 小 的 IC, 在 單 晶 片 界 頂 出 一 片 天 由 於 沒 有 家 電 可 以 控 制, 於 是 想 挑 戰 在 8051 上 設 計 一 個 小 遊 戲, 讓 使 用 者 可 以 透 過 按 鍵, 以 及 文 字 型 的 LCD 來 操 作 這 個 系 統, 希 望 能 藉 這 個 專 題, 讓 我 更 熟 析 8051 這 顆 CPU 的 控 制 2

1-3 研 究 目 的 想 在 8051 上 實 做 21 點 可 不 是 簡 單 的 事 情, 他 並 不 像 高 階 語 言 有 豐 富 的 函 式 庫, 就 連 撲 克 牌 的 花 色 都 要 自 己 用 5*7 點 圖 編 碼, 在 送 進 LCD 的 控 制 器 現 在 我 們 先 來 了 解 21 點 的 規 則 吧! 1-3-1 21 點 源 起 二 十 一 點 是 廣 受 歡 迎 的 撲 克 牌 遊 戲, 此 遊 戲 源 自 十 六 世 紀 法 國 vingt-et-un 遊 戲, 所 以 有 二 十 一 這 個 稱 號 其 英 文 名 字 之 所 以 稱 為 Blackjack( 黑 傑 克 ) 就 是 因 為 若 玩 家 手 持 的 首 兩 張 牌 為 黑 桃 的 Ace[ 即 Black( 黑 色 ) 的 Ace] 和 黑 桃 的 Jack( 傑 克 ), 玩 家 將 得 到 額 外 贏 錢, 久 而 久 之, 就 順 口 稱 此 遊 戲 為 Blackjack 黑 傑 克 1-3-2 21 點 規 則 面 值 : A: 算 1 點 或 11 點, 視 玩 家 意 願 而 定 2-9: 牌 數 即 為 點 數 10 J Q K: 均 為 10 點 遊 戲 開 始 : 遊 戲 開 始 時, 莊 家 會 發 給 玩 家 及 自 己 各 兩 張 牌, 莊 家 一 張 面 朝 上 一 張 面 朝 下, 然 後 莊 家 可 依 排 面 上 的 值 決 定 是 否 要 牌, 以 求 接 近 21 點 如 果 玩 家 一 開 始 拿 到 一 張 A 和 一 張 10 點 的 牌 (10 J Q K), 則 為 Black 3

Jack, 除 非 莊 家 也 Black Jack, 算 平 手, 某 則 玩 家 贏 如 果 一 開 始 不 是 Black Jack, 則 要 牌 到 接 近 21 點 或 者 21 點, 超 過 21 則 算 爆 掉, 爆 掉 的 話, 直 接 算 玩 家 輸, 繼 續 下 一 局 當 玩 家 要 牌 結 束 且 沒 爆 掉, 則 換 莊 家, 如 果 莊 家 總 點 數 為 16 或 以 下, 莊 家 必 須 拿 牌, 如 果 總 點 數 為 17 或 以 上, 則 不 能 在 要 牌 4

第 二 章 2-1 微 電 腦 基 本 架 構 微 電 腦 介 紹 微 電 腦 是 指 由 中 央 處 理 單 元 <CPU>, 記 憶 體 <Memory> 及 I/O 三 大 部 份 所 組 成 其 中 CPU 可 分 成 兩 部 份, 即 算 術 邏 輯 單 元 <ALU> 及 控 制 單 元 <CU> 圖 2-1 微 電 腦 基 本 架 構 1. 運 算 單 元 (ALU) 運 算 單 元 又 稱 為 算 數 邏 輯 單 元, 在 中 央 處 理 單 元 中 可 用 於 執 行 算 數 運 算, ( 如 : 加 減 乘 除 等 ), 以 及 邏 輯 運 算 ( 如 :AND OR NOT 等 ), 能 將 記 憶 體 單 元 或 輸 入 單 元 送 至 中 央 處 理 單 元 的 資 料 執 行 各 種 運 算 當 運 算 完 成 後 再 由 控 制 單 元 將 結 果 資 料 送 至 記 憶 體 單 元 或 輸 出 單 元 2. 控 制 單 元 (CU) 此 單 元 在 中 央 處 理 單 元 中, 負 責 協 調 與 指 揮 各 單 元 間 的 資 料 傳 送 與 運 作, 使 得 微 電 腦 可 依 照 指 令 的 要 求 完 成 工 作 在 執 行 一 個 指 令 時, 控 制 單 元 先 予 以 解 碼 (Decode), 瞭 解 指 令 的 動 作 意 義 後 再 執 行 (Execute) 該 指 令, 因 此 控 制 單 元 將 指 5

令 逐 一 執 行, 直 到 做 完 整 個 程 式 的 所 有 指 令 為 止 3. 輸 入 單 元 (IU) 此 單 元 是 用 以 將 外 部 的 資 訊 傳 送 到 CPU 做 運 算 處 理 或 存 入 記 憶 體 單 元, 一 般 在 為 電 腦 的 輸 入 單 元 有 鍵 盤 磁 碟 機 光 碟 機 滑 鼠 光 筆 掃 描 器 或 讀 卡 機 等 週 邊 設 備 4. 輸 出 單 元 (OU) 此 單 元 是 用 以 將 CPU 處 理 過 的 資 料 輸 出 或 儲 存 傳 送 外 部 週 邊 設 備, 一 般 在 為 電 腦 的 輸 出 單 元 有 顯 示 器 印 表 機 繪 圖 機 燒 錄 機 或 磁 碟 機 等 週 邊 設 備 5. 記 憶 體 單 元 (MU) 記 憶 體 單 元 是 用 來 儲 存 輸 入 單 元 傳 送 來 的 資 料, 或 儲 存 經 過 中 央 處 理 單 元 處 理 完 成 的 資 料 記 憶 體 單 元 之 記 憶 體 可 分 為 主 記 憶 體 (Main Memory) 與 輔 助 記 憶 體 (Auxiliary Memory) 兩 種, 而 主 記 憶 體 依 存 取 方 式 不 同, 又 可 分 為 唯 讀 記 憶 體 (Read Only Memory, 簡 稱 ROM) 與 隨 機 存 取 記 憶 體 (Random Access Memory, 簡 稱 RAM) ROM 所 儲 存 的 資 料, 在 微 電 腦 中 只 能 被 讀 出 但 不 能 被 寫 入, 也 不 會 因 為 關 機 斷 電 而 使 資 料 流 失 ; 至 於 RAM 在 微 電 腦 中, 則 可 被 讀 出 或 寫 入 資 料, 但 在 關 機 斷 電 後 儲 存 於 RAM 中 的 資 料 將 會 流 失 輔 助 記 憶 體 則 是 指 磁 片 硬 碟 或 磁 帶 等 週 邊 硬 體, 一 般 亦 為 輸 出 入 單 元, 主 要 用 來 彌 補 主 記 憶 體 的 不 足, 其 容 量 可 無 限 制 擴 充 2-2 單 晶 片 微 電 腦 什 麼 是 單 晶 片 微 電 腦? 微 電 腦 就 是 將 構 成 微 電 腦 系 統 所 需 的 要 件 全 部 做 在 一 片 晶 片 上, 因 此 使 用 單 晶 片 微 電 腦 設 計 一 個 物 品, 只 要 將 設 計 好 的 程 式 燒 在 單 6

晶 片 的 EPROM 或 ROM 上, 然 後 供 應 5V 電 源, 單 晶 片 微 電 腦 就 可 以 根 據 這 個 程 式 工 作 至 於 優 點 列 於 下 : (1) 體 積 小 單 晶 片 微 電 腦 係 將 CPU 記 憶 體 I / O 全 都 製 作 在 同 一 晶 片 上, 體 積 比 一 般 微 電 腦 明 顯 縮 小 (2) 硬 體 接 線 容 易 單 晶 片 已 將 主 要 功 能 全 放 在 單 一 晶 片 上, 使 用 時, 只 需 接 少 許 元 件 即 可 作 廣 泛 的 控 制, 除 了 提 高 硬 體 接 線 的 可 靠 度 之 外, 在 裝 配 和 維 護 上 也 相 當 容 易 (3) 使 用 簡 單 單 晶 片 內 部 的 硬 體 架 構, 與 微 電 腦 之 複 雜 系 統 相 比, 其 架 構 簡 單, 在 使 用 與 學 習 上 更 容 易 (4) 擴 充 性 佳 由 於 IC 技 術 的 發 展, 使 單 晶 片 不 論 在 功 能 上 包 裝 密 度 上 都 增 強 許 多, 同 時 單 晶 片 仍 提 供 讀 <Read) 寫 <Write) 空 制 信 號, 在 作 外 部 記 憶 體 或 I / O 埠 的 擴 充 時, 相 當 簡 便 2-3 單 晶 片 微 電 腦 MCS-51 系 列 單 晶 片 是 INTEL 公 司 的 產 品, 其 中 8051 是 INTEL 公 司 於 1981 年 生 產 製 造 的 原 始 晶 片 主 要 的 功 能 及 特 性 說 明 如 下 : 7

8051 單 晶 片 : 1. 8 位 元 微 電 腦 控 制 晶 片 2. 4KB 內 部 程 式 記 憶 體, 最 大 外 接 擴 充 至 64KB 3. 128Byte 內 部 資 料 憶 體, 最 大 可 外 接 擴 充 至 64KB 4. 具 有 布 林 代 數 運 算 能 力 ( 位 元 邏 輯 ) 5. 4 組 可 位 元 定 址 I / O 埠 P0 P1 P2 P3 6. 2 組 16 位 元 計 時 / 計 數 器 T0 T1 7. 5 個 中 斷 源 INT0 INT1 T0 T1 RXD 或 TXD 8. 1 組 全 雙 工 串 列 埠 UART 8052 單 晶 片 : 1. 8 位 元 微 電 腦 控 制 晶 片 2. 8KB 內 部 程 式 記 憶 體, 最 大 外 接 擴 充 至 64KB 3. 256Byte 內 部 資 料 憶 體, 最 大 可 外 接 擴 充 至 64KB 4. 具 有 布 林 代 數 運 算 能 力 ( 位 元 邏 輯 ) 5. 4 組 可 位 元 定 址 I/O 埠 P0 P1 P2 P3 6. 3 組 16 位 元 計 時 / 計 數 器 T0 T1 T3 7. 6 個 中 斷 源 INT0 INT1 T0 T1 T2 RXD 或 TXD 8. 1 組 全 雙 工 串 列 埠 UART 無 ROM 型 單 晶 片 : 如 8031 8032 內 部 僅 含 有 資 料 記 憶 體 <RAM>, 必 須 外 接 程 式 記 憶 體 <ROM>, 可 使 用 IC EPROM 型 或 EEPROM 型, 將 程 式 燒 錄 於 此 IC 中 ROM 型 單 晶 片 如 8051 8052, 內 部 含 有 資 料 記 憶 體 <RAM) 及 程 式 記 憶 體 <ROM), 但 是 程 式 記 憶 體 僅 可 燒 錄 1 次, 無 法 清 除, 但 因 為 價 格 低 廉, 適 合 工 廠 大 量 生 產 8

EPROM 型 單 晶 片 : 如 8751 8752, 內 部 含 有 資 料 記 憶 體 (RAM) 及 程 式 記 憶 體 (ROM), 程 式 記 憶 體 可 重 複 多 次 使 用 使 用 紫 外 線 清 除, 照 射 單 晶 片 窗 口 約 20 30 分 鐘, 即 可 清 除 程 式 記 憶 體 內 資 料 EEPROM 型 單 晶 片 : 如 89C51 89C52, 內 部 含 有 資 料 記 憶 體 (RAM) 及 程 式 記 憶 體 (ROM) 程 式 記 憶 體 可 重 多 次 使 用 使 用 電 氣 信 號 (5V 或 12V) 清 除, 清 除 時 間 約 5 10 秒 9

第 三 章 MCS-51 架 構 介 紹 3-1 MCS-51 系 列 單 晶 片 微 電 腦 的 認 識 內 部 結 構 內 部 記 憶 體 輸 入 / 輸 出 計 時 / 計 數 器 編 號 RAM ROM EPROM I/O 16Bit 8031 128byte 0 0 32 腳 2 個 8051 128byte 4Kbyte 0 32 腳 2 個 8751 128byte 0 4K byte 32 腳 2 個 8032 128byte 0 0 32 腳 2 個 8052 128byte 4K byte 0 32 腳 2 個 8752 128byte 0 8K byte 32 腳 2 個 表 3-1 MCS-51 系 列 常 用 編 號 之 特 性 這 些 編 號 有 如 下 之 特 點 : 1. 各 編 號 皆 為 40 隻 腳 的 包 裝, 接 腳 相 同 2. 編 號 所 用 之 指 令 相 同 3. 各 編 號 之 用 途 可 概 分 如 下 : 8031 8032 等 編 號, 內 部 既 不 含 ROM 亦 不 含 EPROM, 需 外 接 程 式 記 憶 體 才 能 工 作, 多 只 用 來 作 線 上 模 擬 器 或 微 電 腦 學 習 機 等 開 發 工 具 8751 8752 等 編 號, 內 部 具 有 EPROM, 非 常 適 於 程 式 開 發 中 使 用 或 生 產 少 量 多 樣 化 的 產 品 當 燒 錄 於 內 部 之 程 式 需 修 改 時, 可 用 紫 外 線 燈 照 射 其 正 上 方 之 透 明 窗 口 15~30 分 鐘 而 將 內 部 之 程 式 清 除 掉 再 重 新 燒 錄 新 程 式 8051 8052 等 編 號 之 內 部 為 ROM, 當 產 品 的 功 能 已 定 型, 需 大 量 生 產 時, 將 程 式 送 至 IC 製 造 廠, 即 可 在 單 晶 片 微 電 腦 的 製 造 過 程 中 將 程 式 製 作 在 內 部 的 ROM 內, 適 於 產 品 量 產 時 使 用, 不 適 合 一 般 人 採 用 10

總 而 言 之, 您 設 計 完 成 的 程 式 可 先 燒 錄 在 8751 8752 等 單 晶 片 微 電 腦 做 實 驗 若 實 驗 成 功 需 大 量 生 產 時, 才 改 用 較 便 宜 的 8051 8052 等 單 晶 片 微 電 腦 3-2 MCS-15 接 腳 說 明 圖 3-1 MCS-51 接 腳 圖 1. Vcc:+5 電 源 供 應 接 腳 2. GND: 接 地 接 腳 3. P0.0~P0.7: 埠 0, 為 開 洩 極 (Open Drain) 雙 向 I/O 埠 在 做 為 外 部 擴 充 記 憶 體 時, 可 低 八 位 元 位 址 線 (A0~A7 address line) 與 資 料 匯 流 排 (data bus) 雙 重 功 能 在 做 為 一 般 I/O 埠 時 必 須 加 上 如 下 之 外 部 提 升 電 路 4. P1.0~P1.7: 埠 1, 為 具 有 內 部 提 升 電 路 的 雙 向 I/O 埠 5. P2.0~P2.7: 埠 2, 為 具 有 內 部 提 升 電 路 的 雙 向 I/O 埠 在 做 為 外 部 擴 充 記 憶 體 時, 可 為 高 八 位 元 位 址 線 (A8~A15 address line) 6. P3.0~P3.7: 埠 3, 為 具 有 內 部 提 升 電 路 的 雙 向 I/O 埠 此 外, 埠 3 的 每 支 接 腳 都 具 有 另 一 特 殊 功 能, 其 功 能 如 下 : 11

RXD(P3.0): 串 列 傳 輸 的 接 收 端 TXD(P3.1): 串 列 傳 輸 的 輸 出 端 INT0(P3.2): 外 部 中 斷 輸 入 端 INT1(P3.3): 外 部 中 斷 輸 入 端 T0(P3.4): 計 時 / 計 數 器 外 部 輸 入 端 T1(P3.5): 計 時 / 計 數 器 外 部 輸 入 端 WR(P3.6): 外 部 資 料 記 憶 體 寫 入 激 發 信 號 (Strobe) RD(P3.7): 外 部 資 料 記 憶 體 讀 取 激 發 信 號 (Strobe) 7. RST: 重 置 信 號 (Reset) 輸 入 端 在 單 晶 片 工 作 時, 將 此 腳 保 持 在 Hi" 兩 個 機 械 週 期,CPU 將 重 置 8. ALE: 位 址 鎖 住 致 能 (Address Latch Enable), 在 每 個 機 械 週 期 都 會 出 現, 可 做 為 外 部 電 路 的 時 脈 源 9. FSEN: 程 式 激 發 致 能 (Program Strobe Enable), 可 輸 入 外 部 程 式 記 憶 體 的 讀 取 信 號 10. EA: 外 部 存 取 致 能 (External Access Enable), 當 EA 接 腳 為 L0" 時, 則 讀 取 外 部 程 式 記 憶 體 執 行 11. XTAL1: 反 相 振 盪 放 大 器 的 輸 入 端 12. XTAL2: 反 相 振 盪 放 大 器 的 輸 出 端 12

圖 3-2 8051 內 部 結 構 圖 3-3 暫 存 器 與 資 料 記 憶 體 3-3-1 累 加 器 累 加 器 (Accumulator) 一 般 以 A 或 Acc 簡 稱, 是 使 用 頻 率 最 高 的 暫 存 器, 許 多 算 數 運 算 邏 輯 運 算 及 資 料 搬 移 等 工 作, 都 需 要 藉 由 累 加 器 來 完 成 3-3-2 工 作 暫 存 器 在 8051 中 共 有 8 個 8 位 元 (bits) 工 作 暫 存 器, 分 別 為 R0 R1 R2 R3 R4 R5 R6 及 R7 這 些 工 作 暫 存 器 可 用 以 輔 助 累 加 器 在 運 算 上 的 不 足, 如 儲 存 即 將 被 處 理 的 資 料, 或 已 完 成 的 結 果 及 迴 圈 數 值 控 制 等 由 於 在 撰 寫 較 複 雜 程 式, 尤 其 是 呼 叫 副 程 式 時, 為 了 避 免 工 作 暫 存 器 之 內 容 遭 到 破 壞, 在 8051 中 提 供 四 個 暫 存 器 庫, 分 別 為 RB0 RB1 RB 及 RB3, 每 一 個 13

暫 存 器 庫 均 有 個 8 位 元 工 作 暫 存 器, 並 可 經 由 工 作 暫 存 器 R0~R7 來 存 取, 但 程 式 執 行 中 只 能 選 擇 四 個 暫 存 器 庫 中 的 一 個 暫 存 器 來 使 用, 而 其 選 擇 方 法 則 可 透 過 設 定 RS1 與 RS0 此 兩 位 元 來 選 擇, 其 設 定 如 下 : RS1 RS0 暫 存 器 庫 位 址 0 0 RB0 00H~07H 0 1 RB1 08H~0FH 1 0 RB2 10H~17H 1 1 RB3 18H~1FH 表 3-2 暫 存 器 R0~R7 範 圍 設 定 表 當 8051 選 擇 使 用 RB0 時, 程 式 中 存 取 R0~R7 暫 存 器 的 值, 實 際 上 是 在 存 取 資 料 記 憶 體 位 址 00H~07H 的 內 容 ; 而 使 用 RB1 時, 程 式 中 存 取 R0~R7 暫 存 器 的 值, 實 際 上 是 在 存 取 資 料 記 憶 體 位 址 08H~0FH 的 內 容 ; 而 使 用 RB2 時, 程 式 中 存 取 R0~R7 暫 存 器 的 值, 實 際 上 是 在 存 取 資 料 記 憶 體 位 址 10H~17H 的 內 容 ; 而 使 用 RB3 時, 程 式 中 存 取 R0~R7 暫 存 器 的 值, 實 際 上 是 在 存 取 資 料 記 憶 體 位 址 18H~1FH 的 內 容 所 以 在 複 雜 程 式 中, 主 程 式 與 副 程 式 可 分 配 使 用 不 同 暫 存 器 庫, 即 可 避 免 暫 存 器 的 值 被 破 壞 3-3-3 I/O port 暫 存 器 8051 具 有 4 個 8 位 元 (bits) 的 輸 出 輸 入 埠, 經 由 這 四 個 輸 出 輸 入 埠 與 外 界 進 行 資 料 交 換, 因 此 在 8051 內 部 用 個 暫 存 器 來 記 錄 輸 出 / 輸 入 接 腳 的 狀 態, 分 別 為 資 料 記 憶 體 80H 90H A0H B0H 等 四 個 位 元 組 (byte), 並 一 輸 出 / 輸 入 埠 分 別 命 名 為 P0 P1 P2 及 P3 當 軟 體 程 式 對 輸 出 輸 入 埠 P0~3 作 輸 出 / 輸 入 的 動 作, 即 是 對 80 90 AH 及 0 等 四 個 位 元 組 作 寫 入 / 讀 出 的 動 作 14

3-3-4 資 料 記 憶 體 8051 的 記 憶 體 可 分 為 兩 大 部 份, 一 是 程 式 記 憶 體, 即 是 使 用 者 撰 寫 軟 體 程 式 的 存 放 記 憶 體 區 塊 ; 另 一 是 資 料 記 憶 體, 是 用 以 存 放 程 式 執 行 結 果 所 使 用 的 記 憶 體 而 在 8051 中 暫 存 器 與 資 料 記 憶 體 則 是 結 合 在 一 起, 均 存 放 在 資 料 記 憶 體 中, 及 結 構 如 下 圖 所 示 : FFH 直 接 定 址 記 憶 體 為 特 殊 功 能 暫 存 器 (Special Function Register, 即 SFR) 所 使 用 80H 但 不 可 作 為 一 般 資 料 記 憶 體 使 用, 其 內 容 如 下 圖 所 示 7FH 可 直 接 或 間 接 定 址 記 憶 體 00H 圖 3-3 8051 資 料 記 憶 體 結 構 F8 FF F0 B F7 E8 EF E0 ACC E7 D8 DF D0 PSW D7 C8 CF C0 C7 B8 IP BF B0 P3 B7 A8 IE AF A0 P2 A7 98 SCON SBUF 9F 90 P1 97 88 TCON TMOD TLO TL1 TH0 TH1 8F 80 P0 SP DPL DPH PCON 87 表 3-3 SFR 內 部 結 構 圖 15

在 SFR 內 部 結 構 圖 中 可 以 發 現 累 加 器 Acc 四 個 輸 出 / 輸 入 暫 存 器 P0 P1 P2 及 P3 其 他 暫 存 器 的 功 能 簡 介 如 下 : B: 用 於 乘 除 法 中 所 使 用 到 之 暫 存 器 PSW(Program Status Word): 程 式 狀 態 字 元 暫 存 器 IP(Interrupt Priority Register): 中 斷 優 先 暫 存 器 IE(Interrupt Enable Register): 中 斷 致 能 暫 存 器 SCON(Serial Port Control Register): 串 列 埠 控 制 暫 存 器 SBUF(Serial Port Buffer): 串 列 埠 資 料 緩 衝 器 TCON(Timer/Counter Control Register): 計 時 / 計 數 控 制 暫 存 器 TMOD(Timer/Counter Mode Control Register): 計 時 / 計 數 模 式 控 制 暫 存 器 TL0:Timer 0 16 位 元 計 時 / 計 數 直 之 低 8 位 元 TL1:Timer 1 16 位 元 計 時 / 計 數 直 之 低 8 位 元 TH0:Timer 0 16 位 元 計 時 / 計 數 直 之 高 8 位 元 TH1:Timer 1 16 位 元 計 時 / 計 數 直 之 高 8 位 元 SP(Stack Pointer): 堆 疊 指 標 暫 存 器 DPL:DPTR(Data Pointer) 資 料 指 標 暫 存 器 16 位 元 值 之 低 8 位 元 值 DPH:DPTR(Data Pointer) 資 料 指 標 暫 存 器 16 位 元 值 之 高 8 位 元 值 PCON(Power Control Register): 電 源 控 制 暫 存 器 16

暫 存 器 二 進 位 表 示 值 *Acc 00000000 *B 00000000 *PSW 00000000 SP 00000111 DPTR DPH 00000000 DPL 00000000 *P0 11111111 *P1 11111111 *P2 11111111 *P3 11111111 IP IE XXXX0000 0XX00000 TMOD 00000000 *TCOM 00000000 TH0 00000000 TL0 00000000 TH1 00000000 TL1 00000000 *SCON 00000000 SBUF PCON XXXXXXXX HMOS 0XXXXXXX CHMOS 0XXX0000 表 3-4 SFR 預 設 值 17

另 外 在 資 料 記 憶 體 中, 亦 可 以 位 元 定 址 00H~7 共 248 個 位 元 位 址, 其 在 記 憶 中 之 位 址 如 下 圖 : F0H F7 F6 F5 F4 F3 F2 F1 F0 B E0H E7 E6 E5 E4 E3 E2 E1 E0 Acc D0H CY D7 AC D6 F0 D5 RS1 D4 RS0 D3 0V D2 D1 P D0 PSW B8H - - - PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 IP B0H B7 B6 B5 B4 B3 B2 B1 B0 P3 A8H AF - - ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 IE A0H A7 A6 A5 A4 A3 A2 A1 A0 P2 98H SM0 9F SM1 9E SM2 9D REN 9C TB8 9B RB8 9A TI 99 RI 98 SCON 90H 97 96 95 94 93 92 91 90 P1 88H TF1 8F TR1 8E TF0 8D TR0 8C IE1 8B IT1 8A IE0 89 IT0 88 TCON 80H 87 86 85 84 83 82 81 80 P0 7FH 一 般 資 料 存 放 區 或 堆 疊 區 30H 2FH 7F 7E 7D 7C 7B 7A 79 78 2EH 2DH 2CH 18

2BH 2AH 29H 28H 27H 26H 25H 2F - - - - - - 28 24H 27 - - - - - - 20 23H 1F 1E 1D 1C 1B 1A 19 18 22H 17 - - - - - - 10 21H 0F - - - - - - 08 20H 07 06 05 04 03 02 01 00 RB3 RB2 RB1 RB0 表 3-5 暫 存 器 位 址 圖 在 上 圖 表 中, 最 左 側 為 可 位 元 定 址 記 憶 體 的 位 址 ; 中 間 數 字 代 表 可 畏 原 定 址 的 位 元 位 址, 其 中 位 元 位 址 上 之 文 字 即 為 該 位 元 的 名 稱 ; 最 右 側 為 暫 存 器 的 名 稱 19

3-4 計 時 / 計 數 器 3-4-1 計 時 / 計 數 器 的 功 能 在 8051 單 晶 片 的 內 部 有 2 個 計 時 / 計 數 器, 可 接 收 外 界 輸 入 的 驅 動 信 號, 而 能 產 生 一 個 輸 出 信 號 以 供 讀 取 外 界 輸 入 信 號 發 生 的 次 數 如 果 這 個 外 界 輸 入 信 號 代 表 某 一 事 件 發 生 的 次 數, 則 計 時 / 計 數 器 即 是 在 作 事 件 的 計 數 ; 如 果 這 個 外 界 輸 入 信 號 是 一 個 固 定 頻 率 的 信 號, 則 計 時 / 計 數 器 則 可 用 以 作 計 算 時 間 的 工 作 因 此,8051 單 晶 片 的 計 時 / 計 數 器 為 一 體 兩 面, 完 全 取 決 於 驅 動 信 號 的 特 質 而 定 3-4-2 計 時 / 計 數 器 的 驅 動 與 使 用 Timer0 與 Timer1 是 8051 單 晶 片 的 兩 個 16 位 元 計 時 / 計 數 器, 其 計 數 值 是 存 放 於 兩 個 8 位 元 暫 存 器 中,Timer0 的 計 數 是 由 TH0(High byte) 及 TL0(Low byte) 來 執 行,Timer1 的 計 數 是 由 TH1(High byte) 及 TL1(Low byte) 來 執 行 其 位 址 分 別 位 於 SFR 內 部 記 憶 體 的 8CH 8AH 8DH 及 8BH 中 在 程 式 撰 寫 上, 編 輯 器 允 許 直 接 使 用 暫 存 器 的 名 稱 TH0 TL0 TH1 及 TL1, 亦 可 直 接 使 用 其 暫 存 器 位 址, 來 作 直 接 定 址 在 使 用 8051 單 晶 片 計 時 / 計 數 器 前 須 先 設 定 計 時 / 計 數 器 模 式 控 制 暫 存 器 (Timer/counter Mode Control Register, 簡 稱 TMOD) 及 計 時 / 計 數 器 控 制 暫 存 器 (Timer/counter Control Register, 簡 稱 TCON) 兩 個 暫 存 器, 此 二 暫 存 器 分 別 用 來 決 定 Timer0 及 Timer1 的 工 作 模 式 及 中 斷 執 行 的 控 制 設 定 3-4-3 TMOD 模 式 控 制 暫 存 器 之 設 定 Timer 的 計 時 時 脈 來 源 有 兩 種, 一 種 是 8051 單 晶 片 的 內 部 時 脈, 一 種 是 從 T0 與 T1 接 腳 所 輸 入 的 外 部 時 脈 在 8051 單 晶 片 接 收 時 脈 計 時 / 計 數 時, 會 在 每 20

個 機 械 週 期 值 由 1 變 為 0 時, 將 Timer 的 值 累 加 1 而 8051 單 晶 片 對 時 脈 來 源 的 選 擇 是 由 TMOD 暫 存 器 中 的 C/T 位 元 來 決 定 當 C/T 設 定 為 1 時,Timer 使 用 外 部 時 脈 ; 當 C/T 設 定 為 0 時,Timer 使 用 內 部 時 脈 TMOD 的 結 構 如 下 : TMOD: 計 時 器 模 式 控 制 暫 存 器 (TIMER/COUNTER MODE CONTROL REGISTER): 位 址 :89H ( 不 可 位 元 定 址 ) - - GATE C / T M1 M0 GATE C / T M1 M0 Timer 1 Timer 0 GATE: 當 TRx( 在 TCON)=1 且 GATE=1, 則 計 時 器 只 在 INTx 接 腳 為 高 電 位 時 才 會 計 時, 當 GATE=0, 則 計 時 器 只 在 TRx=1 時 才 會 計 時 C / T: 計 時 器 或 計 數 器 的 選 擇 位 元,C / T=0 時 為 計 時 器,C / T=1 時 為 計 數 器 M1: 模 式 選 擇 位 元 M0: 模 式 選 擇 位 元 M1 M0 工 作 模 式 功 能 0 0 0 13-Bit 計 時 器 / 計 數 器 0 1 1 16-Bit 計 時 器 / 計 數 器 1 0 2 8-Bit 自 動 載 入 計 時 器 / 計 數 器 1 1 3 Timer0:TL0 為 8 位 元 計 時 / 計 數 器, 使 用 T0 的 控 制 位 元,TH0 為 另 一 個 獨 立 的 8 位 元 計 時 / 計 數 器 使 用 T1 的 控 制 位 元 Timer1: 停 止 動 作 當 TCON 暫 存 器 中 的 TR0( 或 TR1) 為 1 時, 則 Timer0( 或 Timer1) 由 TMOD 暫 存 器 的 GATE 位 元 與 INT0( 或 INT1) 接 腳 構 成 Timer 的 軟 體 控 制 ; 當 TCON 暫 存 器 中 的 TR0( 或 TR1) 為 0 時, 則 Timer0( 或 Timer1) 將 停 止 計 時 / 計 數 若 以 布 林 帶 數 表 示 則 為 Y=(GATE+INTx) Timer0 與 Timer1 一 共 有 四 種 模 式, 是 由 TMOD 暫 存 器 中 的 M0 與 M1 位 元 來 設 定 以 下 為 四 種 工 作 模 式 : 21

1. 模 式 0:(M1=M0=0,13 位 元 計 時 / 計 數 器 ): 將 Timer 設 定 為 模 式 0 時, 會 形 成 一 個 13 位 元 計 時 / 計 數 器, 計 時 / 計 數 暫 存 器 是 由 THx 的 8 位 元 與 TLx 的 低 5 位 元 所 組 成 當 TR0( 或 TR1) 設 定 為 1 時, 計 時 / 計 數 器 開 始 作 動, 若 13 個 位 元 由 全 部 為 1 變 為 全 部 為 0 時, 則 會 將 Timer 溢 位 旗 號 TFx 設 定 為 1 結 合 IE 暫 存 器 ( 中 斷 致 能 暫 存 器, Interrupt Enable Register) 致 能 Timer0( 或 Timer1), 則 8051 單 晶 片 會 擷 取 TF0( 或 TF1) 的 資 料, 以 偵 測 是 否 要 產 生 中 斷 當 8051 單 晶 片 執 行 中 斷 副 程 式 時 會 自 動 將 TF0( 或 TF1) 清 除 為 0 Timer 工 作 模 式 0 時,13 位 元 計 時 / 計 數 值 最 大 為 8192(2 的 13 次 方 ), 因 此,THx 的 值 應 為 計 時 / 計 數 值 除 以 32 的 商,TLx 的 值 則 為 計 時 / 計 數 值 除 以 32 的 餘 數 若 計 時 / 計 數 值 為 5000 時, 即 : TL0 = # (8192-5000) MOD 32 TH0 = # (8192-5000)/32 則 程 式 可 寫 為 : MOV TL0,# (8192-5000) MOD 32 MOV TH0,# (8192-5000)/32 2. 模 式 1:(M1=0,M0=1,16 位 元 計 時 / 計 數 器 ): 模 式 0 與 模 式 1 的 動 作 幾 乎 相 同, 兩 者 之 間 的 差 別 在 於 Timer 工 作 在 模 式 1 時 是 16 位 元 的 計 時 / 計 數 器 模 式 1 計 時 / 計 數 最 大 值 為 65536(2 的 16 次 方 ), 因 此,THx 的 值 應 為 計 時 / 計 數 值 除 以 256 的 商,TLx 的 值 則 為 計 時 / 計 數 值 除 以 256 的 餘 數 若 計 時 / 計 數 值 為 5000 時, 即 : TH0 = # (65536-5000)/256 TL0 = # (65536-5000) MOD 256 則 程 式 可 寫 為 : MOV TH0,# (65536-5000)/256 22

MOV TL0,# (65536-5000) MOD 256 或 寫 成 : MOV TH0,# > (65536-5000) MOV TL0,# < (65536-5000) 其 中, < 符 號 是 通 知 編 譯 器 將 後 面 的 值 取 16 位 元 的 低 位 元 組, 而 > 符 號 是 通 知 編 譯 器 將 後 面 的 值 取 16 位 元 的 高 位 元 組 3. 模 式 2:(M1=1,M0=0,8 位 元 自 動 重 新 載 入 計 時 器 ) 將 Timer 設 定 成 模 式 2 時, 會 形 成 一 個 8 位 元 自 動 重 新 載 入 計 時 / 計 數 器 當 計 時 / 計 數 完 畢 後 會 產 生 TFx 溢 位 旗 號 設 定 為 1, 並 會 將 THx 的 值 自 動 載 入 TLx 中, 因 此,THx 的 值 須 事 先 由 軟 體 設 定 此 模 式 適 合 用 在 需 要 固 定 時 間 的 計 時 模 式 2 計 時 / 計 數 最 大 值 為 256(2 的 8 次 方 ), 因 此 計 時 / 計 數 值 須 同 時 存 放 於 THx 與 TLx 中 若 計 時 / 計 數 值 為 200 時, 即 : TH0 = # (256-200) TL0 = # (256-200) 則 程 式 可 寫 成 MOV TH0,# (256-200) MOV TL0,# (256-200) 4. 模 式 3:(M1=1,M0=1, 兩 個 8 位 元 的 計 時 器 ) Timer 在 模 式 3 時, 會 將 TH0 與 TL0 分 成 兩 個 獨 立 的 8 位 元 計 時 器 TL0 的 計 時 器 使 用 Timer0 的 控 制 信 號, 即 C/T GATE TR0 INT0 與 TF0 而 TH0 則 為 計 數 機 械 週 期 的 計 數 器, 且 使 用 Timer1 的 TR1 及 TF1 做 控 制 信 號, 因 此 TH0 是 控 制 Timer1 計 時 / 計 數 器 若 使 用 Timer0 的 TL0 計 時 / 計 數 值 為 200 時, 即 : 23

TL0 = # (256-200) 則 程 式 可 寫 成 MOV TL0,# (256-200) TMOD 暫 存 器 在 各 種 情 形 下 的 設 定 值 : 1. Timer0 做 計 時 器 模 式 功 能 內 部 控 制 外 部 控 制 0 13 位 元 計 時 器 00000000B 00001000B 1 16 位 元 計 時 器 00000001B 00001001B 2 8 位 元 自 動 重 新 載 入 00000010B 00001010B 3 兩 個 8 位 元 計 時 器 00000011B 00001011B 2. Timer0 做 計 數 器 模 式 功 能 內 部 控 制 外 部 控 制 0 13 位 元 計 數 器 00000100B 00001100B 1 16 位 元 計 數 器 00000101B 00001101B 2 8 位 元 自 動 重 新 載 入 00000110B 00001110B 3 一 個 8 位 元 計 數 器 00000111B 00001111B 3. Timer1 做 計 時 器 模 式 功 能 內 部 控 制 外 部 控 制 0 13 位 元 計 時 器 00000000B 10000000B 1 16 位 元 計 時 器 00010000B 10010000B 2 8 位 元 自 動 重 新 載 入 00100000B 10100000B 3 (TH0 計 時 器 ) 00110000B 10110000B 24

4. Timer1 做 計 數 器 模 式 功 能 內 部 控 制 外 部 控 制 0 13 位 元 計 數 器 01000000B 11000000B 1 16 位 元 計 數 器 01010000B 11010000B 2 8 位 元 自 動 重 新 載 入 01100000B 11100000B 3 無 ---- ---- 3-4-4 TCON 控 制 暫 存 器 之 設 定 TCON 為 Timer 的 計 時 控 制 暫 存 器, 其 結 構 如 下 : TCON: 計 時 器 控 制 暫 存 器 (TIMER/COUNTER CONTROL REGISTER): 位 址 :88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TF1: TCON.7 計 時 器 1 的 溢 位 旗 號, 當 計 時 器 / 計 數 器 1 溢 位 時, 會 被 硬 體 設 定 為 1, 當 處 理 器 執 行 中 斷 服 務 程 式 時, 硬 體 會 自 動 將 此 位 元 清 除 為 0 TR1: TCON.6 計 時 器 1 的 啟 動 位 元, 由 軟 體 設 定 為 1 時 啟 動,0 時 停 止 TF0: TCON.5 計 時 器 0 的 溢 位 旗 號, 當 計 時 器 0 溢 位 時, 會 被 硬 體 設 定 為 1, 當 處 理 器 執 行 中 斷 服 務 程 式 時, 硬 體 會 自 動 清 除 此 位 元 TR0: TCON.4 計 時 器 0 的 啟 動 位 元, 由 軟 體 設 定 為 1 時 啟 動,0 時 停 止 IE1: TCON.3 外 部 中 斷 (INT1) 的 中 斷 旗 號, 當 中 斷 被 檢 知 時, 硬 體 會 設 定 此 位 元, 當 中 斷 被 處 理 時, 硬 體 會 自 動 清 除 此 位 元 IT1: TCON.2 INT1 的 中 斷 型 態 控 制, 當 此 位 元 設 定 為 1 時 為 負 緣 觸 發 型 態, 當 此 位 元 為 0 時, 則 為 低 準 位 觸 發 型 態 IE0: TCON.1 外 部 中 斷 (INT0) 的 中 斷 旗 號, 當 中 斷 被 檢 知 時, 硬 體 會 設 定 此 位 元, 當 中 斷 被 處 理 時, 硬 體 會 自 動 清 除 此 位 元 25

IT0: TCON.0 INT0 的 中 斷 型 態 控 制, 當 此 位 元 設 定 為 1 時 為 負 緣 觸 發 型 態, 當 此 位 元 為 0 時, 則 為 低 準 位 觸 發 型 態 3-5 中 斷 服 務 與 中 斷 設 定 3-5-1 中 斷 的 功 能 8051 單 晶 片 的 中 斷 服 務 功 能, 可 使 中 斷 服 務 的 需 求 以 中 斷 的 方 式 通 知 8501CPU, 以 使 CPU 獨 立 執 行 主 程 式, 而 提 升 執 行 效 率 在 8051 單 晶 片 中 提 供 5 個 中 斷 源, 分 別 為 : 1. INT0: 外 部 中 斷, 由 8051 單 晶 片 第 12 接 腳 輸 入 2. Timer0: 計 時 / 計 數 器 中 斷 3. INT1: 外 部 中 斷, 由 8051 單 晶 片 第 13 接 腳 輸 入 4. Timer1: 計 時 / 計 數 器 中 斷 5. UART: 串 列 埠 中 斷 上 列 中 斷 源 在 8051 中 都 有 相 對 應 的 旗 標, 當 中 斷 條 件 產 生 時, 中 斷 源 就 會 使 其 相 對 應 的 旗 標 值 設 定 為 1 8051 的 CPU 會 在 每 一 個 機 械 週 期 檢 查 這 些 旗 標 的 狀 態, 若 系 統 允 許 相 對 的 中 斷 源 產 生 中 斷, 且 該 中 斷 相 對 應 的 旗 標 值 亦 為 1 時, 則 CPU 會 在 執 行 完 目 前 正 在 執 行 的 指 令 後, 將 程 式 在 記 憶 體 中 的 位 址 存 入 堆 疊 中, 並 產 生 中 斷 服 務 副 程 式 的 呼 叫, 跳 到 該 中 斷 所 對 應 之 中 斷 向 量 位 址 去 執 行, CPU 執 行 該 中 斷 服 務 副 程 式, 直 到 RETI 指 令 後 才 結 束 中 斷 副 程 式, 再 從 堆 疊 中 取 出 先 前 存 入 的 位 址 值 繼 續 執 行 被 中 斷 的 程 式 26

3-5-2 8051 的 中 斷 向 量 與 中 斷 相 關 暫 存 器 8051 單 晶 片 的 5 個 中 斷 源, 其 中 斷 向 量 旗 標 名 稱 與 該 旗 標 所 屬 暫 存 器 如 下 : 中 斷 源 中 斷 向 量 ( 位 址 值 ) 旗 標 所 屬 暫 存 器 INT0 0003H IE0 TCON.1 Timer0 000BH TF0 TCON.5 INT1 0013H IE1 TCON.3 Timer1 001BH TF1 TCON.7 UART(TXD) 0023H TI SCON.1 UART(RXD) 0023H RI SCON.0 表 3-6 中 斷 源 的 中 斷 向 量 以 及 旗 標 暫 存 器 中 斷 源 INT0 與 INT1 分 別 位 於 8051 單 晶 片 接 腳 第 12 與 13 支, 當 此 二 接 腳 為 低 電 位 ( 或 0 ) 時, 則 IE0 與 IE1 會 設 定 為 1 ; 而 當 對 應 之 中 斷 服 務 副 程 式 執 行 完 畢 後, 則 8051 會 自 動 清 除 IE0 與 IE1 旗 標 Timer0 與 Timer1 的 中 斷 產 生 則 如 第 六 章 所 介 紹, 當 計 時 / 計 數 值 產 生 溢 位 時, 則 對 應 之 旗 標 TF0 與 TF1 設 定 為 1 ; 而 當 對 應 之 中 斷 服 務 副 程 式 執 行 完 畢 後, 則 8051 會 自 動 清 除 TF0 與 TF1 旗 標 UART 為 串 列 埠 中 斷 源, 當 串 列 埠 做 為 傳 送 或 接 收 時 其 對 應 不 同 的 旗 標 TI 與 RI, 其 使 用 方 式 將 在 下 一 章 介 紹, 當 其 對 應 旗 標 設 定 為 1 後, 且 中 斷 致 能, 則 中 斷 服 務 副 程 式 將 會 執 行 當 對 應 之 中 斷 服 務 副 程 式 執 行 完 畢 後, 則 8051 會 自 動 清 除 TI 與 RI 旗 標 中 斷 致 能 暫 存 器 (Interrupter Enable register, 簡 稱 IE, 可 位 元 定 址 ) 用 於 致 能 中 斷 的 發 生, 若 被 致 能, 則 中 斷 發 生 後 將 執 行 中 斷 服 務 副 程 式, 否 則 即 使 中 斷 發 生 亦 不 會 執 行 中 斷 服 務 副 程 式 27

以 下 為 中 斷 致 能 暫 存 器 結 構 : 位 址 :A8H EA ---- ---- ES ET1 EX1 ET0 EX0 EA(IE.7): 若 EA=0, 則 禁 止 所 有 中 斷 ; 若 EA=1, 則 各 中 斷 是 否 致 能 可 由 各 自 的 中 斷 致 能 位 元 來 各 別 設 定 ----(IE.6): 未 使 用 ----(IE.5): 未 使 用, 但 於 8052 單 晶 片 中 則 為 Timer2 致 能 位 元 ES(IE.4): 致 能 串 列 埠 的 中 斷 ET1(IE.3): 致 能 Timer1 的 中 斷 EX1(IE.2): 致 能 INT1 的 中 斷 ET0(IE.1): 致 能 Timer0 的 中 斷 EX0(IE.0): 致 能 INT0 的 中 斷 在 8051 單 晶 片 工 作 時, 並 不 一 定 要 使 用 全 部 的 中 斷 源 來 產 生 中 斷, 因 此 可 藉 由 IE 來 設 定 致 能 部 分 所 要 用 到 的 中 斷 源 此 外, 每 一 個 中 斷 源 在 中 斷 優 先 暫 存 器 (Interrupt Priority register, 簡 稱 IP) 中 都 有 一 個 位 元 來 決 定 該 中 斷 源 之 中 斷 服 務 副 程 式 被 執 行 的 優 先 順 序, 設 定 為 1 表 示 為 高 優 先 權, 清 除 為 0 則 表 示 為 低 優 先 權 當 一 個 中 斷 要 求 發 生 時, 若 中 斷 是 被 致 能 的, 則 8051CPU 會 執 行 該 中 斷 服 務 副 程 式 然 而 在 執 行 中 若 有 較 高 優 先 權 的 中 斷 源 要 求 中 斷, 則 CPU 會 先 暫 停 目 前 正 在 執 行 的 中 斷 服 務 副 程 式, 而 立 即 執 行 這 個 較 高 優 先 權 的 中 斷 服 務 副 程 式 如 果 相 同 優 先 權 或 優 先 權 較 低 的 中 斷 源 要 求 中 斷, 則 CPU 將 會 不 予 理 會 另 外, 若 兩 中 斷 同 時 發 生, 則 高 優 先 權 中 斷 源 優 先 執 行 ; 但 若 優 先 權 相 同 時, 則 依 INT0 Timer0 INT1 Timer1 UART 之 順 序 先 後 執 行 28

中 斷 優 先 暫 存 器 (Interrupt Priority register, 可 位 先 定 址 ), 其 結 構 如 下 : 位 址 :B8H ---- ---- ---- PS PT1 PX1 PT0 PX0 ----(IP.7): 未 使 用 ----(IP.6): 未 使 用 ----(IP.5): 未 使 用, 但 在 8052 單 晶 片 中, 則 為 Timer2 的 優 先 權 位 元 PS(IP.4): 定 義 串 列 埠 優 先 權 位 元 PT1(IP.3): 定 義 Timer1 優 先 權 位 元 PX1(IP.2): 定 義 INT1 優 先 權 位 元 PT0(IP.1): 定 義 Timer0 優 先 權 位 元 PX0(IP.0): 定 義 INT0 優 先 權 位 元 29

第 四 章 開 發 環 境 -SimLab 8051 4-1 SimLab 介 紹 主 要 功 能 與 特 色 : 完 全 軟 體 模 擬, 不 需 要 任 何 硬 體 接 線 具 一 般 模 擬 器 全 速 執 行, 停 止 執 行, 重 置, 單 步 除 錯 等 功 能 可 隨 時 觀 察, 修 改 記 憶 體 及 內 部 特 殊 暫 存 器 內 容 可 觀 察 程 式 指 令 執 行 點 可 編 輯, 組 譯, 載 入, 模 擬 組 合 語 言 檔 案 /C 語 言 檔 案, 不 需 離 開 系 統 內 建 Cross Assembler 程 式 組 譯 器, 或 可 選 擇 使 用 其 他 組 譯 器, 編 輯 器 可 編 譯 及 聯 結 C 語 言 ( C Compiler Option) WINDOWS 視 窗 圖 形 操 作 環 境, 可 顯 示 實 驗 板 示 意 圖 及 線 路 圖 並 可 列 印 出 來 可 設 定 8051 時 脈 頻 率 (6,12,11.0592,12,16,24,40MHZ 等 ) 內 建 二 十 幾 種 常 用 實 習 板, 從 基 礎 程 式, 到 專 題 型 練 習 模 組 可 以 建 立 專 案 規 劃, 可 記 錄 執 行 過 程 可 以 建 立 專 案 規 劃, 可 記 錄 執 行 過 程 30

基 本 使 用 方 法 : 圖 4-1 基 本 型 實 習 板 或 功 能 型 專 題 板 中 選 取 任 一 項 實 習 板 圖 4-2 開 啟 組 語 檔 案 31

圖 4-3 組 譯 組 合 語 言 圖 4-4 模 擬 實 習 板 32

4-2 LCD 實 習 板 目 前 市 面 上 的 LCD 模 組 可 分 文 字 型 及 繪 圖 型 兩 種 文 字 型 LCD 模 組 常 見 的 規 格 有 16 字 *1 行,20 字 *1 行,40 字 *1 行,16 字 *2 行,20 字 *2 行,40 字 *2 行 等 多 種 LCD 模 組 的 結 構 如 圖 2-1 所 示, 由 LCD 控 制 器,LCD 驅 動 器 及 LCD 顯 示 器 所 組 成 目 前 市 售 LCD 模 組 所 採 用 的 LCD 控 制 器 都 相 容, 使 用 方 法 也 相 同, 因 此 機 乎 所 有 的 LCD 模 組 都 具 有 相 同 的 控 制 方 法 圖 4-5 LCD 控 制 結 構 圖 圖 4-6 LCD 電 路 圖 33

4-2-1 LCD 內 部 旗 標 與 暫 存 器 表 4-1 LCD 外 部 接 腳 功 能 表 1. 忙 碌 旗 號 (Busy Flag 簡 稱 BF): BF 旗 號 是 LCD 用 來 告 訴 CPU 它 內 部 是 否 忙 碌 的 一 個 旗 號, 若 BF=1 表 示 LCD 正 在 處 理 內 部 工 作, 因 此 這 時 候 不 可 以 寫 入 資 料 給 LCD 當 BF=0 時, 表 示 CPU 可 以 寫 資 料 給 LCD 當 接 腳 RS=0 且 R/W =1 時, 忙 碌 旗 標 的 內 容 會 由 接 腳 DB7 輸 出 2. 暫 存 器 : LCD 模 組 內 部 只 有 兩 個 8 位 元 暫 存 器, 稱 為 指 令 暫 存 器 (Instruction Regiest,IR) 和 資 料 暫 存 器 (Data Register,DR) 它 們 都 是 8 位 元 暫 存 器, 並 且 由 RS 腳 來 選 用 34

表 4-2 暫 存 器 選 用 表 3. 位 址 計 數 器 AC(Address Counter): 位 址 計 數 器 用 來 指 示 欲 存 取 資 料 的 DD RAM 或 CG RAM 的 位 址 位 址 設 定 指 令 將 為 址 寫 入 IR 暫 存 器 後, LCD 內 部 控 制 會 將 IR 暫 存 器 中 的 位 址 傳 送 到 AC 當 資 料 寫 入 或 讀 出 後,AC 的 內 容 會 自 動 加 1(I/D=1) 或 減 (I/D=0) 3. CG ROM (Character Generat ROM): CGROM 存 放 著 160 個 5*7 的 距 陣 字 型, 及 32 個 5*10 的 矩 陣 字 型 每 個 字 型 對 應 著 不 同 的 字 元 碼, 部 分 與 ASCII 相 同, 其 餘 為 日 文 字 型, 所 以 可 以 知 道 LCD 應 該 是 日 本 出 品 的 35

表 4-3 LCD 字 元 碼 與 字 型 對 應 表 4. 字 型 產 生 器 CG RAM (Character Generat RAM): LCD 模 組 內 除 了 提 供 標 準 的 字 型 (CG ROM) 供 使 用 外, 另 外 還 提 供 64 位 元 組 的 CG RAM 空 間 供 使 用 者 存 放 自 己 所 設 計 的 造 型, 一 個 字 的 造 型 (5 7 點 ) 共 使 用 8 個 位 元 組, 因 此 使 用 者 最 多 可 以 存 放 8 個 自 己 的 造 型 要 顯 示 自 己 設 計 的 字 型 時, 必 須 先 用 5*7 矩 陣 圖 設 計 再 存 入 CGRAM 36

5. DDRAM(Display Data RAM): LCD 控 制 器 的 內 部 共 有 80 個 位 元 組 可 供 儲 存 由 外 部 送 進 來 的 資 料, 這 80 個 位 元 我 們 稱 之 為 Display Data RAM( 簡 稱 DD RAM),DD RAM 的 位 址 從 00H~67H, 它 與 顯 示 器 的 對 應 關 係 圖 如 下 : 圖 4-7 DD RAM 位 址 與 可 供 顯 示 位 置 對 應 圖 每 一 種 LCD 的 第 一 列 開 頭 為 00H, 第 二 列 開 頭 為 40H, 如 果 一 列 不 到 20 個 字 則 後 面 就 不 管, 例 :16*2 的 LCD 最 後 一 行 則 為 0FH 和 4FH 4-2-2 LCD 控 制 指 令 命 令 指 令 編 碼 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1. 清 除 顯 示 器 0 0 0 0 0 0 0 0 0 1 2. 游 標 歸 位 0 0 0 0 0 0 0 0 1 X 3. 進 入 模 式 設 定 0 0 0 0 0 0 0 1 I/D S 4. 顯 示 器 ON/Off 控 制 0 0 0 0 0 0 1 D C B 5. 顯 示 器 或 游 標 移 動 0 0 0 0 0 1 S/C R/L X X 6. 功 能 設 定 0 0 0 0 1 DL N F X X 7.CGRAM 位 址 設 定 0 0 0 1 AC5 AC4 AC3 AC2 AC1 AC0 8.DDRAM 位 址 設 定 0 0 1 AD6 AD5 AD4 AD3 AD2 AD1 AD0 X:Don'care 表 4-4 LCD 指 令 控 制 表 1. 清 除 顯 示 器 2. 游 標 歸 位 37

3. 進 入 模 式 設 定 : I/D S 作 用 0 0 存 取 DDRAM 之 後,AC-1, 游 標 左 移 1 0 1 存 取 DDRAM 之 後,AC+1, 游 標 右 移 1 1 0 寫 入 DDRAM 之 後, 游 標 不 變, 顯 示 幕 整 個 右 移 1 1 1 寫 入 DDRAM 之 後, 游 標 不 變, 顯 示 幕 整 個 左 移 1 4. 顯 示 幕 ON/OFF 控 制 D: 0: 關 閉 顯 示 幕 1: 打 開 顯 示 幕 C: 0: 游 標 不 顯 示 1: 游 標 顯 示 B: 0: 游 標 所 在 字 元 閃 爍 1: 游 標 所 在 字 元 不 閃 爍 5. 顯 示 器 或 游 標 移 動 S/C R/L 作 用 0 0 顯 示 幕 字 元 固 定, 游 標 左 移 1,AC-1 0 1 顯 示 幕 字 元 固 定, 游 標 右 移 1,AC+1 1 0 顯 示 幕 字 元 與 游 標 左 移 1,AC 不 變 1 1 顯 示 幕 字 元 與 游 標 右 移 1,AC 不 變 38

6. 功 能 設 定 : DL: 1: 資 料 長 度 8bit 0: 資 料 長 度 4bit N: 0: 單 列 顯 示 1: 雙 列 顯 示 F: 0:5*7 字 型 1:5*10 字 型 7. CGRAM 位 址 設 定 : 設 定 AC5 到 AC0 為 CGRAM 所 在 位 址 8. DDRAM 位 址 設 定 設 定 AC6 到 AC0 為 DDRAM 所 在 位 址 39

5-1 系 統 流 程 第 五 章 實 作 21 點 我 們 一 開 始 將 SimLab 裡 4*5 鍵 盤 的 第 一 列 由 左 至 右 依 序 標 號 如 下 圖 : 圖 5-1 鍵 盤 配 置 圖 程 式 一 啟 動 即 在 LCD 上 顯 示 歡 迎 畫 面 五 秒 : 圖 5-2 歡 迎 畫 面 然 後 跳 到 下 注 畫 面, 此 時 畫 面 會 顯 示 出 錢 跟 賭 注 : 圖 5-3 下 注 畫 面 40

此 時 按 鍵 功 能 : 1: 賭 金 +1 2: 賭 金 -1 3. 下 注 完 畢 4.RESET: 整 個 程 式 重 新 RESET 下 注 完 畢 之 後, 莊 家 玩 家 各 發 兩 張 牌 : 圖 5-4 初 始 發 牌 畫 面 此 時 按 鍵 功 能 : 1: 要 牌 2. 牌 夠 了 3. 牌 夠 了 4.RESET: 整 個 程 式 重 新 RESET 當 要 牌 到 爆 點 時, 則 畫 面 顯 示 BOMB!! 按 按 鍵 3 繼 續 下 一 局 圖 5-5 爆 點 畫 面 41

若 要 牌 結 束, 或 點 數 >=21 點, 則 換 電 腦 取 牌, 當 電 腦 >=16 點 時, 判 斷 勝 負 : 圖 5-6 Lose 畫 面 圖 5-7 Deuce 畫 面 圖 5-8 Win 畫 面 42

圖 5-9 GAME OVER 畫 面 43

圖 5-10 系 統 流 程 圖 44

5-2 程 式 介 紹 5-2-1 記 憶 體 分 配 由 於 8051 組 語 的 變 數 儲 存 都 是 用 記 憶 體 位 置, 所 以 先 介 紹 一 下, 學 生 編 寫 程 式 時 的 記 憶 體 分 配 10H: 金 錢 11H: 賭 金 12H: 莊 家 牌 數 13H: 玩 家 牌 數 14H: 莊 家 點 數 15H: 玩 家 點 數 16H: 呼 叫 函 式 時, 計 算 莊 家 或 玩 家 0: 莊 家 1: 玩 家 20H~24H: 莊 家 的 牌 25H~29H: 玩 家 的 牌 30H~3CH: 每 張 牌 所 代 表 的 點 數 5-2-2 亂 數 取 牌 8051 裡 面 並 沒 有 亂 數 產 生 器, 再 看 完 8051 的 功 能 之 後, 由 於 C 語 言 的 亂 數 產 生 是 以 時 間 為 基 礎 來 產 生, 所 以 我 就 想 到 用 計 時 器, 抓 到 數 字 除 以 52, 可 以 得 到 一 個 介 於 0~51 的 亂 數, 當 我 在 除 以 13 之 後, 商 即 為 花 色, 餘 數 即 為 牌 數 取 完 之 後, 必 須 檢 查 已 抽 的 牌, 是 否 有 重 複 SETB TR0 ; 設 定 計 時 器 0 起 動 必 須 在 有 按 鍵 之 前 啟 動, 否 則 就 無 法 取 到 亂 數 時 間 45

;@@@@@ 抓 牌, 先 把 要 放 牌 的 位 置 存 在 R2 再 呼 叫 CCD: MOV A,TH0 ; 抓 取 時 間 MOV B,#34H ; 除 以 52 DIV AB ;B= 牌 MOV R3,12H ;R3= 莊 家 的 牌 數 MOV R0,#20H ; 莊 家 牌 起 始 位 置 CCD2: CJNE R3,#00H,CCD0 ;R3!=0 則 跳 到 CCD0 檢 查 JMP CCD3 ; 莊 家 檢 查 完 畢, 跳 到 檢 查 玩 家 CCD0: MOV A,@R0 ; 檢 查 是 否 有 重 複 CJNE A,B,CCD1 JMP CCD CCD1: INC R0 ; 牌 的 位 置 +1 DJNZ R3,CCD2 CCD3: MOV R3,13H ;R3= 玩 家 的 牌 數 MOV R0,#25H ; 玩 家 牌 起 始 位 置 CCD6: CJNE R3,#00H,CCD4 ;R3!=0 則 跳 到 CCD0 檢 查 MOV A,B ; 檢 查 完 畢, 將 牌 存 入 MOV R1,R2 MOV @R1,A RET CCD4: MOV A,@R0 ; 檢 查 是 否 有 重 複 CJNE A,B,CCD5 JMP CCD CCD5: INC R1 ; 牌 的 位 置 +1 DEC R3 JMP CCD6 ;@@@@@ 46

5-2-3 鍵 盤 SimLab 裡 的 4*5 鍵 盤 電 路 圖 如 下 : 圖 5-11 鍵 盤 電 路 圖 所 以 我 們 必 須 用 掃 描 的 方 式 來 知 道 說 鍵 盤 被 按 下, 程 式 中 只 用 到 4 個 按 鍵, 所 以 我 們 僅 使 用 第 一 列, 且 由 於 P1.0 被 LCD 用 掉 了, 所 以 在 SimLab 中, 我 將 第 一 列 原 本 是 P1.0 改 成 P3.0, 以 下 是 程 式 碼 : KB: KB0: CLR P3.0 MOV A,P2 ; 掃 描 CJNE A,#0FFH,KB0; 偵 測 按 鍵 是 否 被 按 下 JMP KB ACALL DELAY10MS ; 解 彈 跳 ACALL DELAY10MS SETB P3.0 CJNE A,#0FEH,KB1 47

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ; 第 一 顆 按 鍵 被 按 下 執 行 的 地 方 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ KB1: CJNE A,#0FDH,KB2 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ; 第 二 顆 按 鍵 被 按 下 執 行 的 地 方 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ KB2: CJNE A,#0FBH,KB3 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ; 第 三 顆 按 鍵 被 按 下 執 行 的 地 方 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ KB3: ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ; 第 四 顆 按 鍵 被 按 下 執 行 的 地 方 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5-2-4 關 於 LCD 先 前, 我 們 在 4-2 有 介 紹 LCD 使 用 的 原 理, 接 下 來 介 紹 中 如 何 實 際 應 用 圖 5-12 SimLab LCD 腳 位 配 置 圖 首 先 先 寫 一 個 將 指 令 寫 入 LCD 指 令 暫 存 器 的 函 式 的 函 式, 以 後 當 我 們 要 將 指 令 寫 入 LCD 時, 即 可 將 指 令 存 在 暫 存 器 A 裡 面, 然 後 呼 叫 此 函 式 : 48

;@@@@@ 將 指 令 寫 入 指 令 暫 存 器 ISET: MOV P0,A MOV P1,#04H ;E=1, RW=0, RS=0 MOV P1,#00H ;E=0, RW=0, RS=0 ACALL DELAY40US RET ;@@@@@ 再 來 是 將 資 料 寫 入 LCD 的 資 料 暫 存 器, 先 將 資 料 放 在 暫 存 器 A 裡 面, 再 呼 叫 此 函 式 : ;@@@@@ 將 資 料 寫 進 資 料 暫 存 器 DSET: MOV P0,A MOV P1,#05H ;E=1, RW=0, RS=1 MOV P1,#01H ;E=0, RW=0, RS=1 ACALL DELAY40US RET ;@@@@@ 為 了 顯 示 訊 息 方 便, 同 時 設 計 了 一 個 函 式 以 便 顯 示 字 串, 首 先 必 須 先 將 暫 存 器 DPTR 指 到 字 串 位 置, 且 字 串 位 置 必 須 用 0 結 尾, 且 呼 叫 函 式 前 必 須 先 設 定 好 DDRAM 的 位 置, 才 能 在 正 確 的 位 置 中 顯 示 字 串 : ;@@@@@ 必 須 先 將 DTPR 指 到 一 筆 資 料, 但 最 後 一 個 必 須 為 0 SINDD: CLR A MOVC A,@A+DPTR JZ SINDD0 ACALL DSET INC DPTR SJMP SINDD SINDD0: RET ;@@@@@ 49

以 上 這 些 程 式 片 段, 大 致 上 都 是 必 須 使 用 實 習 板, 必 須 配 合 不 同 的 實 習 板 來 撰 寫, 因 此 在 此 大 致 上 介 紹 一 下, 其 他 部 分 基 本 上 就 是 一 大 堆 的 運 算, 以 及 暫 存 器 的 搬 過 來 搬 過 去, 因 此 在 這 裡 就 不 多 加 詳 述 50

第 六 章 結 果 與 建 議 6-1 21 點 - 與 電 腦 拔 河 6-1-1 遊 戲 的 公 平 性 在 規 則 裡 面, 有 些 規 則 是 利 於 莊 家 的, 有 些 規 則 是 利 於 玩 家 的 此 章, 我 們 將 討 論, 在 假 設 亂 數 夠 亂 的 情 況 下, 到 底 是 莊 家 贏 面 大, 還 是 贏 面 大, 基 於 賭 場 優 勢, 學 生 在 此 章 之 前, 大 膽 推 測, 莊 家 贏 面 大 ( 不 然 賭 場 賺 什 麼 呢?) 我 們 先 來 看 看 規 則 對 於 莊 家 玩 家 之 間 的 利 弊 : 莊 家 優 勢 : 當 玩 家 超 過 21 點 時, 直 接 獲 勝 玩 家 優 勢 : 當 莊 家 不 到 17 點 一 定 要 拿 牌, 但 一 但 達 到 17 點 就 必 須 停 止 了 網 路 上, 許 多 玩 家 討 論 著, 當 莊 家 檯 面 上 以 及 自 己 的 排 幾 點 時 是 否 要 牌, 但 由 於 21 點 的 規 則 千 變 萬 化, 此 程 式 只 是 將 最 基 本 的 規 則 寫 進 去 而 已, 單 純 輸 了 錢 就 沒 了, 平 手 錢 可 以 拿 回 來, 贏 了 可 拿 回 賭 金 的 一 倍 作 為 報 酬, 在 研 究 了 網 路 上 一 些 玩 家 的 策 略 之 後, 決 定 擬 訂 一 個 基 本 的 策 略, 來 跟 電 腦 對 戰 一 千 回 合, 併 統 計 出 勝 負 數 字, 來 看 看 莊 家 佔 多 少 優 勢 6-1-2 策 略 擬 定 根 據 網 路 上 的 玩 家, 以 及 學 生 所 設 計 的 21 點, 學 生 擬 訂 一 套 策 略 來 跟 電 腦 對 戰, 以 下 是 學 生 的 策 略 : 1. 如 果 莊 家 牌 面 為 Ace, 則 如 果 沒 有 19 點 不 停 2. 如 果 自 己 牌 面 有 Ace, 則 沒 有 19 點 不 停 3. 如 果 莊 家 玩 家 均 無 Ace, 則 沒 有 17 點 不 停 接 下 來 準 備 跟 電 腦 大 戰 一 百 回 合 51

6-2 統 計 資 料 累 計 次 數 \ 輸 贏 次 數 獲 勝 比 率 落 敗 比 率 平 手 比 率 50 16 32% 30 60% 4 8% 100 32 32% 59 59% 9 9% 150 50 33% 84 56% 16 11% 200 69 34% 109 55% 22 11% 250 89 35% 133 54% 28 11% 300 102 34% 163 54% 35 12% 350 126 36% 184 53% 40 11% 400 133 33% 226 57% 41 10% 450 154 34% 254 56% 42 10% 500 175 35% 279 56% 46 9% 550 190 35% 310 56% 50 9% 600 205 34% 338 56% 57 10% 650 229 34% 368 56% 63 10% 700 241 34% 404 57% 65 9% 750 260 34% 427 57% 73 9% 800 271 34% 447 56% 82 10% 850 287 34% 478 56% 85 10% 900 304 34% 508 56% 88 10% 950 321 34% 534 56% 95 10% 1000 341 34% 559 56% 100 10% 表 5-1 玩 一 千 次 勝 負 統 計 表 52

結 論 : 玩 到 最 後, 勝 負 和 比 率 大 致 在 34:56:10 上 下, 果 然 莊 家 比 較 佔 有 優 勢, 不 過 也 沒 說 過 於 離 譜, 如 果 運 氣 真 的 很 好 很 好 很 好, 才 有 可 能 贏 錢 吧, 所 以 以 後 有 錢 的 千 萬 不 要 當 玩 家, 要 當 莊 家 6-3 未 來 展 望 21 點 的 規 則, 基 本 上 因 時 地 置 宜, 因 此 規 則 千 變 萬 化, 這 次 僅 寫 出 最 基 本 的 勝 負, 賭 金 方 面, 也 都 僅 為 1 倍, 因 此 如 果 有 機 會, 可 以 研 究 出 各 種 規 則 裡 面 的 差 異, 以 及 公 平 性, 到 底 哪 種 規 則 最 公 平, 最 富 有 趣 味 性, 或 者 是 說 金 錢 達 到 某 一 目 的 時, 會 有 某 種 精 神 上 的 獎 勵 ( 如 : 美 女 圖 ), 這 樣 也 都 不 錯 再 來 為 硬 體 上 的 限 制, 此 次 僅 在 模 擬 軟 體 上 面 執 行 系 統, 如 有 機 會, 可 以 將 它 移 植 到 版 子 上 面, 甚 至 如 果 可 以 直 接 做 成 一 個 小 塊 的 版 子 來 玩, 更 能 發 揮 單 晶 片 系 統 的 精 神 53

參 考 文 獻 微 處 理 機 應 用 (8051/8052 基 本 原 理 與 應 用 ) 吳 鴻 璋 著 ISBN 986-7287-09-6 8051 單 晶 片 為 電 腦 原 理 與 實 作 李 齊 雄 游 國 幹 著 ISBN 957-652-357-5 單 晶 片 8051 原 理 與 實 作 鐘 明 政 著 21 點 規 則 : http://casinochance.com/cn/help/bj.html 21 點 遊 戲 分 析 http://hoi-yin.com/book_3.htm http://2winmore.com/games/game_12/game12_index.htm 54

誌 謝 首 先 要 感 謝 的, 當 然 是 指 導 老 師 - 陳 德 生 老 師, 自 大 二 升 大 三 的 暑 假, 到 補 發 表 的 四 下, 老 師 儘 管 很 忙, 卻 常 常 撥 時 間 與 我 們 專 題 生 meeting, 從 一 開 始 的 決 定 題 目, 到 遇 到 瓶 頸, 再 換 題 目, 老 師 總 是 能 不 厭 其 煩 的, 給 我 們 指 引, 給 我 們 方 向, 在 硬 體 設 備 上, 也 大 力 的 支 持, 使 我 們 不 用 耗 費 心 力 取 籌 措 硬 體 設 備, 不 像 有 些 同 學 做 專 題, 光 硬 體 設 備 就 花 了 一 筆 錢 在 參 考 資 料 上, 老 師 不 只 會 叫 我 們 自 己 找, 同 時 老 師 自 己 也 會 上 網 幫 我 們 看 看, 甚 至 直 接 拿 之 前 或 別 間 學 校 的 學 長 己 經 作 過 的 論 文 給 我 們 參 考, 這 些 寶 貴 的 資 料, 更 讓 我 們 在 做 專 題 期 間, 省 去 不 少 找 資 料 了 時 間 總 之, 真 的 覺 得 很 幸 運 找 陳 德 生 老 師 做 專 題, 在 這 完 成 專 題 的 時 刻, 由 衷 的 在 這 裡 說 一 聲, 老 師, 謝 謝 你 55