《單片機原理與應用》筆記
第1章 單片機概述
1.1 教學要求
- 了解單片機的基本概念及應用
- 熟練掌握單片機的軟、硬體知識
- 能應用單片機實驗平臺完成基本實驗
- 能應用單片機完成簡單開發
1.2 單片機簡介
單片機即單片機微型單片機,是將單片機主機(CPU、記憶體和I/O介面)集成在一小塊硅片上的微型機,
單片機為工業測控而設計,又稱微控制器(MCU),
具有三高優勢(集成度高、可靠性高、性價比高),主要應用于工業檢測與控制、單片機外設、智能儀器儀表、通訊設備、家用電器等,特別適合于嵌入式微型機應用系統,
單片機開發系統有單片單板機和仿真器,實作單片機應用系統的硬、軟體開發,
1.3 發展概況
- 第一階段(1974~ 1978):初級單片機階段,以Intel公司的MCS-48為代表
- 第二階段(1978~1983):高性能單片機階段,以MCS-51系列為代表
- 第三階段(1988年~):8位單片機鞏固、完善及16位單片機推出階段,以MCS-96系列為代表
- 1976-1978初級8位單片機Intel MCS-48系列
- 1978- 高檔8位單片機Intel MCS-51系列:
a) -51子系列:8031/8051/8751
b) -52子系列:8032/8052/8752 - 低功耗型80C31高性能型80C252廉價型89C2051/10512
- 1983- 16位單片機Intel MCS-96系列:
a) 8098/8096
b) 80C198/80C196
c) 32位單片機80960
1.4 發展趨勢
- CPU的改進
a) 采用雙CPU結構,以提高處理能力
b) 增加資料總線寬度
c) 采用流水線結構 - 存盤器的發展
a) 加大存盤容量
b) 片內EPROM開始FLASH化
c) 程式保密化 - 片內I/O的改進
a) 增加并行口的驅動能力
b) 增加/O口的邏輯控制功能
c) 通信及網路功能加強, - 集成更多的外圍電路
- 引腳的多功能
- 低功耗
- 專用型單機發展加快
1.5 技術指標
- 字長:8位機、16位機、32位機,
- 記憶體容量:
a) 容量單位:1K=210=1024,1M=220
b) 8K、64K、16M、64M - 運算速度:
a) 時鐘頻率、主頻、每秒運算次數
b) 6MHz、12MHz、24MH、100MHz、300MHz - 記憶體存取周期:50nS、70nS、200nS
1.6 運算基礎
| 十進制 | 二進制 | 十六進制 | 十進制 | 二進制 | 十六進制 |
|---|---|---|---|---|---|
| 0 | 0000 | 0 | 8 | 1000 | 8 |
| 1 | 0001 | 1 | 9 | 1001 | 9 |
| 2 | 0010 | 2 | 10 | 1010 | A |
| 3 | 0011 | 3 | 11 | 1011 | B |
| 4 | 0100 | 4 | 12 | 1100 | C |
| 5 | 0101 | 5 | 13 | 1101 | D |
| 6 | 0110 | 6 | 14 | 1110 | E |
| 7 | 0111 | 7 | 15 | 1111 | F |
- 十進制ND:逢十進一
- 二進制NB:逢二進一
- 十六進制NH:逢十六進一
1.7 結構框圖

