嵌入式學習 51單片機01

一、框架

?

1、CPU(Central Processing Unit,中央處理單元)?是計算機的核心部件,負責執行計算機指令和處理數據。

2、MCU(Microcontroller Unit,微控制單元)?是一種將中央處理器、內存、輸入輸出接口等多種功能模塊集成在單一芯片上的微型計算機系統。(特殊的CPU重視對外攝的控制而非數據的處理)

3、MPU(Microprocessor Unit,微處理器單元)?是一種集成了CPU、內存、外設控制器和總線接口等功能的芯片。

4、GPU(Graphics Processing Unit,圖形處理單元)?是一種專門設計用于快速處理圖像和視頻數據的處理器。

5、SoC(System on Chip,系統級芯片)?是將微處理器、模擬IP核、數字IP核、存儲器以及必要的接口電路等多種電子系統功能模塊集成在一個單一的芯片上。特殊的CPU(先進)

?

二、51單片機?

(一)8051內核

?

HC6800-MS原理圖

?

?

(二)LED模塊?

1、原理圖

P20/SDA:網絡編號(原理上二者連接在一起)?

2、代碼?
main.c

#include <reg52.h> //register
#include "led.h"
void delay(unsigned int n)
{
? ? while(n--);
}
int main(void)
{
? ? //P2 = 0xFF; //初始化
? ? unsigned char i;
? ? int n;
? ? init_led();
// ? ?led_on(0x3F);
? ? while(1)
? ? {
? ? // ? ?delay(0x3FFF);
? ? // ? ?P2 = 0xFF; init_led();
? ? // ?P2= 0x00;
? ? // ? ?delay(0x3FFF);
? ? // ?P2 &= ~((1<<0)|(1<<3)|(1<<6));
? ? // ? ?P2 &= ~(7<<2);
? ? // ? ?P2 &= ~(0x0F<<2);
? ? // ? ?P2 &= ~(0x1F<<2);
? ? // ? ?P2 ^= (1<<0)|(1<<3)|(1<<6);
? ? //for(i=0;i <= 0xFF;++i)
// ? ?{
// ? ? ? ?led_on(i);
// ? ? ? ?delay(0xFFFF);
// ? ?}
//跑馬燈
? ? ? ? i = 0x01;
? ? ? ? for(n=0;n < 7;++n)
? ? ? ? {
? ? ? ? ? ? led_on(i);
? ? ? ? ? ? delay(0xFFFF);
? ? ? ? ? ? i <<= 1;
? ? ? ? }
? ? ? ? i = 0x80;
? ? ? ? for(n=0;n < 7;++n)
? ? ? ? {
? ? ? ? ? ? led_on(i);
? ? ? ? ? ? delay(0xFFFF);
? ? ? ? ? ? i >>= 1;
? ? ? ? }
? ? }
}

led.c?

#include "led.h"
#include <reg52.h>

void init_led(void)
{
? ? P2 = 0xFF; ? ??
}

void led_all_on(void)
{
? ? P2 = 0;
}

void led_on(unsigned char n)//1亮0滅
{
? ? n = ~n;;
? ? P2 = n;
}

void led_all_off(void)
{
? ? P2 = 0xFF;
}

void led_all_nor(void)
{
? ? P2 ^= 0xFF;
}

void led_nor(unsigned char n)
{
? ? P2 ^= n;
}

LED.H

#ifndef _LED_H_
#define _LED_H_

extern void init_led(void);
extern void led_all_on(void);
extern void led_on(unsigned char n);
extern void led_all_off(void);
extern void led_off(unsigned char n);
extern void led_all_nor(void);
extern void led_nor(unsigned char n);

#endif

(三)位運算?

?

指定位清零


公式:

? ? ? ? reg &= ~(1<<n) ? ?//reg寄存器第n位清零

? ? ? ? reg &= ~((1<<n) | (1<<m)) ? //reg寄存器第m位和n位清零 ? ? ? ?

eg:P2 &= ~(1<<2) | (1<<3)

連續清零

? ??????P2 &= ~(3<<2) ?//連續2個比特位清零偏移2位

? ? ? ? P2 &= ~(7<<2) ?//連續3個比特位清零

? ? ? ? P2 &= ~(0x0F<<2) ?//連續4個比特位清零

? ? ? ? P2 &= ~(0x1F<<2) ?//連續5個比特位清零

指定位置1


