一、框架
?
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被選中