1.8 性能介紹
MCS-51系列芯片主要性能
| 型號 | 片內ROM | 片內RAM | 尋址范圍 | 計數器 | 并行口 | 串行口 | 中斷源 |
|---|---|---|---|---|---|---|---|
| 8031 | 無 | 128B | 2X64KB | 2X16 | 4X8 | 1 | 5 |
| 8051 | 4KB | 128B | 2X64KB | 2X16 | 4X8 | 1 | 5 |
| 8751 | 4KB | 128B | 2X64KB | 2X16 | 4X8 | 1 | 5 |
| 80C31 | 無 | 128B | 2X64KB | 2X16 | 4X8 | 1 | 5 |
| 80C51 | 4KB | 128B | 2X64KB | 2X16 | 4X8 | 1 | 5 |
| 87C51 | 4KB | 128B | 2X64KB | 2X16 | 4X8 | 1 | 5 |
MCS-96系列芯片主要性能
| 型號 | 片內ROM/EPROM | 暫存器 | 內部RAM | 定時器計時器 | A/D通道 | I/O引腳 | 高速輸入/輸出 | 串行口 PWM | 速度MHz | 尋址空間 |
|---|---|---|---|---|---|---|---|---|---|---|
| 8098 | 8K | 232 | 0 | 2 | 4 | 32 | HSIO | 1 | 1 | 12 |
| 80C196KB | 無 | 232 | 0 | 2 | 8 4 | 8 | HSIO | 1 | 1 | 12,16 |
| 83C196KB | 8K | 232 | 0 | 2 | 8 | 48 | HSIO | 1 | 1 | 12,16 |
| 87C196KB | 8K | 232 | 0 | 2 | 8 | 48 | HSIO | 1 | 1 | 12,16 |
| 8XC196KC | 16K | 488 | 0 | 2 | 8 | 48 | HSIO | 1 | 3 | 16,20 |
| 8XC196KD | 32K | 1000 | 0 | 2 | 8 | 48 | HSIO | 1 | 3 | 16,20 |
1.9 應用介紹
- 單片機在各類儀器儀表中的應用
- 單片機在工業測控中的應用
- 單片機在單片機網路與通信技術中的應用
- 單片機在日常生活及家電中的應用
- 商業流通領域、汽車電子及航空電子
1.10 可做的實驗
- LED電路,8只獨立LED發光管,可做指示或各種閃爍效果用
- 數碼管電路,4只共陽一體8段數碼顯示管,可實作各種資料顯示,如計數、時鐘等
- 蜂鳴器電路,可用于設計各種提示音、演奏音樂等
- 鍵盤電路,學習按鍵控制相關編程
- LCD顯示電路,編程控制LCD顯示
- 串口電路,學習編程實作JD51和PC或其他符合該通信協議的電路之間的通信
- 紅外電路,通過選配的紅外遙控器,學習紅外解碼并可實作紅外遙控JD51
- 溫度模塊電路,采用一線式溫度傳感器實作溫度的采集并可顯示在數碼管或者LCD上,通過溫度資料處理便可實作溫度控制器功能
- 除了以上提到的可編程電路本學習板還有一些常用的不可編程電路,包括電源電路、復位電路、晶振電路等,
第2章 MCS-51單片機的結構與原理
2.1 MCS-51單片機的硬體功能
-
8051單片機的主要功能方框圖

-
共性
a) 一個8位CPU
b) 片內振蕩和定時電路
c) 128B內部RAM(00H~7FH)
d) 4個8位并行I/O口
e) 2個16位可編程定時/計數器
f) 一個全雙工串行口
g) 5個中斷源(可編程為兩個優先級)
h) 22個SFR(除PC外,其余21個分散在80H~FFH之間)
i) 堆疊深度可達80B(30H~7FH)
j) 16B(128位,20H~2FH)可位尋址區
2.2 MCS51硬體系統結構

2.3 存盤器結構
2.3.1 CPU內部結構
- 算術邏輯運算單元ALU(8位)
+、–、×、÷算術運算,與、或、非、異或邏輯運算、回圈移位、位處理, - 暫存器陣列
a) 作業暫存器R0~R7(8位)
暫存運算資料和中間結果,4個作業暫存器區,作業暫存器0區~3區,每個區均含8個暫存器R0~R7,用PSW中的兩位PSW.4和PSW.3來切換作業暫存器區,選用一個作業暫存器區進行讀寫操作,
b) 累加器Acc(8位)
需要ALU處理的資料和計算結果多數要經過A累加器,
c) 暫存器B(8位)
與A累加器配合執行乘、除運算,也可用作通用暫存器,
d) 程式狀態字PSW(8位)
存放ALU運算程序的標志狀態
Cy AC F0 RS1 RS0 OV — P
e) 資料指標DPTR(16位)
存放片外存盤器地址,作為片外存盤器的指標,可分成兩個8位暫存器DPH、DPL使用,
f) 堆疊指標SP(8位)
堆疊是按“先進后出”原則存取資料的存盤區,MCS-51堆疊設在片內RAM區,資料入堆疊/出堆疊時,SP自動加1/減1,其內容始終為堆疊頂地址,復位時SP=07H,
g) 程式計數器PC(16位)
CPU總是按PC的指示讀取程式,PC可自動加1,因此CPU執行程式一般是順序方式,當發生轉移、子程式呼叫、中斷和復位等操作,PC被強制改寫,程式執行順序也發生改變,
復位時,PC=0000H,

2.3.2 程式存盤器
- 在MCS-51的指令系統僅有兩條:
a) MOVC A,@A+DPTR
b) MOVC A,@A+PC - 復位后,程式計數器PC的內容為0000H
- MCS-51最多可外擴64K位元組程式存盤器

