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

51單片機(jī)定時(shí)器、串口、中斷

發(fā)布者:科技創(chuàng)造者最新更新時(shí)間:2024-08-22 來源: cnblogs關(guān)鍵字:51單片機(jī)  定時(shí)器  串口  中斷 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

MCS-51功能單元

一、定時(shí)器&計(jì)數(shù)器

  1. 數(shù)量:兩個(gè)可編程的16位的定時(shí)器/計(jì)數(shù)器T0和T1;都是16位加法計(jì)數(shù)結(jié)構(gòu);分為高8位和低8位;TH0、TL0,TH1、TL1;
    定時(shí)器/計(jì)數(shù)器T0、T1是80C51的中斷源之一,當(dāng)數(shù)據(jù)寄存器溢出,則向CPU申請(qǐng)中斷。數(shù)據(jù)寄存器的復(fù)位狀態(tài)為0。為使計(jì)數(shù)值或定時(shí)值滿足自己的要求,需預(yù)先將數(shù)據(jù)寄存器賦值,稱為初值設(shè)定,中斷中也要重新設(shè)定初值。

  2. 定時(shí)器和計(jì)數(shù)器本質(zhì):都是計(jì)數(shù)器,對(duì)下降沿進(jìn)行計(jì)數(shù),計(jì)數(shù)達(dá)到溢出后置為標(biāo)志位或者進(jìn)入中斷;

  3. 兩者的區(qū)別:

    定時(shí)器是對(duì)內(nèi)部的機(jī)械周期脈沖進(jìn)行計(jì)數(shù),每個(gè)脈沖都是一個(gè)機(jī)械周期;定時(shí)時(shí)間=機(jī)器周期*(2^L-初值) (L=13,16,8)

    計(jì)數(shù)器則是通過外部IO口進(jìn)行脈沖計(jì)數(shù),一個(gè)脈沖加一個(gè)數(shù);對(duì)應(yīng)IO口:T0-P3.4,T1-P3.5;

    計(jì)數(shù)長(zhǎng)度:計(jì)數(shù)長(zhǎng)度=(2^L-初值) (L=13,16,8)

    兩者的模式切換通過TMOD控制

  4. TMOD結(jié)構(gòu)圖:

在這里插入圖片描述

  1. TMOD詳解

    GATE:門控位

    GATE =1,由中斷引腳INT0(P3.2)、INT1(P3.3)和TCON中的位TR0、TR1共同控制來啟動(dòng)定時(shí)器/計(jì)數(shù)器

    GATE =0,由TR0和TR1置位來啟動(dòng)定時(shí)器/計(jì)數(shù)器**(一般為0)**

    C/!T:模式選擇位:

    1時(shí),計(jì)數(shù)器模式;

    0時(shí),定時(shí)器模式;

    M0 & M1共同控制工作方式:

在這里插入圖片描述

項(xiàng)目開發(fā)一般用01,考試大概率考00;

  1. 啟動(dòng)停止與中斷控制寄存器TCON

在這里插入圖片描述

TFx:定時(shí)器或者計(jì)數(shù)器溢出時(shí)置位1,請(qǐng)求中斷,中斷程序進(jìn)入后自動(dòng)清零;

