51單片機

中斷系統

1.什么是中斷

當CPU正在處理某件事的時候外界發生了緊急事件請求,要求CPU暫停當前的工作,轉而去處理這個緊急事件,處理完以后,再回到原來被中斷的地方,繼續原來的工作,這樣的過程稱為中斷

2.為什么要設置中斷系統

中斷系統是為使CPU具有對外界緊急事件的實時處理能力而設置的

3.中斷優先級:在執行中斷的過程中,如果外界又發生一次中斷,比較中斷優先級,優先處理優先級高的中斷

4.外部中斷:引腳電平變化所引發的中斷(P3_2由高電平變為低電平 觸發中斷)

3.中斷的執行流程是什么?

中斷源發出中斷請求;

CPU檢查該中斷源是否被屏蔽,處理器內核是否允許處理中斷;

查詢中斷優先級;

保護現場;

執行中斷服務函數;

恢復現場;

4.中斷源

51單片機只有前五個中斷源,優先級自上而下

外部中斷0, 定時器0, 外部中斷1, 定時器1, 串口通信

中斷向量表

中斷向量表是一個函數指針數組,在內存中有固定的存儲單元地址,每個地址對應一個中斷源的中斷服務程序入口,當中斷源觸發中斷時,CPU會自動跳轉到該中斷源在向量表中對應的固定地址

51單片機外設

1.GPIO類

? ? ? ? ds18b20,DHT11,HCSR04

2.ADC類

? ? ? ? MQ系列,氣體濃度,煙霧濃度

3.I2C

? ? ? ? MPU6050六軸加速度傳感器

? ? ? ? MAX301000血氧濃度傳感器

? ? ? ? BH1750光照強度傳感器

SPI類

? ? ? ? ADXL345三軸加速度傳感器

UART類

? ? ? ? GPS傳感器

三大總線

? ? ? ? 地址總線:專門用于傳輸地址信息,由CPU單向傳輸,指向內存和外設

? ? ? ? 數據總線:CPU和內存/外設雙向傳輸

? ? ? ? 控制總線:CPU向內存/外設發出指令,內存/外設向CPU反饋狀態

GPIO

通用輸入輸出端口,51單片機與外界交互最基本的方式

引腳:兩種模式 輸入模式 輸出模式

輸出功能:引腳獨立去輸出一個高電平(5V)/低電平(0V)

輸入功能:檢測引腳電平狀態? ? ? ? 按鍵

PWM

脈沖寬度調制

高電平所占的總周期的比例叫占空比?

有源蜂鳴器---接入直流電就可以發聲,只能發出固定頻率的聲音

無源蜂鳴器---需要脈沖信號,不同頻率不同音調? ? ? ? ? ? 源->震蕩源

通信方式

? ? ? ? 單工:兩個主機之間通過一根數據線進行傳輸,發送方和接收方是固定的,數據傳輸方向是固定的

????????半雙工:兩個主機之間通過一根數據線進行傳輸,通信的雙方既可以作為發送方也可以作為接收方,數據的傳輸方向是雙向的

????????全雙工:兩個主機之間通過兩根線進行傳輸,通信的雙方既可以作為發送方也可以作為接收方,數據的傳輸方向是雙向的

串行:傳輸數據時通過一根線實現,需要按照1個bit1個bit的次序先后傳輸(資源消耗小->1根線,傳輸速度慢)

并行:多個bit在多根數據線上同時進行傳輸(傳輸速度快,資源消耗大,需要多根線)

串口通信-全雙工串行通信

TTL工作流程

①空閑時數據線為高電平

②發送一個低電平表示起始位

③發送的第一個比特是最低位(最右邊)?

④校驗位分為奇校驗,偶校驗和無校驗

⑤為保證下一個字節發送前的起始位能夠表現出來,校驗位之后發送一個停止位1

串口通信時序

? ? ? ? 起始位+數據位(8bit)+校驗位(奇偶校驗)+停止位

波特率bps:每秒傳輸的bit數量

9600,n,8,1? ? ? ? ? ? ?9600bps,無校驗,8位數據位,1位停止位

同步和異步

? ? ? ? 串口通信通過波特率實現同步

? ? ? ? I2C通過時鐘線實現同步

UART

通用異步收發器

代碼

中斷寄存器配置

1.IE寄存器:中斷控制寄存器

? ? ? ? EA(B7):手動置1,代表CPU響應所有的中斷

? ? ? ? EX0(B1):手動置1,代表允許外部中斷0產生中斷

2.TCON寄存器? 定時器控制寄存器

IT0(B0):置1,代表外部中斷0(P3_2)在下降沿觸發中斷

main.c

#include <reg51.h>
#include "led.h"
void init_eint(void)
{P3 |= (1 << 2) | (1 << 3);IE |= (1 << 7) | (1 << 0) | (1 << 2);TCON |= (1 << 0) | (1 << 2);
}void eint0_handler(void) interrupt 0
{Led_Allon();
}void enin1_handler(void) interrupt 2
{Led_Alloff();
}
int main(void)
{init_eint();Led_Init();while (1){}
}