2.3.3 資料存盤器
- 從00H~1FH的32B單元是4個作業暫存器組,
- 地址20H~2FH的16B共128位,是可位尋址的內部RAM區,它們既可位元組尋址,亦可位尋址,
- 其他80B是只能按位元組尋址的內部RAM區,為用戶區,
MCS-51單片機的堆疊安排在內部RAM內,堆疊的深度以不超過內部RAM的空間為限,
2.3.4 堆疊
- 堆疊的概念:堆疊是一種只允許在其一端進行資料插入和洗掉操作的一種資料結構,資料存取為“后進先出”,
- 堆疊的功能:保護斷點和現場資訊,
- 堆疊的建立:MCS-51的堆疊是設定在內部RAM 30H~7FH空間中,堆疊底為低地址單元,堆疊指標為SP,
2.3.5 特殊功能暫存器SFR
- 程式計數器(PC、16位):存放將要執行的指令地址,
- 累加器(ACC、8位):存放資料或中間結果,
- B暫存器(8位):主要用于乘、除運算,
- 資料指標(DPTR、16位):存放外部資料存盤器的地址,
- 程式狀態字(PSW、8位):用于寄存程式運行的狀態資訊,
2.3.6 外部資料存盤器
- MCS-51外部資料存盤器尋址空間為64KB
- MCS-51同外部資料存盤器的指令有4條:
a) MOVX A,@Ri
b) MOVX A,@DPTR
c) MOVX @Ri, A
d) MOVX @DPTR,A - R0,R1為8位暫存器,尋址范圍256B
- DPTR為16位的資料指標,尋址范圍64KB,
2.4 I/O埠
- MCS-51有4個雙向的8位并行I/O口:P0~P3
- 每一個口都有一個8位的鎖存器
- 復位后它們的初始狀態為全“1”
P0口是三態雙向口:
既可作為并行I/O口,也可作為資料總線口,
當外部擴展了存盤器或I/O埠,則只能作資料總線和地址總線低8位,
P1口是專門供用戶使用的I/O口,是準雙向介面
P2口是準雙向介面,既可作為并行I/O口,也可作為地址總線高8位口
當外部擴展了存盤器或I/O埠,則只能作地址總線高8位
P3口是準雙向口,又是雙功能口
該口的每一位均可獨立地定義為第二功能,作為第一功能使用時,口的結構與操作與P1口相同

- I/O的介面要求與負載能力
a) P1,P2,P3口內部均有上拉電阻,當它們用作輸入方式時,對應的口鎖存器必須先“置”1
b) P0口內部沒有上拉電阻,當它作為通用I/O時,外接上拉電阻,在用作地址/資料線時,不必外加上拉電阻
c) P0口的每位輸出可驅動8個LSTTL負載,P1-P3口可驅動4個LSTTL負載,
2.5 復位電路
- 復位后PC值為0000H,故復位后的程式入口地址為0000H;
- 復位后PSW=00H,使片記憶體儲器中選擇0區作業暫存器,用戶標志為F0為0狀態;
- 復位后SP=07H,設定推堆疊堆疊底為07H;
- 復位后的P1,P2,P3口鎖存器全為1狀態,使這些準雙向口皆處于輸入狀態;
- 內部RAM不受復位的影響,
復位電路的基本功能是:系統上電時提供復位信號,在加電瞬間,RST端出現一定時間的高電平,直至系統電源穩定后,撤銷復位信號,

