- 單片機C語言程序設計實訓100例
- 彭偉編著
- 580字
- 2018-12-27 05:11:55
1.4 外部中斷、定時/計數器及串口應用
使用C語言開發8051單片機程序時,除了要控制4個雙向I/O端口外,還要掌握8051外部中斷、定時/計數器及串口的中斷程序設計。當然,在應用定時/計數器及串口時,它們既可以工作于中斷方式,又可以工作于非中斷方式,讀者在本書中可找到它們工作于不同方式的案例。
8051的5個中斷源分別是:
(1)外部中斷請求0,由INT0(P3.2)輸入;
(2)外部中斷請求1,由INT1(P3.3)輸入;
(3)片內定時/計數器0溢出中斷請求;
(4)片內定時/計數器1溢出中斷請求;
(5)片內串行口接收/發送中斷請求。
這5個中斷源的中斷號分別是0、2、1、3、4,用C語言編寫中斷程序時,中斷函數后要添加interrupt n,其中n為中斷號。
在設計中斷程序時需要用到的字節SFR和位SFR(sbit)如表1-2所示。
表1-2 8051中斷控制、定時/計數器及串口控制寄存器

由于這些SFR都是可以位尋址的,因此在程序設計中,既可以直接給字節SFR賦值,也可以對SFR中的相應位賦值,例如,某程序同時允許外部0中斷和定時器0中斷,讀者可編寫代碼:
IE = 0x83; //IE被設為10000011.
或者寫成:
EX0 = 1; ET0 = 1; EA = 1;
和1.3節中的PSW一樣,這些SFR中的位也定義在reg51.h中,下面給出了reg51.h中的部分定義:
/* IE */ sbit EA = 0xAF; sbit ES = 0xAC; sbit ET1 = 0xAB; sbit EX1 = 0xAA; sbit ET0 = 0xA9; sbit EX0 = 0xA8;
這些位定義中的大多數會在本書大量案例中使用,讀者需要熟練掌握它們各自的含義和用途。更完整的定義可在at89x52.h文件中找到,讀者可根據需要選擇reg51.h或at89x52.h。
推薦閱讀
- ASP.NET MVC4框架揭秘
- Learning Apex Programming
- Visual Basic 6.0程序設計計算機組裝與維修
- Network Automation Cookbook
- Scala謎題
- C語言程序設計上機指導與習題解答(第2版)
- Mastering Concurrency Programming with Java 9(Second Edition)
- Instant Automapper
- Python Web自動化測試設計與實現
- 從零學Java設計模式
- Visual Basic語言程序設計基礎(第3版)
- 從“1”開始3D編程
- CryENGINE Game Programming with C++,C#,and Lua
- Java 7 Concurrency Cookbook
- Python面向對象編程(第4版)