娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年05月18日(星期日)

2020年05月18日 | 51單片機的中斷和定時器、計數器

發布者:星辰小鹿 來源: eefocus關鍵字:51單片機  中斷  定時器  計數器 手機看文章 掃描二維碼
隨時隨地手機看文章

中斷使得高低速設備可以協調工作(低速設備完成工作后通過中斷的方式通知高速設備一次處理一批數據),中斷還可以根據不同的優先級實現嵌套執行。

定時器本質上是個 16 位的自增計數器,當發生溢出時,如果開啟了溢出中斷,單片機會自動向 CPU 報告這個溢出中斷,處理相應的中斷任務。

寄存器

TCON 定時器控制寄存器

TCON 的低 4 位用作外部中斷,高 4 位用作定時控制。地址是 88H。

TCON 定時器控制寄存器各個位的意義如下:

所在位 bit76543210
名稱TF1TR1TF0TR0IE1IT1IE0IT0
  • IT0:外部中斷0觸發方式。1為低電平觸發,0為下降沿觸發。

  • IE0:外部中斷0請求標志位。IE0=1 時表示有中斷請求,0則沒有。

  • IT1:外部中斷1觸發方式。1為低電平,0為下降沿信號。

  • IE1:外部中斷1請求標志位。IE0=1 時表示有中斷請求,0則沒有。

  • TR0:定時器/計數器0啟動停止控制位。1為啟動,0為停止。

  • TF0:定時器/計數器0溢出標志位。1表示發生溢出,如果開啟了中斷,則會觸發中斷。

  • TR1:定時器/計數器1啟動停止控制位。1為啟動,0為停止。

  • TF1:定時器/計數器1溢出標志位。1表示發生溢出,如果開啟了中斷,則會觸發中斷。

IE 中斷允許控制寄存器

CPU 對中斷源的開啟或屏蔽的控制,是通過 IE 寄存器來設置的,IE 既可按字節地址尋址(其字節地址為 A8H),又可按位尋址。某個中斷對應的位設為 1 則表示允許中斷,否則禁止。

IE 寄存器各個位的意義

IE 中斷允許控制寄存器各個位的意義如下:

所在位 bit76543210
名稱EA-ET2ESET1EX1ET0EX0
  • EX0:外部中斷 0 中斷允許位

  • ET0:定時器/計數器 0 中斷允許位

  • EX1:外部中斷 1 中斷允許位

  • ET1:定時器/計數器 1 中斷允許位

  • ES:串口中斷允許位

  • ET2:定時器/計數器 2 中斷允許位(進行52系列)

  • EA:中斷總開關

定時器工作在中斷方式時,當定時器的值計滿溢出時,會觸發定時器溢出中斷。

C 語言示例

只要想使用中斷,就必須開啟 EA 總中斷。例如,如果想使用定時器/計數器0,需要添加下面一段 Keil C51 代碼來開啟 EA 和 ET0:


EA = 1; // 開啟總中斷

ET0 = 1; // 開啟定時器/計數器0 中斷


或者使用字節操作:


IE |= 0x82; // 設置 IE 寄存器為 10000010,即開啟總中斷和定時器/計數器0中斷


匯編語言示例

如果使用匯編語言,開啟外部中斷 0 的匯編代碼,字節操作為:


MOV IE,#81H

;MOV 0A8H,#81H; 這里也可以直接使用 IE 寄存器的地址 A8H


或者使用匯編語言的位操作:


SETB EA

SETB EX0 

TMOD 定時器工作模式寄存器

TMOD 用于控制定時器的工作模式,低4位用于 T0,高4位用于 T1。各個位的意義如下:

所在位 bit76543210
名稱GATEC/TM1M0GATEC/TM1M0
  • M0 與 M1:共 4 中組合,對應定時器的 4 中工作模式

    • M1 = 0,M0 = 0:模式0,13 位,最大計數范圍 8192。TL 的低 5 位和 TH 的高 8 位組成 13 位計數器,用于兼容 48 系列一般不用。

    • M1 = 0,M0 = 1:模式1,16 位,最大計數范圍 65536

    • M1 = 1,M0 = 0:模式2,8 位,最大計數范圍 256。高 8 位放預置數,只有低 8 位參與計數。計數溢出后可以自動重新裝填預置數,定時精度高。可以用于波特率發生器等精確計時場合。

    • M1 = 1,M0 = 1:模式3,8 位,最大計數范圍 256。此時 T0 被拆成 2 個獨立的定時/計數器。其中 TL0 可以用作 8 位的定時/計數器,TH0 只能用于定時器。TH0 的控制及溢出標志借用 T1 的。一般僅當 T1 工作在模式 2 時,才會讓 T0 工作在模式 3。

  • C/T:設置為 0 則作為定時器使用,設置為 1 則成為計數器

  • GATE:計數脈沖與定時/計數器之間的開關。

    • GATE = 0 時,開關僅由 TR0 控制,TR0 = 1 時計數脈沖可以通過,否則無法通過

    • GATE = 1 時,開關由 TR0 和 INT0 同時控制,僅在 TR0 = 1 且 INT0 高電平時,計數脈沖才可以通過