2.6 CPU時序
- CPU執行一條指令的時間稱為指令周期,它是以機器周期為單位的,MCS-51典型的指令周期為一個機器周期,
- 每個機器周期由6個狀態周期組成,每個狀態周期由2個振蕩周期組成,狀態周期即S1、S2、S3、S4、S5、S6,而每個狀態周期由兩個節拍Pl,P2組成,
- 大多數8051指令執行時間為一個機器周期,MUL(乘法)和DIV(除法)需要4個機器周期,
2.7 CPU引腳功能
- 埠線(4×8=32條)
a) P0.0-P0.7
b) P1.0-P1.7
c) P2.0-P2.7
d) P3.0-P3.7 - 電源線(2條):
a) VCC為+5V電源線
b) VSS為地線 - 控制線(6條)
a) ALE/PROG :地址鎖存允許/編程線
配合P0口引腳的第二功能使用,用于把這個片外存盤器低8位地址鎖存到外部專用地址鎖存器
在不訪問片外存盤器時,MCS-51自動在ALE線上輸出頻率為fosc/6的脈沖序列,該脈沖序列可用作外部時鐘源或作為定時脈沖源使用
它可以在對8751片內EPROM編程/校驗時傳送5ms寬的負脈沖,
b) EA/VPP:允許訪問片外存盤器/編程電源線
控制MCS-51使用片內ROM還是使用外ROM,
若=1,則允許使用片內ROM;
若=0,則只能使用片外ROM,
對8751的EA/VPP用于在片內EPROM編程/校驗時輸入21V或12.5V編程電源,
c) PSEN:片外ROM選通線
執行訪問片外ROM的指令MOVC時,自動在線上產生一個負脈沖,用于為片外ROM芯片的選通(相當于讀信號RD),其他情況下,線均為高電平封鎖狀態,
d) RST/VPD:復位/備用電源線
使CPU處于復位(即初始化)作業狀態,復位有上電自動復位和人工按鈕復位兩種
RST/VPD的第二功能是作為備用電源輸入端,當主電源VCC,發生故障而降低到規定低電平時,RST/VPD線上的備用電源自動投入,以保證片內RAM中資訊不丟失,
e) XTAL1和XTAL2:片內振蕩電路輸入/輸出線
片內振蕩電路輸入/輸出線,這兩個端子用來外接石英晶體和微調電容,即用來連接片內OSC的定時反饋回路
2.8 單片機的作業方式
- 復位方式
a) 單片機在開機時都需要復位,以便CPU以及其他功能部件都處于一個確定的初始狀態,并從這個狀態開始作業
b) RST引腳是復位信號的輸入端
c) 復位信號是高電平有效,持續時間要有24個時鐘周期以上
d) 若時鐘頻率為12MHz,則復位脈沖寬度至少應為2μS,
e) 單片機復位后,堆疊指標SP為07H、ALE、PSEN、P0、P1、P2、和P3口各引腳均為高電平,片內RAM中內容不變, - 程式執行方式
a) 單步執行方式
單步執行方式是指按一次單步執行鍵就執行一條用戶指令的方式
單步執行方式常常用于用戶程式的除錯
單步執行方式是利用單片機外部中斷功能實作的
b) 連續執行方式
連續執行方式是單片機都需要的一種作業方式
被執行程式可以放在片內或片外ROM中
由于復位后程式計數器PC=0000H,可以預先在0000H處放一條轉移指令,以便跳轉到0000H~0FFFFH中的任何地方執行程式, - 節電方式
a) 待機方式:使用指令將PCON暫存器的IDL位置1即可
單片機進入待機方式時振蕩器仍然運行、CPU不作業、通用暫存器都保持原有狀態不變退出待機方式的方法有兩種:中斷和硬體復位,
b) 掉電保護方式:使用指令將PCON暫存器的PD位置1即可
單片機的一切作業全部停止、只有內部的RAM單元的內容被保存、I/O引腳狀態和相關的特殊功能寄、存器的內容相對應、ALE和為邏輯低電平, - EPROM的編程和校驗方式
a) 編程:是指利用特殊手段對單片機片內EPROM進行寫入的程序
b) 校驗:是對剛剛寫入的程式代碼進行讀出驗證的程序
c) 單片機的編程和校驗方式只有EPROM型器件才有,如8751這樣的器件,
第3章 MCS-51指令系統
3.1 指令編碼格式及分類
- 指令編碼格式
一條指令表示計算機所完成的某種操作,它通常由操作碼和運算元兩部分組成,
a) 單位元組指令(49條)
b) 雙位元組指令(46條)
c) 三位元組指令(16條) - 指令分類
a) 資料傳送類指令(29條)
b) 算術運算類指令(24條)
c) 邏輯運算類指令(24條)
d) 控制轉移類指令(17條)
e) 位操作指令(17條)
3.2 尋址方式
尋址方式是指運算元存放存盤單元地址的表示形式,MCS-51指令系統共提供七種尋址方式:
- 立即尋址:該方式把運算元(即立即數)包含在指令位元組中
- 直接尋址:該方式是把運算元的地址包含在指令位元組中,而運算元本身則存放在該地址指示的資料存盤單元中
- 暫存器尋址方式:該方式把運算元存放在指定的暫存器中,
- 暫存器間接尋址方式:該方式是把運算元的所在地址存放在指定的暫存器中
- 基址加變址尋址方式:該方式把DPTR或PC暫存器作為基址暫存器,累加器A作為變址暫存器,(A)+(PC)或(A)+(DPTR)的和作為運算元的16位地址,
- 相對尋址方式:這種尋址方式是以程式計數器PC的當前值為基準,加上指令中給出的相對偏移量rel以形成目標地址,
- 位尋址方式:MCS-51具有位處理功能,可以對二進制“位”進行操作,
a) 位尋址的尋址范圍
內部RAM中的20H-2FH位元組地址范圍,共128位,位地址為00H-7FH,
特殊功能暫存器的可尋址位,可位尋址的特殊功能暫存器有B、ACC、PSW、IP、IE、SCON、TCON、P0~P3,共11個,
PSW中的CY作為位累加器,
? 位尋址方式:位尋址方式使用直接尋址方式
? 直接地址方式:在指令中直接給出位地址,
? 點運算子方式:在位元組地址或暫存器名與位序號之間加一個點,
? 位名稱方式:直接給出暫存器的位名稱,
3.3 資料傳送類指令
指令中有資料源地址和傳送資料目標地址,傳送方向由源地址中的資料傳送到目的地址中,源地址中的內容不變;資料傳送類指令的執行結果不影響程式狀態暫存器(PSW)中的各標志位,
- 內部資料傳送指令:資料傳送在單片機內部進行,不通過外部總線,傳送速度快,
- 累加器與外部RAM之間的資料傳送指令
a) 由Ri提供外部RAM的單元地址
b) 由DPTR提供外部RAM單元地址 - 程式存盤器資料傳送指令:包括內部程式存盤器和外部程式存盤器
- 堆疊操作指令:堆疊是建立在內部RAM中,通過堆疊指示器SP進行讀寫操作
- 資料交換指令
a) 位元組交換指令
b) 半位元組交換指令
3.4 算術運算類指令
- 加法類運算指令
a) 加法指令(影響CY、OV、AC、P)
b) 帶進位位CY的加法(影響CY、OV、AC、P)
c) 加1指令 - 減法運算指令
a) 帶借位位CY的減法(影響CY、OV、AC、P)
b) 減1指令 - 乘除指令
a) 乘法指令
b) 除法指令 - 十進制調整指令
3.5 邏輯運算類指令
- 單運算元邏輯運算指令
a) 累加器清零
b) 累加器取反
c) 累加器回圈左移
d) 累加器回圈右移
e) 累加器帶進位CY回圈左移
f) 累加器帶進位CY回圈右移 - 雙運算元邏輯運算指令
a) 邏輯與
b) 邏輯或
c) 邏輯異或
3.6 控制程式轉移類指令
- 無條件轉移
a) 長轉移指令
b) 短轉移指令
c) 絕對轉移指令
d) 相對轉移指令 - 條件轉移指令
a) 累加器判零轉移指令
b) 比較轉移指令
c) 減‘1’不為零轉移指令 - 空操作指令
3.7 位操作類指令
- 位傳送指令
- 位置位和清除指令
- 位運算指令
- 位控制轉移指令
第4章 匯編語言程式設計
4.1 匯編語言陳述句格式
- 指令格式
[標號:]助記符 運算元1,運算元2[;注釋] 標號:由1-8個字符組成,且第一個字符必須是字母,用于指示指令的地址,
運算元:可使用二(B結尾)、十(D結尾或省略)、十六(H結尾)進制數和字串(加“”),
注釋:為不可執行部分,對程式加以說明, - 偽指令格式
偽指令是不可執行的指令,其功能是為匯編程式提供資訊,常用偽指令有:
a) 匯編起始地址命令:ORG
格式: ORG 地址
功能:規定程式的起始地址,省略時起始地址從0000H開始,
b) 匯編終止命令:END
格式: END 運算式
功能:源程式匯編終止,在主程式模塊中含有“運算式”給出程式的起始地址,在其它模塊(子程式)中運算式可省略,
c) 賦值命令:EQU
格式:字符名稱 EQU 運算式
功能:將運算式的值賦給字符名稱,運算式可以是常數、地址、標號和運算式,
d) 定義資料命令:DB、DW
格式:[標號:] DB 位元組資料項表
功能:從指定地址(即標號)開始,在程式存盤器中定義位元組資料,
格式: [標號:] DW 字資料項
功能:從指定地址(即標號)開始,在程式存盤器中定義16位字資料,高8位資料在低地址單元,低8位資料在高地址單元,
e) 定義存盤區命令:DS
格式: [標號:] DS 運算式
功能:從指定地址(即標號)開始,保留指定數目(運算式的值)的位元組單元作為存盤區,供程式運行使用(用于程式存盤器),
f) 位定義命令:BIT
格式:字符名稱 BIT 位地址
功能:將位地址賦給字符名稱,位地址為絕對地址或符號地址,
4.2 匯編語言程式設計
- 分支程式設計:一般情況下,程式按順序方式執行,但根據實際需要也可改變程式的執行順序,稱為分支程式,
a) 單分支結構
b) 雙分支結構
c) 多分支結構 - 回圈程式設計
a) 先執行后判斷結構
b) 先判斷后執行結構 - 子程式設計:在執行程序中需要由其它程式來呼叫,執行完畢又需要把執行流程回傳到呼叫該子程式的程式中,
- 布爾處理程式:MCS-5l微處理器的一個最大特點就是它有很強的布爾處理能力,即對布爾變數(位變數)的處理能力,所以它最擅長開關量控制,
4.3 Keil C51的應用
- C-51的特點:
a) C語言作為一種非常方便的語言而得到廣泛的支持,國內最通用的是Keil C51,
b) C語言程式本身不依賴于機器硬體系統,基本上不作修改就可將程式從不同的單片機中移植過來,
c) C提供了很多數學函式并支持浮點運算,開發效率高,故可縮短開發時間,增加程式可讀性和可維護性, - C-51的優點:
a) 對單片機的指令系統不要求了解,僅要求對8051的存貯器結構有初步了解;
b) 暫存器分配、不同存貯器的尋址及資料型別等細節可由編譯器管理;
c) 程式有規范的結構,可分成不同的函式,這種方式可使程式結構化;
d) 具有將可變的選擇與特殊操作組合在一起的能力,改善了程式的可讀性;
e) 提供的庫包含許多標準子程式,具有較強的資料處理能力;
f) 由于具有方便的模塊化編程技術,使已編好程式可容易地移植; - C-51的程式結構:與一般C語言的結構相同,以main()函式為程式入口,程式體中包含若干陳述句還可以包含若干函式
型別 函式名(引數表)
{
資料說明部分
陳述句執行部分
}
-
C-51的資料型別

