天天看點

01單片機——基礎知識

一、單片機概述

 1、什麼是單片機

      單片機就是在一塊矽片上內建了微處理器(類比CPU)、存儲器(類比硬碟和記憶體)及各種輸入/輸出接口的晶片(類比鍵盤滑鼠控制晶片),這樣一塊晶片就具有了計算機的屬性,因而被稱為單片型微型計算機,簡稱單片機。

2、單片機引腳描述

     單片機引腳分為三類:①電源和時鐘引腳。如VCC、GND、XTAL1、XTAL2;②程式設計控制引腳。如RST,PSEN_n、ALE/PROG_n、EA_n/VPP;③I/O口引腳。如P0、P1、P2、P3,4組8位I/O口。

    VCC、GND——單片機電源引腳,不同型号單片機接入對應的電壓電源,常壓位+5V,低壓位+3.3V。

    XTAL1、XTAL2——外接時鐘引腳。XTAL1為片内振蕩電路的輸入端,XTAL2為片内振蕩電路的輸出端。8051的時鐘有兩種方式,一種是片内時鐘振蕩方式,需在這兩個引腳外接石英晶體和振蕩電容;另一種是外部時鐘方式,即将XTAL1接地,外部時鐘信号從XTAL2腳輸入。

    RST——單片機的複位引腳。當輸入連續兩個機器周期以上高電平時為有效,用來完成單片機的複位初始化操作,複位後程式計數器PC=0000H,即複位後将從程式存儲器的0000H單元讀取第一條指令碼,通俗來講,就是單片機從頭開始執行程式。

    PSEN_n——程式存儲器允許輸出控制端。在讀外部程式存儲器時PSEN_n低電平有效,以實作外部程式存儲器單元的讀操作,由于現在我們使用的單片機内部已經有足夠大的ROM,是以幾乎沒有人再去擴充外部ROM,是以這個引腳隻需了解即可。①内部ROM讀取時,PSEN_n不動作。②外部ROM讀取時,在每個機器周期會動作兩次。③外部RAM讀取時,兩個PSEN_n脈沖被跳過不會輸出。④外接ROM時,與ROM的OE腳相接。

    ALE/PROG_n——在單片機擴充外部RAM時,ALE用于控制把P0口的輸出低8位位址送鎖存器鎖存起來,以實作低位位址和資料的複用。在沒有通路外部存儲器器件,ALE以1/6振蕩頻率輸出(即6分頻),當通路外部存儲器時,以1/12振動周期輸出(12分頻),從這裡可以看出,當系統沒有進行擴充時,ALE會以1/6振蕩周期固定頻率輸出,是以可以作為外部時鐘,或作為定時脈沖使用。PROG_n位程式設計脈沖的輸入端,單片機的内部有程式存儲器(ROM),它的作用時用來存放使用者需要執行的程式,那麼我們怎樣才能将寫好的程式存入這個ROM中?實際上,我們是通過程式設計脈沖輸入才寫進去的,這個脈沖的輸出端口就是PROG_n。現在有很多單片機都已經不需要程式設計脈沖引腳往内部寫程式了,比如我們用的STC單片機,它可以直接通過序列槽往裡面寫程式,隻需要三個線與計算機相連即可。而且現在的單片機内部都已經帶有豐富的RAM,是以也不需要再擴充RAM 了。是以ALE/PROG_n這個引腳的用處已經不太大。

    EA_n/VPP——EA_n接高電平時,單片機讀取内部程式存儲器。當擴充有外部ROM時,當讀取完ROM後自動讀取外部ROM。EA_n接低電平時,單片機直接讀取外部ROM。8031單片機内部是沒有ROM的,是以使用8031單片機時,這個引腳是一直低電平的。8751單片機燒寫内部EPROM時,利用此引腳輸入21V的燒寫電壓。因為現在我們用的單片機都有内部的ROM,是以再設計電路時此引腳始終接高電平。

    I/O口引腳——P0口、P1口、P2口和P3口;