TRx:定時(shí)器啟動(dòng)控制位,當(dāng)其等于1時(shí)定時(shí)器/計(jì)數(shù)器啟動(dòng);

  1. 中斷允許控制寄存器:IE
    在這里插入圖片描述

    ETx:定時(shí)器/計(jì)數(shù)器的中斷允許位
    EA:CPU總中斷的允許位

  2. 定時(shí)器/計(jì)數(shù)器使用:(重點(diǎn))

    工作方式的設(shè)置:

    偽代碼:

    //設(shè)置定時(shí)器0工作在16位模式//C語(yǔ)言
    	TMOD=0x01;				//定時(shí)器//匯編
    	MOV		TMOD,	#01H;	

    計(jì)數(shù)初值的計(jì)算+裝載:

    偽代碼:

    //機(jī)械周期1us,設(shè)置500us中斷一次為FE0C//C語(yǔ)言
    	TH0=0xFE;
        TL0=0x0C;//匯編
    	MOV 	TH0,	#0FEH	;
        MOV		TL0,	#0cH	;

    中斷允許位的設(shè)置:
    偽代碼:

    //C 	
    	EA=1;
    	ET0=1;//assembly
    	SETB	EA		;turn on all interrupt
        SETB	ET0		;turn on 0 interrupt

    開啟定時(shí)器:
    偽代碼:

    //c
    	TR0=1;//assembly
    	SETB 	TR0		;turn on
            
    	CLR 	TR0		;turn off !
  3. 使用實(shí)例:

    定時(shí)器使用方式(中斷方式):

    ORG		0000H;
    		AJMP	MAIN;
    ORG		001BH;
    		AJMP	IRQ1;
    MAIN:	
            MOV		TMOD,	#00H	;工作模式0,高8+低5
            MOV		TH1,	#0FCH
            MOV		TL1,	#03H
            SETB	TR1;
            SETB	ET1;
            SETB	EA;
            AJMP	$;
            
    IRQ1:	        
    		MOV		TMOD,	#00H
            MOV		TH1,	#0FCH
            CPL		P1.0
            RETI	;中斷返回一定要加!

    計(jì)數(shù)器使用方式(中斷方式):

    ORG		0000H;
    		AJMP	MAIN;
    ORG		001BH;
    		AJMP	IRQ1;
    		
    MAIN:   
    		MOV		TMOD,	#04H	;計(jì)數(shù)器模式
            MOV		TH1,	#0FCH	;一千個(gè)下降沿中斷一次
            MOV		TL1,	#03H
            SETB	TR1;
            SETB	ET1;
            SETB	EA;
            AJMP	$;
            
    IRQ1:	        
    		MOV		TMOD,	#00H
            MOV		TH1,	#0FCH
            CPL		P1.0
            RETI			;中斷返回一定要加!

    查詢方式則是判斷TF溢出標(biāo)志,變高后進(jìn)入自定義韓式處理數(shù)據(jù),清空標(biāo)志;

二、并行口&串行口

并行口:并行傳輸數(shù)據(jù)(不常用)
占據(jù)資源大,錯(cuò)誤率高,但快

 串行口:(重要)

穩(wěn)定,占據(jù)IO口小,準(zhǔn)確,稍微慢

  1.  串行口控制寄存器SCON:
    在這里插入圖片描述
    SM0和SM1:串行口方式選擇位;
    00-移位寄存器方式
    01-8位UART,波特率可變
    10-9位UART,波特率為fosc/64或fosc/32(PCON決定)
    11-9位UART,波特率可變
    方式1為常用通信方式;方式2、3為多機(jī)通信,方式0為移位寄存器,不常用;

     重要標(biāo)志位:
     TI:發(fā)送完成標(biāo)志
     RI:接收完成標(biāo)志
  2. 串口波特率與定時(shí)器1關(guān)聯(lián),公式如下:
    波特率=2^SMOD * fosc / [32 * 12(2^K-初值)];(fosc系統(tǒng)主頻)

 波特率翻倍寄存器:PCON
只有最高位(SMOD)有效:為1時(shí)波特率翻倍,為0時(shí)不翻倍

方式1串口通信接收代碼:

ORG		0000H
LJMP	MAIN
ORG		0023H
LJMP	RX_TI

MAIN:
		MOV		SCON,		#50H
		MOV		PCON,		#00H
		MOV		TMOD,	#02H
		MOV		TH1,		#0FDH
		MOV		TL1,			#0FDH
		SETB	TR1
		SETB	EA
		SETB	ES
		
RX_TI:
		PUSH		ACC
		MOV		TH1,		#0FDH
		MOV		TL1,			#0FDH
		MOV		A,		SBUF		;處理
		POP			ACC
		RETI

發(fā)送套用代碼:

MOV		SBUF,	A
JNB		TI,		$
CLR		TI
RET

三、中斷系統(tǒng)

 所有中斷控制位:
TCON:
在這里插入圖片描述

TF1、TF0:定時(shí)器溢出標(biāo)志、請(qǐng)求中斷:
IE1、IE0:外部中斷溢出請(qǐng)求:
IT1、IT0:外部中斷觸發(fā)方式選擇-1下降沿觸發(fā)、0低電平觸發(fā)

SCON:
內(nèi)部TI、RI觸發(fā)接收發(fā)送中斷。

所有中斷允許位:

image.png

中斷處理跳轉(zhuǎn)地址:

中斷源矢量單元
外部中斷00003H
定時(shí)器0溢出中斷000BH
外部中斷10013H
定時(shí)器1溢出中斷001BH
串行口0023H
定時(shí)器2溢出中斷002BH

注:進(jìn)入中斷后一般需要對(duì)現(xiàn)場(chǎng)進(jìn)行保護(hù):