-
C-51資料的存盤型別

-
C-51的包含的頭檔案
通常有:reg51.h math.h ctype.h stdio.h stdlib.h absacc.h
常用有:reg51.h (定義特殊功能暫存器和位暫存器);math.h (定義常用數學運算); -
C-51的運算子
+ - * / (加 減 乘 除)
> > = < < = (大于 大于等于 小于 小于等于)
== != (測驗等于 測驗不等于)
&& || ! (邏輯與 邏輯或 邏輯非 )
>> << (位右移 位左移)
& | (按位與 按位或)
^ ~ (按位異或 按位取反)
- C-51的基本陳述句
if 選擇語言
switch/case 多分支選擇語言
while 回圈語言
do-while 回圈語言
for 回圈語言
- 中斷服務程式
函式名()interrupt n
{ }
- I/O口定義
#include <absacc.h>
#define prot xbyte[0x1000]
或用指標定義
第5章 定時器/計數
5.1 定時/計數器的功能
MCS-51單片機內共有兩個可編程的定時/計數器T0和T1,它們都是十六位加法計數器結構,分別由TH0、TL0和TH1、TL1四個8位計數器組成,每個定時/計數器都具有定時和計數兩種功能,
- 計數功能
對外來脈沖進行計數,計數脈沖的輸入端來自單片機的兩個信號引腳T0(P3.4)和T1(P3.5),外部輸入的脈沖在負跳變時有效,計數脈沖的頻率最高為振蕩頻率的1/24, - 定時功能
定時功能也是通過計數器的計數來實作的,不過這時的計數脈沖來自單片機的內部,即每個機器周期產生一個計數脈沖,因此,計數頻率為振蕩頻率的1/12,這樣,不但可以根據計數器的預置值計算出定時時間,也可以反過來按定時時間的要求,計算出計數器的預置值,
5.2 與定時/計數器有關的暫存器
-
定時器控制暫存器(TCON)
該暫存器既參與中斷控制又參與定時控制,其主要功能是:定時器在溢位時,設定標志位(TFx),并控制定時器的運行或停止等(TRx), -
定時器方式暫存器(TMOD)
用于控制兩個定時/計數器的作業方式,高4位定義T1,低4位定義T0,位元組地址為89H,
5.3 定時/計數器作業方式
-
方式0
方式0是13位結構的作業方式,其計數器由TH1的全8位和TL1的低5位構成,TL1的高3位棄之不用,
計數方式:計數值的范圍為:1~8192(213)
定時方式:定時時間T的計算公式為:
T=(213-計數初值x)晶振周期12或T=(213-計數初值x)*機器周期
啟動的條件是:(TRx=1)AND(GATE=0 OR INTx=1) -
方式1
其邏輯電路和作業情況與方式0完全相同,所不同的只是組成計數器的位數為16位, 計數值的范圍為:1~65536(216)
定時時間的計算公式與方式0類似,即:
T=(216-計數初值x)晶振周期12或T=(216-計數初值x)*機器周期 -
方式2
方式2具有自動重新加載功能,即自動加載計數初值,該方式把16位計數器分為兩部分,既以TL1作計數器,以TH1作預置計數器,初始化時把計數初值分別裝入TL1和TH1中,當計數溢位后,由預置暫存器TH1,以硬體方法自動給計數器TL1重新加載,最大計數值只能到255,這種作業方式非常適用于回圈定時或回圈計數應用, -
方式3
在作業方式3下,T0被拆成兩個獨立的8位計數器,其中TL0既可以作計數器使用,又可以作定時器使用,其功能和操作方式與方式0或方式1完全相同,而TH0只能作8位定時器使用,并占用了T1的中斷資源TR1和TF1,
第6章 串行通信介面
6.1 串行資料通信基本原理
計算機的資料傳送有并行和串行兩種方式,
并行傳送的特點是:各資料位同時傳送,傳送速度快、效率高,但需要的資料線多,因此傳送成本高,并行資料傳送的距離通常小于30米,
串行傳送的特點是:資料傳送按位順序進行,最少只需一根傳輸線即可完成,成本低,但速度慢,串行資料傳送的距離可以從幾米到幾千公里,
- 異步串行通信的字符格式:異步串行資料通信以字符為單位,即一次傳送一個字符
- 串行通信的資料通路形式
a) 單工形式:A發,B接,
b) 半雙工形式:A發或接,B接或發,
c) 全雙工形式:A發、接,B接、發 - 串行通信的傳送速率:傳送速率用于說明資料傳送的快慢
- 串行通信介面電路
a) 資料傳送:資料傳送主要解決傳送中的標準、格式及作業方式等問題
b) 資料轉換:資料轉換是指資料的串并轉換
6.2 MCS-51單片機串行口
MCS-51單片機片內有一個全雙工串行口,既可以實作異步串行通信,還可以作為同步移位暫存器來使用,
定時器T1作為串行通信波特率發生器,
- 串行口暫存器結構
- 與串行通信有關的暫存器
- 串行口的作業方式
a) 方式0
方式0為同步移位暫存器方式,RXD端作為資料移位的入口或出口,TXD端提供移位時鐘脈沖,移位資料的發送和接收以8位為一幀,不設起始位和停止位,低位在前高位在后,波特率是固定的,為fOSC/12,即一個機器周期移位一次,
b) 方式1
資料發送是由一條寫發送暫存器(MOV SBUF,A)指令開始的,此后在串行口由硬體自動加入起始位和停止位,構成一個完整的幀格式,然后在移位脈沖的作用下,由TXD端串行輸出,一個字符幀發送完后,使TXD端輸出線維持高電平,并將TI置位,通知CPU可以發送下一個字符,
c) 方式2和方式3
1位起始位(0)、8位資料位(D0~D7)、1位可編程位(D8)和1位停止位(1),D8位既可作為奇偶校驗位,也可作為控制位使用,其功能由用戶來確定,發送時,可編程位D8(TB8)可設定為0(CLR TB8)或1(SETB TB8),接收時,TB8送入SCON暫存器中RB8位,
第7章 中斷系統
7.1 中斷概述
中斷技術是在微機中廣泛使用的一種資源共享技術,
- 中斷:中斷是指當CPU在正常執行程式時,由于外部或內部事件強迫CPU停止當前執行的程式,轉去為事件服務(中斷服務),服務完畢,又能自動回傳到被中斷的程式中繼續執行,
- 中斷功能:
a) 實作CPU與外設的速度匹配和并行作業;
b) 實作實時控制;
c) 實作故障檢測和自動處理, - 中斷控制
a) 設定中斷源(引起中斷的事件),確定它們提出中斷請求的方式;
b) 確定中斷優先級和中斷的嵌套方式;
c) 中斷現場的保護與恢復,

