日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

【Keil5 C51】AT89C52 中断系统与定时/计数器的介绍

發(fā)布時(shí)間:2023/12/29 windows 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Keil5 C51】AT89C52 中断系统与定时/计数器的介绍 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

80C51中斷系統(tǒng)

結(jié)構(gòu)

80C51有5個(gè)中斷源(89C52有6個(gè)),2個(gè)優(yōu)先級(jí),可實(shí)現(xiàn)二級(jí)中斷嵌套

TCON中斷標(biāo)志


IT0(TCON.0),外部中斷0觸發(fā)方式控制位
IE0(TCON.1),外部中斷0中斷請(qǐng)求標(biāo)志位
IT1(TCON.2),外部中斷1觸發(fā)方式控制位
IE1(TCON.3),外部中斷1中斷請(qǐng)求標(biāo)志位
TF0(TCON.5),定時(shí)/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志位
TF1(TCON.7),定時(shí)/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志位

中斷源響應(yīng)優(yōu)先級(jí)

中斷響應(yīng)條件

  • 中斷源有中斷請(qǐng)求
  • 此中斷源的中斷允許位置1
  • CPU開(kāi)中斷(即EA = 1)

定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)

定時(shí)/計(jì)數(shù)器的實(shí)質(zhì)是加1計(jì)數(shù)器(16位),有由高8位和低8位兩個(gè)寄存器組成,TMOD是定時(shí)/計(jì)數(shù)器的工作方式及寄存器,確定工作方式和功能,
TCON是控制寄存器,控制T0,T1的啟動(dòng)和停止及設(shè)置出標(biāo)志位。

TMOD

  • GATE 門控位
  • C/T 模式選擇位 1定時(shí)器模式,0計(jì)數(shù)器模式
  • M0M1工作方式位
    00 方式0 13位定時(shí)計(jì)數(shù)器
    01 方式1 16位定時(shí)計(jì)數(shù)器
    10 方式2 8位自動(dòng)重裝定時(shí)計(jì)數(shù)器
    11 方式3 T0分為兩個(gè)獨(dú)立的8位定時(shí)計(jì)數(shù)器,T1停止計(jì)數(shù)

定時(shí)/計(jì)數(shù)器初始化

  • 對(duì)TMOD賦值,以確定T0和T1的工作方式。
  • 計(jì)算初值,并將其寫(xiě)入TH0,TL0或TH1,TL1
    假設(shè)晶振12 計(jì)滿時(shí)間為 t = 65535 * 1/12(震蕩周期) * 12 = 65535
  • 中斷方式,對(duì)IE賦值,開(kāi)放中斷
  • 使TR0或TR1置位,啟動(dòng)定時(shí)/計(jì)數(shù)器

定時(shí)器實(shí)現(xiàn)延時(shí)

#include <reg52.h> #define uint unsigned int #define uchar unsigned charsbit LE_D = P2^6; //數(shù)碼管段 該LE控制數(shù)碼管顯示的數(shù)字 sbit LE_W = P2^7; //數(shù)碼管位 該LE控制數(shù)碼管顯示的位置uint num = 0; uint time = 0;//數(shù)碼管從0->9 uchar code table[] = {0xC0,0xF9,0xA4,0XB0,0x99,0x92,0x82,0xF8,0x80,0x98};//數(shù)碼管的數(shù)次從0開(kāi)始每隔1s加1,用定時(shí)器實(shí)現(xiàn) void main(){ //中斷函數(shù)初始化EA = 1; //開(kāi)總中斷ET0 = 1; //開(kāi)T0定時(shí)/計(jì)數(shù)器中斷TR0 = 1; //啟動(dòng)TO TR0為T0運(yùn)行控制位,置1開(kāi)始工作TMOD = 0x01;//設(shè)置T0的工作方式 0000 0001TH0 = 0x3C; //65535 - 50000 = 15535 (50000為50mS)為3CAF TH0為高8位所以賦值3CTL0 = 0xAF; //TL0低8位所以賦值A(chǔ)F//數(shù)碼管顯示的位置LE_W = 1; //開(kāi)位鎖存器P0 = 0x01; //第一個(gè)數(shù)碼管顯示數(shù)字LE_W = 0; //關(guān)鎖存器//數(shù)碼管顯示的初始數(shù)字LE_D = 1;P0 = table[0];LE_D = 0;while(1){if(time == 20){ //進(jìn)入20次中斷后,(每次中斷為50mS) 20*50=1000ms = 1s time = 0; //time清零,重新開(kāi)始定時(shí)LE_D = 1; //開(kāi)鎖存器P0 = table[num];//鎖存器存入table[num]LE_D = 0; //關(guān)寄存器num++; //使數(shù)碼管顯示的數(shù)字+1} if(num == 10){ //當(dāng)數(shù)碼管顯示的數(shù)字為9時(shí)num清0 又從0開(kāi)始num = 0;}} }//定時(shí)器中斷函數(shù) void exter1() interrupt 1{ //1為定時(shí)/計(jì)數(shù)器0(T0)TH0 = 0x3C; //每次進(jìn)入定時(shí)器函數(shù)說(shuō)明TH0,TL0已加滿后清0,所以重新賦值TL0 = 0xAF; //TL0低8位time++; //沒(méi)進(jìn)入一次中斷給time+1 }

Proteus仿真圖

總結(jié)

以上是生活随笔為你收集整理的【Keil5 C51】AT89C52 中断系统与定时/计数器的介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。