找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2613|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機一些小總結(jié)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:68618 發(fā)表于 2014-11-11 18:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
整理了下當(dāng)時學(xué)習(xí)單片機不明白的概念,自己總結(jié)和百度整理來的,所以有可能會有不當(dāng)之處,希望大家見諒
硬件篇
MCU:微控制器,就是指單片機這類,控制是mpu最根本的區(qū)別
MPU:微處理器,就是cpu這一類,用于處理數(shù)據(jù)和運算;當(dāng)然單片機也有處理和運算能力,但是在能力上弱了很多,更大的區(qū)別是相比單片機體系不是那么完整,他更像是單片機的一個內(nèi)核,缺少相應(yīng)的ROM RAM之類,這些都要外擴
SOC:和mpu和接近 但是他在內(nèi)核的基礎(chǔ)上集成了些外設(shè),比如說S3C2440他在上面集成了USB接口TFT控制器等,ARM9等嵌入式芯片就是這類。
寄存器:這是初識單片機最常聽見的詞匯,其實他就是可以保持數(shù)據(jù)同時又能輸入新的狀態(tài)數(shù)據(jù),51的很多寄存器就是從RAM中劃分出來的一些單元,對他進行數(shù)值的設(shè)置可以得到不同的反應(yīng);單片機中通過對寄存器設(shè)置來得到所需要的功能。
RAMROMROM程序存儲器,RAM臨時數(shù)據(jù)存儲器,程序是下載到ROM內(nèi),再有cpu讀取到RAM,運算的過程當(dāng)中的中間數(shù)據(jù)也是保存在RAM中,RAM的大小會對運算速度有很大的影響,類似于電腦內(nèi)存,如果內(nèi)存條過小的話cpu就必須在內(nèi)存數(shù)據(jù)滿了的時候去讀取新的數(shù)據(jù)到里面,很大程度降低了速度。
API函數(shù):提供了對硬件或者是操作系統(tǒng)進行訪問的一些接口,其實就是一些對對象操作或反饋狀態(tài)對象當(dāng)前工作狀態(tài)的函數(shù)和變量之類的東西。
晶振:類似于人類的心臟,他給單片機提供著一個有規(guī)律的周期,如同心臟間歇性的跳動推動血液的流動。他的頻率快慢決定了時鐘周期,和機械周期。
時鐘周期:一個時鐘脈沖所需要的時間。在計算機組成原理中又叫T周期或節(jié)拍脈沖。是CPU和其他單片機的基本時間單位。