IP 中斷優先級控制寄存器

所在位 bit76543210
名稱--PT2PSPT1PX1PT0PX0

SCON 串行口控制寄存器

所在位 bit76543210
名稱SM0SM1SM2RENTB8RB8TIRI
  • SM0 和 SM1:串行口方式選擇

SM0SM1方式說明波特率
0008位數據發送fosc/12
01110位數據發送,包括起始位,停止位可變
10211位數據發送,包括起始位,停止位 ,校驗位fosc/64
113同方式2
  • SM2:多機通信使能位。在方式2或方式3中,若SM2=1,則只有當接收到的第9位數據(RB8)為1時,才能將接收到的數據送入SBUF,并使接收中斷標志RI置位向CPU申請中斷,否則數據丟失;若SM2=0,則不論接收到的第9位數據為1還是為0,都將會把前8位數據裝入SBUF中,并使接收中斷標志RI置位向CPU申請中斷。在方式1,如SM2=1,則只有收到有效的停止位時才會使RI置位。在方式0時,SM2必須為0。

  • REN:串口數據接收允許位,1允許,0禁止

  • TB8:在方式2和方式3中,這位發送的是第9位。在多機通信中,常以該位的狀態來表示主機發送的是地址還是數據。通常規定:TB8為“0”表示主機發送的是數據,為“1”表示發送的是地址。

  • RB8:在方式2和方式3中,這位發送的是第9位。它和SM2、TB8一起用于通信控制。

  • TI:發送中斷標志位 ,用完時要用軟件清0

  • RI:接受中斷標志位,用完時要用軟件清0

中斷

中斷源

51單片機有5個中斷源,5個中斷源分別是:

  • 外部中斷0,從 P3.2 端口復用

  • 外部中斷1,從 P3.3 端口復用

  • 定時/計數器0溢出中斷

  • 定時/計數器1溢出中斷

  • 串口發送或接收中斷

中斷可以根據優先級實現嵌套,51 系列可以實現 2 級嵌套(對應優先級寄存器 IP),52 系列可以實現 4 級嵌套(對應優先級寄存器 IP 和 IPH)。

中斷對應信息

中斷名稱中斷標志位中斷號默認優先級中斷入口地址
外部中斷0IE000003H
定時/計數器0溢出中斷TF02000BH
外部中斷1IE110013H
定時/計數器1溢出中斷TF13001BH
串口發送或接收中斷RI/TI40023H

中斷處理流程

  1. 停止主程序運行

  2. 保護斷點,把程序計數器 PC 的值壓入堆棧

  3. 尋找中斷入口,每個中斷都有不同的程序入口

  4. 執行中斷處理程序

  5. 中斷返回,繼續執行主程序

中斷的使用

任何中斷的使用都要滿足 3 個條件:

  • 開啟總開關:EA EX = 1

  • 開啟指定中斷的開關,例如要使用外部中斷0,則必須設置:EX0=1

  • 發生中斷事件

中斷系統有一個總的開關 EA(IE 寄存器中),如果想使用中斷,必須打開總開關。

每個中斷都有一個單獨的開關,這些單獨的開關跟總開關 EA 一樣,都在 IE 寄存器中。

定時器中斷使用

初始值的計算

假設我要每計數 24 次觸發一次溢出中斷,定時器工作在模式 1,則計數初始值為 65536 - 24 = 65512。

Keil C51 代碼

外部中斷示例代碼

下面代碼使用了外部中斷0,上電后 P1 端口 0 號引腳的 LED 會一直閃爍,首次觸發外部中斷時,P1 端口所有 LED 點亮,再次觸發外部中斷時,0號引腳的 LED 再次開始閃爍,以此循環:


#include

 

int flag = 1;

void delay() {

unsigned int a = 50000;

while(a--);

}

 

void main() {

EA = 1;// 開啟中斷總開關

IT0 = 1;// 設置外部中斷0觸發方式,下降沿觸發

EX0 = 1;// 開啟外部中斷0

while(1) {

while(flag & 0x01 == 1) {

P1 = 0xfe;

delay();

P1 = 0xff;

delay();

}

P1 = 0x00;

}

}

 

void externelInterrupt() interrupt 0 {

flag++;

}


電路圖:
在這里插入圖片描述

串口示例代碼

/*9600@11.0592M*/

#include

void InitUART(void) {

TMOD = 0x20;

SCON = 0x50;

TH1 = 0xFD;

TL1 = TH1;

PCON = 0x00;

EA = 1;

ES = 1;

TR1 = 1;

}

void SendOneByte(unsigned char c) {

SBUF = c;

while(!TI);

TI = 0;

}

void main(void) {

InitUART();

}

void UARTInterrupt(void) interrupt 4 {

if(RI) {

RI = 0;

} else

TI = 0;

}


關鍵字:51單片機  中斷  定時器  計數器 引用地址:51單片機的中斷和定時器、計數器