公式:

? ? ? ? reg |= (1<<n) ? //reg寄存器第n位置1

? ? ? ? reg |= (1<<n) | (1<<m) ?//reg寄存器第m位和n位置1 ?

連續置1

? ? ? ? P2 |= (7<<2)//連續3個比特位置1

指定位翻轉


^:指定位翻轉,其他位不變(相同為0不同為1)

eg: ?P2 ^= (1<<0)|(1<<3)|(1<<6);

1、& ?按位與

?& :雙目運算符,優先級為8級,結合方向自左至右;

運算規則:一假則假 (任何一個為0,其結果必然為0;兩個都為1,其結果1);

作用:指定位清零;

示例:

1001 1110?
0011 0010 &
-------------------

0001 0010?

?

2、| ?按位或?

|:雙目運算符,優先級為10級,結合方向自左至右;

運算規則:一真則真 (任何一個為1,其結果必然為1;兩個都為0,其結果為0);

作用:指定位置1;

示例:

1001 1110?
0011 0010 |
-------------------

1011 1110

?

3、^ 按位異或??

^:雙目運算符,優先級為9級,結合方向自左至右;

運算規則:相同為0,不同為1;

作用:指定位翻轉,其他位不變;

示例:

1001 1110?
0011 0010 ^
-------------------

1010 1100

?

4、~ 取反?

~:單目運算符,優先級為2級,結合方向自右至左;

運算規則:按位取反(將0變1,1變0);

示例:

1001 1110 ?~
-------------------

0110 0001

?

5、<< ?左移

<<:雙目運算符,優先級為5級,結合方向自左至右;

寫法:a<<n ?(表示將a這個數據左移n位 )(C語言中為邏輯左移)

最高位無論是1還是0全丟掉,后面補0;

作用:指定位清零( ~(1 << n));

示例:

0000 0001?
0000 0010
左移1位 ?相當于乘 2 ?

6、>> ?右移?

1、>>:雙目運算符,優先級為5級,結合方向自左至右;

2、寫法:a>>n(表示將 a這個數據 右移 n位)

3、算術右移是看符號位和看數據類型的:

(1)有符號數據類型,右移時,最高位補的是符號位; (算術右移) ? ??

(2)無符號類型的數據,右移時,最高位補的0 ;(邏輯右移)

注:在使用右移運算符時最好定義無符號數據類型(eg:unsigned char)

4、示例:

1000

1100

-----------

0100

0010

右移1位 ?相當于除 2 ??

?

(四)寄存器

1、定義

在數字電路中,用來存放二進制數據或代碼的電路稱為寄存器。

2、本質

P2寄存器本質:地址強轉為指針間接訪問

#define P2 *((unsigned char *)(0xA0))

注:第一個 * 為指針運算符(對該指針(unsigned char *)(0xA0)的間接訪問)

?sfr P2 = 0xA0;

sfr為特殊功能寄存器,0xA0為地址

??