機器周期:通常用從內(nèi)存中讀取一個指令字的最短時間來規(guī)定CPU周期(機器周期),也即CPU完成一個基本操作所需的時間。
指令周期:指令周期是執(zhí)行一條指令所需要的時間,一般由若干個機器周期組成,是從取指令、分析指令到執(zhí)行完所需的全部時間。
推挽、開漏、強上拉、弱上拉、強下拉、弱下拉輸出:這些都是單片機I\O口的工作模式,不同的外設(shè)對應(yīng)不同的工作模式,比如不用驅(qū)動芯片驅(qū)動點陣的話就必須把io口設(shè)置成推挽模式,而對于無線芯片不加上拉電阻的話就要選擇上拉或者是推挽,一般模式的話無線芯片不能正常工作,而開漏好像是用與io口作為輸入口,因為去阻值會很大所以通過他的電流會很小,功率損失也可以很好地控制
串口:串行接口SerialInterface是指數(shù)據(jù)一位位地順序傳送,其特點是通信線路簡單,只要一對傳輸線就可以實現(xiàn)雙向通信
并口:并行接口中各位數(shù)據(jù)都是并行傳送的,它通常是以字節(jié)(8位)或(16位)為單位進行數(shù)據(jù)傳輸。
控制器和驅(qū)動器:驅(qū)動器顧名思義就是驅(qū)動硬件工作的電路,而控制器是控制其如何工作,就比如S3C2440內(nèi)部集成了TFT控制器,但是光控制器無法讓TFT工作的,在TFT上有驅(qū)動他工作的電路,拆過舵機的就知道里面就是個普通的直流電機和塊電路板,那電路板就是驅(qū)動器,而讓舵機工作則需要單片機輸出PWM(相當(dāng)于控制器)
字節(jié)(Byte):字節(jié)是指一小組相鄰的二進制數(shù)碼。通常是8位作為一個字節(jié)。字節(jié)是通過網(wǎng)絡(luò)傳輸信息(或在硬盤內(nèi)存中存儲信息)的單位。網(wǎng)絡(luò)上的所有信息都是以bit)為單位傳遞的,一個位就代表一個01,每8個位(bit)組成一個字節(jié)(Byte)。
算法:算法以我的理解就是完成某項工作或者是某項運算所采用的處理方式,比如搬運物品的話可以采用手搬,或者是小推車推運,同一問題算法多種多樣,效率也不敬相同;
驅(qū)動:驅(qū)動是在操作系統(tǒng)與硬件之間搭建橋梁,使硬件正常工作的一種軟件程序。如果廣泛的認為就是讓硬件發(fā)揮作用正常工作的程序的話,那單片機流水燈之類的也都是驅(qū)動程序。
時序電路:實施一連串邏輯操作,在任一給定瞬時的輸出值取決于其輸入值和在該瞬時的內(nèi)部狀態(tài),且其內(nèi)部狀態(tài)又取決于緊鄰著的前一個輸入值和前一個內(nèi)部狀態(tài)的器件。
組合電路:組合邏輯電路由最基本的的邏輯門電路組合而成,輸出值只與當(dāng)時的輸入值有關(guān),即輸出惟一地由當(dāng)時的輸入值決定。
軟件
于51開始學(xué)習(xí)單片機的人的話最早書寫的應(yīng)該就是#include<reg52.h>
#include就是文件包含命令,51用到的頭文件很少,而且很多都是系統(tǒng)定義的,當(dāng)你學(xué)習(xí)ARM就會發(fā)現(xiàn)要有很多的頭文件,而且很多都是自己定義的,這個時候我們必須知道文件的路徑,把他添加到調(diào)用它的c文件當(dāng)中,如果找不到這個文件就會報錯,添加的方法有兩種,一種是在編譯器中設(shè)置(不是所以編譯器有效),還有是在包含命令中加入路徑(詳解請看#include的使用)。而reg51.h這個文件里面把各個寄存器和可以位操作的寄存器的各位定義一下。所以單片機芯片要操作都要對寄存器進行定義,s3c2440也有自己的寄存器定義文件2440addr.h,不過S3c244051單片機不同的是要包含啟動代碼,初始化s3c2440。否則2440無法工作
       ++a與a++的區(qū)別在于前一個是自加1之后參與運算,而另一個是參與運算之后加1,也就是說a++的話,在那一行代碼中,a的值是不變的,下一行才發(fā)生變化,++a則是在那一行已經(jīng)發(fā)生了變化。
         剛從8 bit單片機玩32 bit會很不不習(xí)慣,原因是操作方式變化了,之前的51單片機的話改變寄存器直接位操作或者是寄存器操作賦值就好了,但是32位處理器就不同了,因為位有32位那么多,不可能清楚每一位應(yīng)該操作的數(shù)值,直接賦值務(wù)必造成誤操作。
X bit1:(寄存器標示符)=(寄存器標示符)||1<<X)或者是(寄存器標示符)II=1<<X  后一種其實是前一種的簡化寫法 (1向左移動X位,再同寄存器進行或運算之后賦值給原來的寄存器)
X bit0:(寄存器標示符)=(寄存器標示符)&&  ~1<<X)或者是 (寄存器標示符)&&=~1<<X  后一種也是前一種的簡化寫法(1向左移動X位之后取反同寄存器進行與操作)
指針在c中是個很重要的部分,其實也不要把它看得太難,他其實就是一個存取地址數(shù)據(jù)的一個量,可以通過*號讀寫他地址當(dāng)中的內(nèi)容,也可以通過&給他取新的地址,在沒有對指針取地址的情況下不要對地址里的內(nèi)容進行操作,因為沒有取地址的情況下指針所指的地址是隨機的,在草率操作的情況下可能會破壞之前的數(shù)據(jù)導(dǎo)致出錯。指針最常見的就是對數(shù)組進行操作了,當(dāng)指針指向的是一維數(shù)組的時候指針變量每次自加1之后就指向都是原來數(shù)的下一個(需要注意的是指針如果指向的是數(shù)組的最后一位的時候再加1的話他不會又跑到第一位,而是未知的數(shù)據(jù),這時候需要做的是重新取地址),對數(shù)組操作的方法除了不斷自加1的方法還有*(p+5),*p表示指向的數(shù)組的那位,*(p+5)表示在*P的基礎(chǔ)上移動5個數(shù)。二維也類似,可以通過自加操作,和*(*(p+x)+y)的方式操作,指針除了在數(shù)組上用還可以當(dāng)函數(shù)的參數(shù)啊,指向函數(shù)啊,詳細還是看譚浩強的c經(jīng)典教程 哈哈
……O……

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:67588 發(fā)表于 2014-11-23 11:47 | 只看該作者
很好,學(xué)習(xí)了
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表