- 單片機C語言程序設計實訓100例
- 彭偉編著
- 645字
- 2018-12-27 05:11:54
1.3 特殊功能寄存器
由圖1-2可知,片內數據RAM中80H~FFH空間大部用于特殊功能寄存器,表1-1列出了8051單片機的所有特殊功能寄存器。
表1-1 8051單片機的特殊功能寄存器

上述特殊功能寄存器分別用于以下功能單元。
CPU:ACC、B、PSW、SP、DPTR。
并行口:P0、P1、P2、P3。
中斷系統:IE、IP。
定時器/計數器:TMOD、TCON、T0(TH0,TL0)、T1(TH1,TL1)。
串行口:SCON、SBUF、PCON。
本書用C語言開發單片機系統時,由于ACC可以位尋址,它常被用于判斷字節中各位的狀態,例如,要判斷某字節第3位是否為1,可將ACC看成一個字節變量,讓ACC獲取該字節的值,然后直接判斷ACC3是否為1,當然需要先有定義sbit ACC3 = ACC^3。
又如PSW寄存器,由于PSW可以位尋址,reg51.h已包含有該寄存器的各位定義,定義片斷如下:
/* BIT Register */ /* PSW */ sbit CY = 0xD7; sbit AC = 0xD6; sbit F0 = 0xD5; sbit RS1 = 0xD4; sbit RS0 = 0xD3; sbit OV = 0xD2; sbit P = 0xD0;
其中CY和F0仍在C語言程序中直接大量使用,例如,要將字節變量d(10101101)由高位開始逐位串行發送,可對d進行8次左移,并逐次發送CY,即
for (i = 0 ; i < 8 ; i++) { d <<= 1; DQ = CY; }
代碼中DQ為某外部芯片接收串行數據的引腳,這段代碼利用匯編語言程序中常用的進位標志位CY,可以方便地獲取移出的各位。
表1-1中帶有*號的特殊功能寄存器是可位尋址的,Keil\c51下頭文件reg51.h對P0~P3以外的可位尋址的各寄存器位給出了獨立定義,如果要直接引用4個I/O端口的各引腳,需要在程序中用sbit進行單獨定義,當然也可以將頭文件reg51.h(keil\c51\inc)改成at89x52.h(keil\c51\inc\atmel),4個端口的各引腳在該頭文件中均被單獨定義,如P0.1被定義為P0_1,盡管其中有些定義對8051單片機是無效的,但這并不影響程序正常編譯運行。
- Dynamics 365 for Finance and Operations Development Cookbook(Fourth Edition)
- PHP動態網站程序設計
- Java程序設計與開發
- Objective-C Memory Management Essentials
- React.js Essentials
- Flash CS6中文版應用教程(第三版)
- 深度學習:算法入門與Keras編程實踐
- Java程序設計
- C++從入門到精通(第5版)
- ASP.NET程序開發范例寶典
- MySQL入門很輕松(微課超值版)
- Python爬蟲、數據分析與可視化:工具詳解與案例實戰
- Illustrator CC平面設計實戰從入門到精通(視頻自學全彩版)
- Python商務數據分析(微課版)
- NGUI for Unity