圖7-1 中斷嵌套示意圖
4. 中斷處理程序
a) 中斷源提出申請,并建立相應的中斷標志(由硬體置位標志位);
b) CPU結束當前指令,回應該中斷申請,同時把主程式斷點處地址(程式計數器PC當前值)壓入堆疊,即保護斷點;
c) 保護現場,把斷點處的有關資訊(如作業暫存器、累加器、標志位的內容),壓入堆疊;
d) 執行中斷服務程式;
e) 恢復現場,把保存的現場內容從堆疊彈出,以恢復暫存器和存盤單元的原有內容;
f) 回傳主程式(或呼叫程式),執行中斷回傳指令,把斷點處地址從堆疊頂彈出,從斷點處繼續執行主程式(或呼叫程式),
7.2 MCS-51中斷系統
- 中斷源
a) 5個中斷源:2個外部中斷INT0、INT1,3個內部中斷T0、T1、串行口,
b) 2個優先級:高級中斷和低級中斷,由用戶定義, - 中斷控制暫存器
a) TCON:定時控制暫存器
b) SCON:串行口控制暫存器
c) IE:中斷允許暫存器
d) IP:中斷優先級暫存器 - 中斷請求的撤除
中斷回應后,如果不及時清除中斷請求標志,會引起中斷的混亂,
a) 定時中斷由硬體自動撤除
定時中斷回應后,硬體自動把標志位(TFx)清零,
b) 外部中斷的自動與強制撤除
若外部中斷以脈沖方式觸發,則由硬體自動地把標志位(IEx)清零,若以電平方式觸發,則需由外部電路和軟體配合撤除,
c) 串行中斷軟體撤除
串行中斷的標志位是TI和RI,但對這兩個中斷標志位不進行自動清零,因為在中斷回應后,還需測驗這兩個標志位的狀態,以判定是接收操作還是發送操作,然后才能清除,所以串行中斷請求的撤除應使用軟體方法,
7.3 中斷管理