led.c

#include <reg51.h>void Led_Init(void)
{P2 = 0xFF;
}void Led_Allon(void)
{P2 = 0;
}void Led_Alloff(void)
{P2 = 0xFF;
}

PWM控制蜂鳴器

蜂鳴器以400HZ工作時

代碼

timer.c

#include "timer.h"
#include "led.h"
#include <reg51.h>
unsigned int g_t = 0;void Timer0_Handler(void) interrupt 1	//定時器0中斷服務函數
{	P2 ^= (1 << 1); //指定位翻轉TH0 = 64383 >> 8; //高位TL0 = 64383; //低位
}
void Timer0_Init(void)	 //定時器0初始化
{IE |= (1 << 7) | (1 << 1);//打開中斷總控制和T0溢出中斷//初始化定時器寄存器TMOD &= ~(0x0F << 0);TMOD |= (1 << 0);TH0 = 64383 >> 8;TL0 = 64383;TCON |= (1 << 4);	
}

main.c

#include "timer.h"
#include "led.h"
#include "key.h"
int main(void)
{ Timer0_Init();while (1){	}	return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917951.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917951.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917951.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端開發:HTML(5)—— 表單

下面我們來學習表單。 目錄 什么是Web表單&#xff1f; 表單標簽 1.form標簽 2.輸入框 文本框和密碼框 單選框和復選框 1.單選框 2.復選框 3.按鈕 &#xff08;1&#xff09;普通按鈕 &#xff08;2&#xff09;提交按鈕 &#xff08;3&#xff09;重置按鈕 &#…

【YOLOv8改進 - C2f融合】C2f融合SFS-Conv(空間 - 頻率選擇卷積)提升特征多樣性,同時減少參數和計算量

YOLOv8目標檢測創新改進與實戰案例專欄 專欄目錄: YOLOv8有效改進系列及項目實戰目錄 包含卷積,主干 注意力,檢測頭等創新機制 以及 各種目標檢測分割項目實戰案例 專欄鏈接: YOLOv8基礎解析+創新改進+實戰案例 文章目錄 YOLOv8目標檢測創新改進與實戰案例專欄 介紹 摘要 文…

如何將照片從POCO手機傳輸到Mac電腦

將照片從POCO手機傳輸到Mac電腦可能會有些困難&#xff0c;因為與iPhone不同&#xff0c;POCO設備沒有原生的macOS支持。這常常讓用戶尋找簡單、有效的方法來移動圖片&#xff0c;同時避免丟失質量&#xff0c;節省時間&#xff0c;并避免復雜的軟件設置。如果你想知道如何將照…

最新教程 | CentOS 7 內網環境 Nginx + ECharts 頁面離線部署手冊(RPM 安裝方式)

&#x1f4c1; 一、準備階段&#xff08;在聯網電腦上完成&#xff09; 1.1 下載 Nginx 官方 RPM 安裝包 在聯網電腦瀏覽器中訪問 Nginx 官方穩定版本倉庫&#xff1a; &#x1f517; 地址&#xff1a;http://nginx.org/packages/centos/7/x86_64/ ??云盤&#xff1a;htt…

Redis 常用數據類型 (下)

文章目錄前言一 Hash 哈希1. Hash 相關命令hset 和 hgethexistshdelhkeyshvalshgetallhmgethlenhsetnxhincrbyincrbyfloat2. Hash 命令小結3. Hash 內部編碼Hash 在緩存中的應用場景介紹緩存方式對比二、List 列表1. LIST總體介紹2. List 普通命令lpushlpushxrpushrpushxlrange…

Java Lambda表達式:簡潔高效的函數式編程

1 lambda表達式Lambda 表達式本質是一個匿名函數&#xff0c;用于把函數作為參數&#xff0c;傳入方法中&#xff0c;實現函數式編程風格。使用Lambda 表達式可以使代碼變的更加簡潔緊湊。語法格式&#xff1a;(parameters)-> expression 或 (parameters)->{ statements…

python中的集合

目錄 初識集合 集合的含義 集合的作用 集合的使用場景 集合的定義 集合的常用操作 元素的增加 函數add() 元素的刪除 函數remove() 函數clear() 函數pop() 集合的遍歷 for循環 while循環 初識集合 集合的含義 在pyrhon中&#xff0c;集合是一種內置的數據結構…

如何將普通HTTP API接口改造為MCP服務器

在現代微服務架構中&#xff0c;MCP&#xff08;Mesh Configuration Protocol&#xff09; 作為高效配置分發協議&#xff0c;正逐漸替代傳統HTTP API。本文將手把手教你如何將普通HTTP API升級為高性能MCP服務器。 為什么需要MCP&#xff1f; 傳統HTTP API在配置分發場景存在…

數據結構第8問:什么是樹?

樹 【本節僅描述樹的定義、術語以及相關性質】 定義 樹是由若干個結點組成的有限集合。具有如下特征&#xff1a; 有且僅有一個根結點&#xff1b;除根結點外&#xff0c;每個其它結點有且僅有一個直接的父結點&#xff1b;除根結點外&#xff0c;每個結點可以有零個或者多個子…

PyTorch RNN 名字分類器

PyTorch RNN 名字分類器詳解 使用PyTorch實現的字符級RNN&#xff08;循環神經網絡&#xff09;項目&#xff0c;用于根據人名預測其所屬的語言/國家。該模型通過學習不同語言名字的字符模式&#xff0c;夠識別名字的語言起源。 環境設置 import torch import string import un…

面向對象之類方法,成員變量和局部變量

1.類的方法必須包含幾個部分&#xff1f;2.成員變量和局部變量類的方法必須包含哪幾個部分&#xff1f;.方法名&#xff1a;用于標識方法的名稱&#xff0c;遵循標識符命名規則&#xff0c;通常采用駝峰命名法。返回值類型&#xff1a;指定方法返回的數據類型。如果方法不返回任…

古法筆記 | 通過查表進行ASCII字符編碼轉換

ASCII字符集是比較早期的一種字符編碼&#xff0c;只能表示英文字符&#xff0c;最多能表示128個字符。 字符集規定了每個字符和二進制數之間的對應關系&#xff0c;可以通過查表完成二進制數到字符的轉換ASCII字符占用的存儲空間是定長的1字節 ASCII字符的官方碼點表見下圖&…

Linux C實現單生產者多消費者環形緩沖區

使用C11里的原子變量實現&#xff0c;沒有用互斥鎖&#xff0c;效率更高。ring_buffer.h:/*** file ring_buffer.h* author tl* brief 單生產者多消費者環形緩沖區&#xff0c;每條數據被所有消費者讀后才釋放。讀線程安全&#xff0c;寫僅單線程。* version* date 2025-08-06*…

復雜場景識別率↑31%!陌訊多模態融合算法在智慧環衛的實戰解析

摘要&#xff1a;針對邊緣計算優化的垃圾堆放識別場景&#xff0c;本文解析了基于動態決策機制的視覺算法如何提升復雜環境的魯棒性。實測數據顯示在遮擋/光照干擾下&#xff0c;mAP0.5較基線提升28.3%&#xff0c;誤報率降低至行業1/5水平。一、行業痛點&#xff1a;智慧環衛的…

MyBatis-Plus Service 接口:如何在 MyBatis-Plus 中實現業務邏輯層??

全文目錄&#xff1a;開篇語前言1. MyBatis-Plus 的 IService 接口1.1 基本使用示例&#xff1a;創建實體類 User 和 UserService1.2 創建 IService 接口1.3 創建 ServiceImpl 類1.4 典型的數據庫操作方法1.4.1 save()&#xff1a;保存數據1.4.2 remove()&#xff1a;刪除數據1…

[激光原理與應用-168]:光源 - 常見光源的分類、特性及應用場景的詳細解析,涵蓋技術原理、優缺點及典型應用領域

一、半導體光源1. LED光源&#xff08;發光二極管&#xff09;原理&#xff1a;通過半導體PN結的電子-空穴復合發光&#xff0c;波長由材料帶隙決定&#xff08;如GaN發藍光、AlGaInP發紅光&#xff09;。特性&#xff1a;優點&#xff1a;壽命長&#xff08;>5萬小時&#…

Metronic v.7.1.7企業級Web應用前端框架全攻略

本文還有配套的精品資源&#xff0c;點擊獲取 簡介&#xff1a;Metronic是一款專注于構建響應式、高性能企業級Web應用的前端開發框架。最新版本v.7.1.7引入了多種功能和優化&#xff0c;以增強開發效率和用戶體驗。詳細介紹了其核心特性&#xff0c;包括響應式設計、多種模…

鴻蒙開發--Notification Kit(用戶通知服務)

通知是手機系統中很重要的信息展示方式&#xff0c;通知不僅可以展示文字&#xff0c;也可以展示圖片&#xff0c;甚至可以將組件加到通知中&#xff0c;只要用戶不清空&#xff0c;通知的信息可以永久保留在狀態欄上通知的介紹 通知 Notification通知&#xff0c;即在一個應用…

鴻蒙 - 分享功能

文章目錄一、背景二、app發起分享1. 通過分享面板進行分享2. 使用其他應用打開二、處理分享的內容1. module.json5 配置可接收分享2. 解析分享的數據一、背景 在App開發中&#xff0c;分享是常用功能&#xff0c;這里介紹鴻蒙開發中&#xff0c;其他應用分享到自己的app中&…

【Agent 系統設計】基于大語言模型的智能Agent系統

一篇阿里博文引發的思考和探索。基于大語言模型的智能Agent系統 1. 系統核心思想 核心思想是構建一個以大語言模型&#xff08;LLM&#xff09;為“大腦”的智能代理&#xff08;Agent&#xff09;&#xff0c;旨在解決將人類的自然語言指令高效、準確地轉化為機器可執行的自動…