使用PUSH和POP做現(xiàn)場(chǎng)保護(hù)

;對(duì)A和PSW壓棧保護(hù)
PUSH 	ACC
PUSH	PSW

;對(duì)A和PSW出棧保護(hù)
POP		PSW
POP		ACC


關(guān)鍵字:51單片機(jī)  定時(shí)器  串口  中斷 引用地址:51單片機(jī)定時(shí)器、串口、中斷

上一篇:80C51學(xué)習(xí) 閃爍燈
下一篇:手動(dòng)實(shí)現(xiàn)51單片機(jī)函數(shù)切換

推薦閱讀最新更新時(shí)間:2025-06-08 09:29

C51/C52單片機(jī)的定時(shí)器計(jì)數(shù)器與中斷(內(nèi)附代碼)
一、定時(shí)器/計(jì)數(shù)器簡(jiǎn)介 設(shè)置等待時(shí)間,到達(dá)等待時(shí)間之后執(zhí)行指定的硬件操作。 定時(shí)器最基本的功能就是定時(shí),比如說定時(shí)發(fā)送串口數(shù)據(jù),定時(shí)采集AD數(shù)據(jù),如果將定時(shí)器和IO結(jié)合起來就可以實(shí)現(xiàn)非常豐富的功能,可以測(cè)量輸入信號(hào)的脈沖寬度,可以產(chǎn)生PWM方波,定時(shí)器產(chǎn)生PWM控制電機(jī)狀態(tài)是工業(yè)控制的普通。 二、定時(shí)器/計(jì)數(shù)器相關(guān)寄存器介紹 1、計(jì)數(shù)寄存器TH和HL T/C是16位的,計(jì)數(shù)寄存器由TH高8位和TL低8位構(gòu)成 對(duì)應(yīng)T/C0為TH0和TL0, 對(duì)應(yīng)T/C1為TH1和TL1,定時(shí)器/計(jì)數(shù)器的初始值通過TH0/TL0和TH1/TL1設(shè)置 2、定時(shí)器/計(jì)數(shù)器控制寄存器TCON
[單片機(jī)]
C51/C52單片機(jī)的<font color='red'>定時(shí)器</font>計(jì)數(shù)器與<font color='red'>中斷</font>(內(nèi)附代碼)
51學(xué)習(xí)之定時(shí)器中斷的兩種方式——查詢和中斷
定時(shí)器中斷可用兩種方式處理:查詢和進(jìn)入中斷處理。 1.查詢 void Init_T0 (void) 定時(shí)器初始化 { TMOD = 0x01; TH0 = (65536-65000) /256; TL0 = (65536-65000) %6; EA = 1; ET0 = 1; TR0 = 1; } void Main() 主函數(shù) { Init_T0 (); Speak1 =1; if(TF0==1) 查詢中斷標(biāo)志 { Speak1=~Speak1; //TH0 = (65536-65000) /256; //TL0 = (65536-65000) %6; TF0=0; } } 2.進(jìn)入中斷處理 void Init_T0 (void
[單片機(jī)]
STC89C52單片機(jī)定時(shí)器0的中斷實(shí)驗(yàn)
////////////////////////////////////////////////////////////////////////// 實(shí)現(xiàn)功能: 配置定時(shí)器0的相關(guān)寄存器,使其實(shí)現(xiàn)定時(shí)器中斷功能,然后通過發(fā)光 二極管的閃爍展現(xiàn)出中斷的進(jìn)行 實(shí)驗(yàn)板型號(hào):BS-XYD-C52 實(shí)驗(yàn)名稱: 定時(shí)器0的中斷實(shí)驗(yàn) 編寫人: 謝應(yīng)東 編寫日期: 2012-4-26 ////////////////////////////////////////////////////////////////////////// #include reg52.h #define uc
[單片機(jī)]
基于單片機(jī)定時(shí)器中斷的時(shí)鐘程序
大家只要自行更改端口就可以使用,走時(shí)還是比較準(zhǔn)確的 #include reg51.h #define uchar unsigned char #define uint unsigned int sbit RING1=P3^7; //P3^7接蜂鳴 sbit OPEN=P3^1; //鬧鐘開時(shí)LED亮 uchar idata buffer ={0,0,0,0,0,0,10,11};//定義兩段緩沖區(qū),buffer用于過程中時(shí)間BCD碼暫存并初始化 uchar code LED
[單片機(jī)]
【GD32F303紅楓派開發(fā)板使用手冊(cè)】第十七講 USART-中斷串口收發(fā)實(shí)驗(yàn)
17.1實(shí)驗(yàn)內(nèi)容 通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: 使用中斷進(jìn)行串口收發(fā) 17.2實(shí)驗(yàn)原理 前面章節(jié)中我們已經(jīng)學(xué)習(xí)了串口的狀態(tài)標(biāo)志位,本實(shí)驗(yàn)就是使用TBE中斷和RBNE中斷來實(shí)現(xiàn)中斷收發(fā)數(shù)據(jù),實(shí)驗(yàn)原理是RBNE中斷用來接受數(shù)據(jù),IDLE中斷用于判斷發(fā)送方數(shù)據(jù)結(jié)束,TBE中斷用于發(fā)送數(shù)據(jù)。 17.3硬件設(shè)計(jì) 本實(shí)驗(yàn)仍然使用USB轉(zhuǎn)UART接口,硬件設(shè)計(jì)見前面章節(jié)。 17.4代碼解析 17.4.1串口中斷發(fā)送函數(shù) 在driver_uart.c中定義了串口中斷發(fā)送函數(shù): C Drv_Err driver_uart_int_transmit(typdef_uart_struct *uartx,uint8_t *pbuff,uint16_t
[單片機(jī)]
【GD32F303紅楓派開發(fā)板使用手冊(cè)】第十七講 USART-<font color='red'>中斷</font><font color='red'>串口</font>收發(fā)實(shí)驗(yàn)
STM8S003F3串口中斷發(fā)送問題
我在用STM8S003F3測(cè)試串口中斷發(fā)送時(shí),按照以前操作DSP28335的思路,要先發(fā)送一個(gè)字節(jié)的數(shù)據(jù),才能夠觸發(fā)發(fā)送中斷,然后數(shù)組中的數(shù)據(jù)隨之發(fā)送完。 下面是發(fā)送函數(shù)和中斷函數(shù): void UartTxData(void) { /* Enable UART1 IT */ UART1- CR2 |= 0x80; /* UART1 send data (8bits) */ UART1- DR = (au8UartTx ); } INTERRUPT_HANDLER(UART1_TX_IRQHandler, 17) { u8TxPos++; /* UART1 send data
[單片機(jī)]
51單片機(jī)中斷優(yōu)先級(jí)以及中斷嵌套
在說到中斷之前,我先來定義一下優(yōu)先級(jí),明白了什么是優(yōu)先級(jí),后面的闡述就容易明白了。實(shí)際上很多人都是混淆了優(yōu)先級(jí)的含義,所以才覺得糊里糊涂。 中斷的優(yōu)先級(jí)有兩個(gè):查詢優(yōu)先級(jí)和執(zhí)行優(yōu)先級(jí)。 什么是查詢優(yōu)級(jí)呢?我們從datasheet或書上看到的默認(rèn)(IP寄存器不做設(shè)置,上電復(fù)位后為00H)的優(yōu)先級(jí): 外部中斷0 定時(shí)/計(jì)數(shù)器0 外部中斷1 定時(shí)/計(jì)數(shù)器1 串行中斷 或 int0,timer0,int1,timer1,serial port 或 INT0、T0、INT1、T1、UART 或 PX0 PT0 PX1 PT1 PS ...... 其實(shí)都是查詢優(yōu)級(jí)。首先查詢優(yōu)先級(jí)是不可以更改和設(shè)置的。這是一個(gè)中
[單片機(jī)]
STM32單片機(jī)(3) 串口中斷通信
注:使用普中科技開發(fā)板測(cè)試時(shí),需要拔掉Boot1短接帽 兩根下載線也要拿掉,重啟 /******************************************************************************* * * 軟件功能: 串口實(shí)驗(yàn)(軟件延時(shí)方式) * *******************************************************************************/ #include stm32f10x.h #include string.h #include delay.h u8 uart1_buf ; int count=0
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 大石桥市| 军事| 中西区| 安达市| 城固县| 金山区| 宜昌市| 连平县| 宕昌县| 广平县| 汽车| 海晏县| 长治市| 黑河市| 阿拉善右旗| 鄂温| 汾西县| 德令哈市| 多伦县| 拜城县| 和硕县| 专栏| 锡林浩特市| 兴化市| 政和县| 凤台县| 连平县| 松原市| 阜康市| 监利县| 鲜城| 云浮市| 莱芜市| 安福县| 江源县| 通江县| 济源市| 江阴市| 桃园县| 聂拉木县| 沙洋县|