圖7-3 中斷管理
7.4 擴充中斷源
定時器T0設定為方式2(自動重裝常數)外部計數方式,TH0、TL0的初值均為0FFH,并允許T0中斷,且CPU開放中斷,
第8章 單片機系統擴展設計
8.1 系統介面擴展技術
- 資料總線:片外器件的資料總線寬度不超過8位時,直接與單片機相連即可;大于8位時,需要分時來存取,
- 地址總線:先對片外器件分配地址,然后進行相應的硬體連接,
- 控制總線:根據片外器件作業的定時邏輯,利用單片機控制信號以及與I/O口線的組合,完成對器件的控制和讀寫操作,
8.2 存盤器擴展技術
通常把半導體存盤器分為易失性存盤器和非易失性存盤器
- 存盤器擴展的基本方法
a) 按照總線連接方式,MCS-51單片機擴展存盤器可分為并行擴展和串行擴展,
b) 基本方法是:按照單片機和不同存盤器芯片的時序,來完成硬體連接和軟體編程,
c) 存盤器的基本操作控制包括片選控制和讀寫操作控制, - 存盤器片選控制
串行介面擴展時,通常采用I/O口來選擇相應的存盤器,地址資訊包含在串行協議中,
采用并行介面時,片選的方法有:
a) 線選法:如果芯片數較少,只需要用單片機的高位地址線分別接到各個芯片的片選端即可,這樣不需另加電路,但地址空間可能是不連續的,
b) 譯碼選通法:在擴展芯片數目較多或要求連續的地址空間時,采用譯碼器來譯碼產生片選信號,
單片機并行擴展時,高位地址線可能有空閑(P2口高位),但已不適宜簡單地作I/O線使用,
8.3 輸入輸出(I/O)和中斷擴展技術
- 并行擴展I/O介面
a) 對輸入/輸出口功能的擴展,可以利用簡單的TTL電路或MOS電路,也可以使用結構較為復雜的可編程介面芯片,
b) TTL電路有54系列軍品級器件、民品74LS系列;MOS中常用CMOS電路,如74HC系列,
c) 典型的可編程介面器件是Intel公司及其兼容的介面芯片:可編程并行介面(8155、8255)、可編程通用同步/異步通信介面(8251)、可編程定時器/計數器(8253)、可編程中斷控制器(8259)及可編程鍵盤顯示介面(8279)等, - I/O口與片外RAM統一編址
a) 把擴展的I/O口掛接在片外資料存盤器空間,因而,I/O口的輸入、輸出指令也就是片外資料存盤器的讀/寫指令,
b) 其特點為:資料傳輸利用的是P0口,因此擴展介面均是8位口,傳輸資料簡便 - 串行擴展I/O介面
串行介面有多種總線和豐富的介面芯片,以PHILIPS公司I2C總線8位遠程I/O擴展器PCF8574為例,說明I2C總線擴展I/O介面的方法,

下載地址https://download.csdn.net/download/Gyangxixi/15404135
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/262030.html
標籤:其他
上一篇:【總結】轉深度后的兩個月,寫了近十萬字的干貨總結【持續更新】
下一篇:你好,我是程式員
