官术网_书友最值得收藏!

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。

主站蜘蛛池模板: 佛教| 凤冈县| 威远县| 民和| 济阳县| 雷波县| 同德县| 庄河市| 苏州市| 定陶县| 临沧市| 内丘县| 临城县| 长武县| 桂林市| 资溪县| 阳新县| 永安市| 花莲市| 渝北区| 招远市| 阜宁县| 仁布县| 永德县| 铜鼓县| 合作市| 沂源县| 施甸县| 遂昌县| 搜索| 奇台县| 公安县| 五大连池市| 望谟县| 上犹县| 平利县| 沭阳县| 县级市| 利辛县| 秦安县| 沐川县|