3、電平特性

     單片機是一種數字內建晶片,數字電路中隻有兩種電平:高電平和低電平。

     常用的邏輯電平有TTL、CMOS、LVTTL、ECL、PECL、GTL、RS-232、RS-422、RS-485、LVDS等。其中TTL和CMOS的邏輯電平按典型電壓可分為4類:5V系列、3.3V系列、2.5V系列和1.8V系列。

     5V TTL和5V CMOS是通用的邏輯電平。3.3V及以下的邏輯電平被稱為低電壓邏輯電平,常用的為LVTTL電平。低電壓邏輯電平還有2.5V個1.8V兩種。ECL/PECL和LVDS是差分輸入/輸出。RS-422/485和RS-232是序列槽的接口标準,RS-422/485是差分輸入/輸出,RS-232是單端輸入/輸出。

4、進制與邏輯運算

   進制包括二進制、8進制、10進制和16進制。

   邏輯運算包括與(&、&&)、或(|、||)、非(!)、同或(C語言中沒有同或運算符,異或的非為同或)、異或(^)。

5、C51中的基本資料類型

01單片機——基礎知識

    在C語言書記中還能看到short int,long int,signed short int等資料類型,在單片機的C語言中我們預設的規則如下:short int即為int,long int即為long,前面若無unsigned符号則一律認為是signed型。

6、C51資料類型擴充定義

     單片機内部有很多的特殊功能寄存器,每個寄存器在單片機内部都配置設定有唯一的位址,一般我們會根據寄存器功能的不同給寄存器賦予各自的名稱,當我們需要在程式中操作這些特殊功能寄存器時,必須要在程式的最前面将這些名稱加以聲明,聲明的過程實際上就是将這些個寄存器在記憶體中的位址編号賦給這個名稱,這樣編譯器在以後的程式中才可認知這些名稱所對應的寄存器。實際上這些寄存器的聲明已經完全被包含在51單片機的特殊功能寄存器聲明頭檔案“reg51.h”中了。

       sfr——特殊功能寄存器的資料聲明,聲明一個8位的寄存器。

       sfr16——16位特殊功能寄存器的資料聲明。

       sbit——特殊功能位聲明,也就是聲明某一個特殊功能寄存器中的某一位。

       bit——位變量聲明,當定義一個位變量時可使用此符号。

       例如:sfr SCON = 0x98;SCON時單片機的串行口控制寄存器,這個寄存器在單片機記憶體中的位址位0x98,這樣聲明後,我們以後要操作這個控制寄存器時,就可以直接對SCON進行操作,這時編譯器也會明白,我們實際上要操作的單片機内部0x98位址處的這個寄存器,而SCON僅僅時這個位址的一個代号或者名稱而已。當然,我們也可以定義成其他的名稱。

       例如:sfr16 T2 = 0xCC;聲明一個16位的特殊功能寄存器,它的起始位址位0xCC。

       例如:sbit TI = SCON^1;SCON是一個8位寄存器,SCON^1表示這個8位寄存器的次低位,最低位是SCON^0;SCON^7表示這個寄存器的最高位。該語句的功能是将SCON寄存器的次低位聲明為TI,以後若要對SCON寄存器的次低位操作,則可直接操作TI。

7、C51中常用的頭檔案

      通常由reg51.h,reg52.h,match.h,ctype.h,stdio.h,stdlib.h,absacc.h,intrins.h。但常用的卻隻有reg51.h或reg52.h,match.h。

      reg51.h和reg52.h是定義51單片機或52單片機特殊功能寄存器和位寄存器的,這兩個頭檔案中的大部分内容是一樣的,52單片機比51單片機多了一個定時器T2,是以reg52.h中就比reg51.h中多幾行定義T2寄存器的内容。

     match.h是定義數學運算的,比如求絕對值,求方根,求正餘弦等,該頭檔案中包含有各種數學運算函數,當我們需要使用時可以直接調用它的内部函數。

8、C51中的運算符

01單片機——基礎知識

9、C51中的基礎語句

01單片機——基礎知識

10、學習單片機應該掌握的内容

  1)、掌握單片機最小系統能夠運作的必要條件:電源、晶振、複位電路。

  2)、掌握對單片機任意I/O口的操作:輸出控制電平高低、輸入檢測電平高低。

  3)、定時器:重點掌握最常用的方式2.

  4)、中斷:掌握外部中斷、定時器中斷、序列槽中斷。

  5)、序列槽通信:掌握單片機之間通信、單片機與計算機之間的通信。

參考《新概念51單片機C語言教程入門、提高、開發》

繼續閱讀