上一篇:定時器計數、定時器中斷函數、while(1)之間如何協調、工作?
下一篇:關于51單片機學習中計數器/定時器中斷的理解

推薦閱讀

中國電信在北京發布了《AI終端白皮書》。其中的主要內容是:確定AI手機的平臺要求、能力級要求應用級要求以及中國電信AI能力賦能要求。除此之外,中國電信更是聯合了11家手機廠商首批集中采購的17款AI終端也同時亮相,今年還將推出達到50部AI手機,預期銷量約5000萬。中國電信發布白皮書 將推出50款AI手機?中國電信在北京發布《AI終端白皮書》《AI終端白...
日前,NASA表示已經選擇了十幾家航空航天公司來幫助它開發月球著陸器,其中包括Elon Musk的SpaceX、Jeff Bezos的Blue Origin、波音和洛克希德馬丁等,它們將開始為其Artemis月球探測計劃研究或生產人類著陸器原型。周一的時候,NASA宣布了Artemis月球探測計劃,預計到2024年讓人類重返月球,其中將包括第一位女性,并將在2028年前完成任務。未來,這些...
公路上的點對點充電依賴于可操縱的吊桿來實現連接。噴氣式戰斗機不能在執行任務的時候帶一大桶燃料,這有點不像話。相反,他們使用大型加油機作為加油站,進行空對空加油。如果電動汽車在高速公路上飛馳時也能做同樣的事情呢?一輛有備用充電的汽車可以開到另一輛沒電的汽車前面,這兩輛車可以延長伸縮充電臂,直到它們通過磁力連接在一起。這款充電充足的...
搶攻5G、電動車(EV)商機,日本電子零件廠擴大投資、8大廠設備投資額將突破1兆日圓,其中太陽誘電擬將積層陶瓷電容( MLCC )增產15%。日刊工業新聞18日報導,因看好5G、EV普及,電子零件需求中長期看俏,日本電子零件廠增加今年度(2021年度、2021年4月-2022年3月)的設備投資額、搶攻商機,8大廠合計設備投資額將超過1兆日圓、將較上年度(2020年度)增加約3...

史海拾趣

問答坊 | AI 解惑

做F題的加群69079341

本帖最后由 paulhyde 于 2014-9-15 09:04 編輯 大家加啊!  …

查看全部問答∨

KEIL C51 消除UNCALLED SEGMENT警告的方法

請教高人得到的答案,共享給大家,去除了警告,看起來舒服多了 第一幅圖是在KEIL中的方法 第二幅是在MEDWIN v3中的方法 [ 本帖最后由 soulcoffee 于 2009-9-28 16:26 編輯 ]…

查看全部問答∨

arm-xscale, arm-iwmmxt這兩個有什么區別??

我要為pxa270編譯一個工具鏈,在網上看有人用arm-xscale ,有人用arm-iwmmxt,iwmmxt是什么?…

查看全部問答∨

工程編譯目標文件project.out使用屬性察看size的大小和實際文件大小問什么不一樣?

    在Tornado環境下,編譯downloadable類型的工程,生成project.out文件,右鍵察看priority-size大小為:0.68MB左右,而到工程目錄下找到project.out文件,其文件大小卻為:8MB左右,將project.out下載到目標機,目標機資源占用情況也差 ...…

查看全部問答∨

高薪招聘招聘逆向調試人員!

高薪招聘招聘逆向調試人員! 工作地點:吉林省長春市 工作性質: 全職(可兼職) 薪    水: 不求學歷,只看實力,薪水看你的能力另談!(一旦錄用,如工作盡職,三個月后可加薪) 崗位職責: 網絡游戲安全問題,分析.(外掛、木馬等 ...…

查看全部問答∨

win ce Platform Builder安裝問題

win ce Platform Builder5.0與 VS2005 安裝在同一臺機器有沒有沖突,如果有,怎么解決? 謝謝!…

查看全部問答∨

帖子審核能不能快一點,我等著收錢呢

帖子審核能不能快一點,我等著收錢呢開點玩笑,共同學習…

查看全部問答∨

空間定位指令?

能不能請教一個問題啊,就是IAR匯編語言有條指令ORG 1100H,應該是指定程序的起始空間吧,程序將程序燒錄在0x1100開始的空間地址,那想問一下,C語言怎么寫這條指令呢?            & ...…

查看全部問答∨

壇子里有網友玩 STM32F4DISCOVERY么?

壇子里有網友玩 STM32F4DISCOVERY么?…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 和静县| 汉中市| 阳泉市| 广灵县| 浏阳市| 北海市| 辽阳县| 普宁市| 梅河口市| 遵义县| 买车| 阳西县| 黄大仙区| 泸州市| 康乐县| 弋阳县| 县级市| 多伦县| 兰西县| 寻乌县| 泰宁县| 武冈市| 朝阳市| 城市| 抚松县| 丁青县| 新民市| 崇信县| 滨海县| 长汀县| 德令哈市| 阜城县| 武隆县| 钦州市| 绍兴市| 古丈县| 建湖县| 平遥县| 尼玛县| 老河口市| 扎鲁特旗|