注:寄存器可假定為系統提前定義好的全局變量(unsigned char P2;//一個字節8個比特)?

(五)存儲器

?

RAM(易失性存儲器)
????????又稱隨機訪問存儲器;

????????易失性存儲器(Volatile Memory)?是指斷電后存儲的數據會立即消失的存儲器。這類存儲器通常具有較快的存取速度,但無法長期保存數據。易失性存儲器的典型代表有DRAM(動態隨機存取存儲器)和SRAM(靜態隨機存取存儲器)?。?

ROM(非易失性存儲器)
????????又稱只讀存儲器;

????????特點對比非易失性存儲器(Non-Volatile Memory, NVM)?是指當電流關閉后,所存儲的數據不會消失的存儲器。這類存儲器在斷電后仍能保持數據,因此常用于需要長期保存數據的場合。非易失性存儲器的典型代表包括ROM(只讀存儲器)、Flash(閃存,包括NAND和NOR類型)、EEPROM(電可擦可編程只讀存儲器)等?。

特點對比


?非易失性存儲器?:

?數據保留?:斷電后數據不丟失,適合長期數據存儲。
?寫入次數有限?:如Flash存儲器有一定的擦寫次數限制。
?容量和速度?:EEPROM支持字節級擦寫,但容量較小;Flash存儲器速度較慢,適合大容量數據存儲?。


?易失性存儲器?:

?數據不保留?:斷電后數據立即消失。
?速度快?:如SRAM和DRAM具有較高的存取速度,適合臨時數據存儲和高頻訪問?。
?依賴供電?:需要持續供電以保持數據,斷電后數據丟失?。
?

(六)數碼管

段選:選擇數碼管中某段的亮滅狀況(P0來控制)

位選:選擇哪個數碼管顯示(LEDS1、LEDS2、LEDS3、LEDS4來控制)

code關鍵字

前加該關鍵字,將數組放入代碼區(ROM),降低對RAM空間的使用。

1、原理圖

?注:共陰極,在三極管中,將P10置一,LEDS1即為0被選中

2、代碼?

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

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

相關文章

C語言之內存對齊

一、為什么要內存對齊 Arm對內存的訪問支持字&#xff08;4byte&#xff09;、半字&#xff08;2byte&#xff09;、字節&#xff08;1byte&#xff09;的直接訪問&#xff0c;但是呢他們是有一定的要求的&#xff1a; 存取字時要求地址按字對齊&#xff0c;也就是地址要是4的…

Python 基礎語法 -----函數

一、函數 1、函數是什么 編程中的函數和數學中的函數有一定的相似之處。 數學上的函數&#xff0c;比如 y sin x&#xff0c;x 取不同的值&#xff0c;y 就會得到不同的結果。 編程中的函數是一段可以被重復使用的代碼片段。 &#xff08;1&#xff09;求數列的和&#x…

Windows/Linux系統 Ollama部署deepseek 大模型

Ollama 是一個開源工具&#xff0c;專門用于在本地計算機上運行和操作大型語言模型&#xff08;LLM&#xff09; 官方下載網站&#xff08;https://ollama.ai/&#xff09; Windows系統安裝方法 建議命令行安裝&#xff08;默認安裝會直接安裝到C盤&#xff09; OllamaSetu…

用Tensorflow進行線性回歸和邏輯回歸(一)

這一章告訴你如何用TensorFlow構建簡單的機器學習系統。第一部分回顧構建機器學習系統的基礎特別是講函數&#xff0c;連續性&#xff0c;可微性。接著我們介紹損失函數&#xff0c;然后討論機器學習歸根于找到復雜的損失函數最小化的點的能力。我們然后講梯度下降&#xff0c;…

java/.net跨平臺UI瀏覽器SDK,瀏覽器控件開發包分析

在 Linux 系統中&#xff0c;雖然沒有完全等同于安卓 WebView 的內置瀏覽器 SDK&#xff0c;但存在多種基于開源瀏覽器引擎的解決方案&#xff0c;支持通過 Java 代碼控制網頁加載和執行 JavaScript。以下是具體實現方案和技術細節&#xff1a; 一、核心技術方案對比 方案名稱…

Taro 狀態管理全面指南:從本地狀態到全局方案

在跨端應用開發中&#xff0c;狀態管理是構建可維護、可擴展應用的核心環節。作為京東凹凸實驗室推出的多端統一開發框架&#xff0c;Taro 支持 React/Vue 等主流前端框架&#xff0c;自然也繼承了豐富的狀態管理生態。本文將全面剖析 Taro 中的各種狀態管理方案&#xff0c;從…

記錄一下jar做成windows服務問題

1、打包好jar 2、把jdk防止到和jar同一目錄下 3、下載winsw-x64.exe 和 sample-minimal.xml https://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exehttps://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exe sample-minimal.xmlhttps://…

【Dify 案例】【MCP實戰】【二】【超級助理】

我們創建一個工作流。你是一個超級助理,能夠根據輸入的指令,進行推理和自主調用工具,完成并輸出結果。 注意,需要判斷是否調用高德MCP來獲取對應工具協助你完成任務。 1.開始 2.策略大腦 2.1 AEGNT策略 2.2 工具列表 2.3 指令

Qt Quick 與 QML(二)qml中的頂級窗口

一、前言 在QML中&#xff0c;?頂級窗口不是絕對必需的?&#xff0c;但它在大多數應用場景中扮演著關鍵角色。 需要頂級窗口的典型場景&#xff1a; 1.獨立桌面/移動應用? 必須使用Window或ApplicationWindow作為根元素。 2.多窗口應用 每個獨立窗口都需要一個頂級窗口實例…

華為云Flexus+DeepSeek征文|DeepSeek-V3/R1 免費服務開通全流程與Rest API和OpenAI SDK調用詳解

華為云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 免費服務開通全流程與Rest API和OpenAI SDK調用詳解 前言 本文將詳細介紹DeepSeek-V3/R1 免費服務開通全流程&#xff0c;并且詳細講解通過本地方式Rest API和OpenAI SDK兩種方式調用DeepSeek-V3/R1 前提準備 1、訪問 Mod…

Qt 連接信號使用lambda表達式和槽函數的區別

1. 語法與代碼結構 成員函數 需在類中顯式聲明槽函數&#xff08;public slots: 或 Qt 5 后的任意成員函數&#xff09;&#xff0c;并在連接時指定接收對象。 class Receiver : public QObject {Q_OBJECT public slots:void handleSignal(int value) { /* ... */ } };// 連接…

學習筆記丨AR≠VR:透視沉浸式技術的“虛實象限”法則

AR&#xff08;增強現實&#xff09;和VR&#xff08;虛擬現實&#xff09;是沉浸式技術的兩大分支&#xff0c;核心區別在于虛擬與現實的融合程度。以下是兩者的詳細對比&#xff1a; 對比維度 AR&#xff08;增強現實&#xff09; VR&#xff08;虛擬現實&#xff09; 技術…

本地使用 modelscope 大模型 來進行文本生成視頻(Text-to-Video)

1. ? 創建并激活 Conda 環境&#xff08;Python 3.8&#xff09; conda create -n modelscope python3.8 -yconda activate modelscope 2.? 安裝了 PyTorch&#xff08;CPU 版本&#xff09; 如果你是 CPU-only 用戶&#xff08;沒有 NVIDIA 顯卡 或不想用 GPU&#xff0…

文生視頻(Text-to-Video)

&#x1f552; 生成時間&#xff1a;每張圖大概 10–60 秒&#xff08;取決于設備&#xff09; ? 二、文生視頻&#xff08;Text-to-Video&#xff09; 以下項目中&#xff0c;很多都基于 SD 模型擴展&#xff0c;但視頻生成復雜度高&#xff0c;生成時間一般 超過 30 秒&am…

CLion + STM32環境配置,親測有效(2025.06.19記)

CLion STM32環境配置 遇到的問題描述&#xff1a; > "moniton" command not supported by this target. > You cant do that when your target is exec > 上傳完成&#xff0c;但存在問題 > monitor reset > "monitor" command not …

借助ChatGPT快速開發圖片轉PDF的Python工具

一、開發背景與適用場景 隨著數字文檔處理需求的激增&#xff0c;圖片轉PDF的需求日益廣泛。從學生提交圖像化作業&#xff0c;到教師整合掃描試卷等資料&#xff0c;再到行政人員歸檔證件照片&#xff0c;工作中的方方面面都離不開圖片的處理。如何高效、批量地將多個圖片文件…

SuGAR代碼精簡解讀

目錄 一、全流程訓練腳本 train_full_pipeline.py 二、核心訓練邏輯 train.py 粗優化 (coarse_density_and_dn_consistency.py) 網格提取 (extract_mesh_from_coarse_sugar) 精優化 (refined_training) 兩次優化&#xff08;粗優化和精優化&#xff09;中使用的損失函數及…

大模型安全關鍵技術研究

? 引言 隨著人工智能技術的迅猛發展&#xff0c;大模型已成為推動各行業變革的核心力量。從智能客服、醫療影像識別到金融風險預測&#xff0c;大模型的應用場景不斷拓展&#xff0c;深刻改變著人們的生產生活方式。大模型已經轉變為AI領域的基礎設施&#xff0c;為解決各種…

java面試題04成員變量和局部變量的區別

成員變量(Member Variable)和局部變量(Local Variable)是面向對象編程中兩種作用域和生命周期不同的變量,主要區別體現在以下幾個方面: 1. 聲明位置 成員變量: 聲明在類內部、方法/構造器/代碼塊外部。 例如: public class Person {// 成員變量(實例變量)private Str…

升級到 .NET 9 分步指南

隨著激動人心的 .Net 9 更新正式發布&#xff0c;漫長的等待終于結束了。它帶來了一些令人驚嘆的特性&#xff0c;例如改進的 LINQ 功能、HybridCache 等等。此外&#xff0c;憑借其卓越的性能提升、更佳的安全性、更完善的協議和更易維護的特性&#xff0c;它必將吸引開發者和…