0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

初學(xué)單片機(jī)經(jīng)常會(huì)有那些不容易掌握的知識(shí)點(diǎn)

Wildesbeast ? 來(lái)源:未知 ? 2019-10-04 13:20 ? 次閱讀

隨著電子技術(shù)的迅速發(fā)展,計(jì)算機(jī)已深入地滲透到我們的生活中,許多電子愛(ài)好者開始學(xué)習(xí)單片機(jī)知識(shí),但單片機(jī)的內(nèi)容比較抽象,相對(duì)電子愛(ài)好者已熟悉的模擬電路、數(shù)字電路,單片機(jī)中有一些新的概念,這些概念非常基本以至于一般作者不屑去談,教材自然也不會(huì)很深入地講解這些概念,但這些內(nèi)容又是學(xué)習(xí)中必須要理解的,下面就結(jié)合本人的學(xué)習(xí)、教學(xué)經(jīng)驗(yàn),對(duì)這些最基本概念作一說(shuō)明,希望對(duì)自學(xué)者有所幫助。

一、總線:我們知道,一個(gè)電路總是由元器件通過(guò)電線連接而成的,在模擬電路中,連線并不成為一個(gè)問(wèn)題,因?yàn)楦髌骷g一般是串行關(guān)系,各器件之間的連線并不很多,但計(jì)算機(jī)電路卻不一樣,它是以微處理器為核心,各器件都要與微處理器相連,各器件之間的工作必須相互協(xié)調(diào),所以就需要的連線就很多了,如果仍如同模擬電路一樣,在各微處理器和各器件間單獨(dú)連線,則線的數(shù)量將多得驚人,所以在微處理機(jī)中引入了總線的概念,各個(gè)器件共同享用連線,所有器件的8根數(shù)據(jù)線全部接到8根公用的線上,即相當(dāng)于各個(gè)器件并聯(lián)起來(lái),但僅這樣還不行,如果有兩個(gè)器件同時(shí)送出數(shù)據(jù),一個(gè)為0,一個(gè)為1,那么,接收方接收到的究竟是什么呢?這種情況是不允許的,所以要通過(guò)控制線進(jìn)行控制,使器件分時(shí)工作,任何時(shí)候只能有一個(gè)器件發(fā)送數(shù)據(jù)(可以有多個(gè)器件同時(shí)接收)。器件的數(shù)據(jù)線也就被稱為數(shù)據(jù)總線,器件所有的控制線被稱為控制總線。在單片機(jī)內(nèi)部或者外部存儲(chǔ)器及其它器件中有存儲(chǔ)單元,這些存儲(chǔ)單元要被分配地址,才能使用,分配地址當(dāng)然也是以電信號(hào)的形式給出的,由于存儲(chǔ)單元比較多,所以,用于地址分配的線也較多,這些線被稱為地址總線。

二、數(shù)據(jù)、地址、指令:之所以將這三者放在一起,是因?yàn)檫@三者的本質(zhì)都是一樣的──數(shù)字,或者說(shuō)都是一串‘0’和‘1’組成的序列。換言之,地址、指令也都是數(shù)據(jù)。指令:由單片機(jī)芯片的設(shè)計(jì)者規(guī)定的一種數(shù)字,它與我們常用的指令助記符有著嚴(yán)格的一一對(duì)應(yīng)關(guān)系,不可以由單片機(jī)的開發(fā)者更改。地址:是尋找單片機(jī)內(nèi)部、外部的存儲(chǔ)單元、輸入輸出口的依據(jù),內(nèi)部單元的地址值已由芯片設(shè)計(jì)者規(guī)定好,不可更改,外部的單元可以由單片機(jī)開發(fā)者自行決定,但有一些地址單元是一定要有的(詳見程序的執(zhí)行過(guò)程)。數(shù)據(jù):這是由微處理機(jī)處理的對(duì)象,在各種不同的應(yīng)用電路中各不相同,一般而言,被處理的數(shù)據(jù)可能有這么幾種情況:

1·地址(如MOV DPTR,#1000H),即地址1000H送入DPTR。

2·方式字或控制字(如MOV TMOD,#3),3即是控制字。

3·常數(shù)(如MOV TH0,#10H)10H即定時(shí)常數(shù)。

4·實(shí)際輸出值(如P1口接彩燈,要燈全亮,則執(zhí)行指令:MOV P1,#0FFH,要燈全暗,則執(zhí)行指令:MOV P1,#00H)這里0FFH和00H都是實(shí)際輸出值。又如用于LED的字形碼,也是實(shí)際輸出的值。

理解了地址、指令的本質(zhì),就不難理解程序運(yùn)行過(guò)程中為什么會(huì)跑飛,會(huì)把數(shù)據(jù)當(dāng)成指令來(lái)執(zhí)行了。

三、P0口、P2口和P3的第二功能用法 初學(xué)時(shí)往往對(duì)P0口、P2口和P3口的第二功能用法迷惑不解,認(rèn)為第二功能和原功能之間要有一個(gè)切換的過(guò)程,或者說(shuō)要有一條指令,事實(shí)上,各端口的第二功能完全是自動(dòng)的,不需要用指令來(lái)轉(zhuǎn)換。如P3.6、P3.7分別是WR、RD信號(hào),當(dāng)微片理機(jī)外接RAM或有外部I/O口時(shí),它們被用作第二功能,不能作為通用I/O口使用,只要一微處理機(jī)一執(zhí)行到MOVX指令,就會(huì)有相應(yīng)的信號(hào)從P3.6或P3.7送出,不需要事先用指令說(shuō)明。事實(shí)上‘不能作為通用I/O口使用’也并不是‘不能’而是(使用者)‘不會(huì)’將其作為通用I/O口使用。你完全可以在指令中按排一條SETB P3.7的指令,并且當(dāng)單片機(jī)執(zhí)行到這條指令時(shí),也會(huì)使P3.7變?yōu)楦唠娖?,但使用者不?huì)這么去做,因?yàn)檫@通常這會(huì)導(dǎo)致系統(tǒng)的崩潰(即死機(jī))。

四、程序的執(zhí)行過(guò)程 單片機(jī)在通電復(fù)位后8051內(nèi)的程序計(jì)數(shù)器(PC)中的值為‘0000’,所以程序總是從‘0000’單元開始執(zhí)行,也就是說(shuō):在系統(tǒng)的ROM中一定要存在‘0000’這個(gè)單元,并且在‘0000’單元中存放的一定是一條指令。

五、堆棧 堆棧是一個(gè)區(qū)域,是用來(lái)存放數(shù)據(jù)的,這個(gè)區(qū)域本身沒(méi)有任何特殊之處,就是內(nèi)部RAM的一部份,特殊的是它存放和取用數(shù)據(jù)的方式,即所謂的‘先進(jìn)后出,后進(jìn)先出’,并且堆棧有特殊的數(shù)據(jù)傳輸指令,即‘PUSH’和‘POP’,有一個(gè)特殊的專為其服務(wù)的單元,即堆棧指針SP,每當(dāng)執(zhí)一次PUSH指令時(shí),SP就(在原來(lái)值的基礎(chǔ)上)自動(dòng)加1,每當(dāng)執(zhí)行一次POP指令,SP就(在原來(lái)值的基礎(chǔ)上)自動(dòng)減1。由于SP中的值可以用指令加以改變,所以只要在程序開始階段更改了SP的值,就可以把堆棧設(shè)置在規(guī)定的內(nèi)存單元中,如在程序開始時(shí),用一條MOV SP,#5FH指令,就時(shí)把堆棧設(shè)置在從內(nèi)存單元60H開始的單元中。一般程序的開頭總有這么一條設(shè)置堆棧指針的指令,因?yàn)殚_機(jī)時(shí),SP的初始值為07H,這樣就使堆棧從08H單元開始往后,而08H到1FH這個(gè)區(qū)域正是8031的第二、三、四工作寄存器區(qū),經(jīng)常要被使用,這會(huì)造成數(shù)據(jù)的渾亂。不同作者編寫程序時(shí),初始化堆棧指令也不完全相同,這是作者的習(xí)慣問(wèn)題。當(dāng)設(shè)置好堆棧區(qū)后,并不意味著該區(qū)域成為一種專用內(nèi)存,它還是可以象普通內(nèi)存區(qū)域一樣使用,只是一般情況下編程者不會(huì)把它當(dāng)成普通內(nèi)存用了。

六、單片機(jī)的開發(fā)過(guò)程 這里所說(shuō)的開發(fā)過(guò)程并不是一般書中所說(shuō)的從任務(wù)分析開始,我們假設(shè)已設(shè)計(jì)并制作好硬件,下面就是編寫軟件的工作。在編寫軟件之前,首先要確定一些常數(shù)、地址,事實(shí)上這些常數(shù)、地址在設(shè)計(jì)階段已被直接或間接地確定下來(lái)了。如當(dāng)某器件的連線設(shè)計(jì)好后,其地址也就被確定了,當(dāng)器件的功能被確定下來(lái)后,其控制字也就被確定了。然后用文本編緝器(如EDIT、CCED等)編寫軟件,編寫好后,用編譯器對(duì)源程序文件編譯,查錯(cuò),直到?jīng)]有語(yǔ)法錯(cuò)誤,除了極簡(jiǎn)單的程序外,一般應(yīng)用仿真機(jī)對(duì)軟件進(jìn)行調(diào)試,直到程序運(yùn)行正確為止。運(yùn)行正確后,就可以寫片(將程序固化在EPROM中)。在源程序被編譯后,生成了擴(kuò)展名為HEX的目標(biāo)文件,一般編程器能夠識(shí)別這種格式的文件,只要將此文件調(diào)入即可寫片。在此,為使大家對(duì)整個(gè)過(guò)程有個(gè)認(rèn)識(shí),舉一例說(shuō)明:

ORG 0000H

LJMP START

ORG 040H

START:

MOV SP,#5FH ;設(shè)堆棧

LOOP:

NOP

LJMP LOOP ;循環(huán)

END ;結(jié)束

表1

:03000000020040BB

:0700400075815F000200431F

表2

02 00 40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 75 81 5F 00 02 00 43

表3

表1為源程序,表2是匯編后得到的HEX文件,表3是由HEX文件轉(zhuǎn)換成的目標(biāo)文件,也就是最終寫入EPROM的文件,它由編程器轉(zhuǎn)換得到,也可以由HEXBIN一類的程序轉(zhuǎn)換得到。學(xué)過(guò)手工匯編者應(yīng)當(dāng)不難找出表3與表1的一一對(duì)應(yīng)關(guān)系,值得注意的是從02 00 40后開始的一長(zhǎng)串‘FF’,直到75 81,這是由于偽指令:ORG 040H造成的結(jié)果。

七、仿真、仿真機(jī) 仿真是單片機(jī)開發(fā)過(guò)程中非常重要的一個(gè)環(huán)節(jié),除了一些極簡(jiǎn)單的任務(wù),一般產(chǎn)品開發(fā)過(guò)程中都要進(jìn)行仿真,仿真的主要目的是進(jìn)行軟件調(diào)試,當(dāng)然借助仿真機(jī),也能進(jìn)行一些硬件排錯(cuò)。一塊單片機(jī)應(yīng)用電路板包括單片機(jī)部份及為達(dá)到使用目的而設(shè)計(jì)的應(yīng)用電路,仿真就是利用仿真機(jī)來(lái)代替應(yīng)用電路板(稱目標(biāo)機(jī))的單片機(jī)部份,對(duì)應(yīng)用電路部份進(jìn)行測(cè)試、調(diào)試。仿真有CPU仿真和ROM仿真兩種,所謂CPU仿真是指用仿真機(jī)代替目標(biāo)機(jī)的CPU,由仿真機(jī)向目標(biāo)機(jī)的應(yīng)用電路部份提供各種信號(hào)、數(shù)據(jù),進(jìn)行調(diào)試的方法。這種仿真可以通過(guò)單步運(yùn)行、連續(xù)運(yùn)行等多種方法來(lái)運(yùn)行程序,并能觀察到單片機(jī)內(nèi)部的變化,便于改正程序中的錯(cuò)誤。所謂ROM仿真,就是用仿真機(jī)代替目標(biāo)機(jī)的ROM,目標(biāo)機(jī)的CPU工作時(shí),從仿真機(jī)中讀取程序,并執(zhí)行。這種仿真其實(shí)就是將仿真機(jī)當(dāng)成一片EPROM,只是省去了擦片、寫片的麻煩,并沒(méi)有多少調(diào)試手段可言。通常這是二種不同類型的仿真機(jī),也就是說(shuō),一臺(tái)仿真機(jī)不能既做CPU仿真,又做ROM仿真??赡艿那闆r下,當(dāng)然以CPU仿真好。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6026

    文章

    44452

    瀏覽量

    630822
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2848

    瀏覽量

    87839
  • 數(shù)字電路
    +關(guān)注

    關(guān)注

    193

    文章

    1590

    瀏覽量

    80288
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)C語(yǔ)言知識(shí)點(diǎn)全攻略(一)

      電子發(fā)燒友網(wǎng)訊:繼《單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略》得到廣大讀者好評(píng),電子發(fā)燒友網(wǎng)再接再厲再次為讀者誠(chéng)摯奉上非常詳盡的《單片機(jī)C語(yǔ)言知識(shí)點(diǎn)全攻略》系列
    發(fā)表于 06-28 13:39 ?5.1w次閱讀

    單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略(一)

      導(dǎo)語(yǔ):單片機(jī)對(duì)于初學(xué)者來(lái)說(shuō)確實(shí)很難理解,不少學(xué)過(guò)單片機(jī)的同學(xué)或電子愛(ài)好者,甚至在畢業(yè)時(shí)仍舊是一無(wú)所獲?;诖?,電子發(fā)燒友網(wǎng)將整合《單片機(jī)關(guān)鍵知識(shí)
    發(fā)表于 06-08 10:45 ?6w次閱讀

    單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略(二)

    導(dǎo)語(yǔ):單片機(jī)對(duì)于初學(xué)者來(lái)說(shuō)確實(shí)很難理解,不少學(xué)過(guò)單片機(jī)的同學(xué)或電子愛(ài)好者,甚至在畢業(yè)時(shí)仍舊是一無(wú)所獲?;诖?,電子發(fā)燒友網(wǎng)將整合《單片機(jī)關(guān)鍵知識(shí)點(diǎn)
    發(fā)表于 06-12 08:53 ?1.9w次閱讀

    單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略(三)

    導(dǎo)語(yǔ):本期主要知識(shí)點(diǎn)單片機(jī)定時(shí)計(jì)數(shù)器、中斷和串行口的學(xué)習(xí)。單片機(jī)對(duì)于初學(xué)者來(lái)說(shuō)確實(shí)很難理解,不少學(xué)過(guò)單片機(jī)的同學(xué)或電子愛(ài)好者,甚至在畢業(yè)時(shí)
    發(fā)表于 06-15 14:30 ?1.4w次閱讀

    單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略(完結(jié)篇)

    導(dǎo)語(yǔ):本期是本次單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)的最終回,我們會(huì)列出前三回一起方便讀者回顧學(xué)習(xí)。本次主要知識(shí)點(diǎn)單片機(jī)串口通信、接口和實(shí)際案例實(shí)踐——單片機(jī)
    發(fā)表于 06-21 16:19 ?2.9w次閱讀
    <b class='flag-5'>單片機(jī)</b>學(xué)習(xí)<b class='flag-5'>知識(shí)點(diǎn)</b>全攻略(完結(jié)篇)

    C51單片機(jī)及C語(yǔ)言知識(shí)點(diǎn)必備秘籍

      電子發(fā)燒友網(wǎng)訊:應(yīng)廣大電子發(fā)燒友網(wǎng)讀者要求,本電子書《C51單片機(jī)及C語(yǔ)言知識(shí)點(diǎn)必備秘籍》為《單片機(jī)關(guān)鍵知識(shí)點(diǎn)全攻略》單片機(jī)系列教程及《
    發(fā)表于 07-30 13:59 ?9795次閱讀

    單片機(jī)知識(shí)點(diǎn)

    單片機(jī)最常見的知識(shí)點(diǎn),總結(jié),歸納
    發(fā)表于 06-19 22:38

    嵌入式C/單片機(jī)C/標(biāo)準(zhǔn)C知識(shí)點(diǎn)

    、算法  說(shuō)明:  學(xué)習(xí)單片機(jī)C一般只需要前9個(gè)知識(shí)點(diǎn)即可進(jìn)行產(chǎn)品開發(fā),但要學(xué)習(xí)嵌入式C還需要要掌握:指針、結(jié)構(gòu)體、鏈表、宏定義等知識(shí)點(diǎn)?! 《?、
    發(fā)表于 10-24 14:42

    學(xué)習(xí)51單片機(jī)需要學(xué)習(xí)哪些知識(shí)點(diǎn)?

    作為一名入門級(jí)的工程師,萬(wàn)事開頭難,只要知道學(xué)習(xí)51單片機(jī)需要學(xué)習(xí)哪些知識(shí)點(diǎn)就萬(wàn)事大吉了。然后再系統(tǒng)的將知識(shí)點(diǎn)全部掌握即可。那么我們一起看看吧,到底要學(xué)習(xí)哪些呢?實(shí)際上,其實(shí)不需要多少
    發(fā)表于 10-22 13:49

    單片機(jī)原理及應(yīng)用知識(shí)點(diǎn)總結(jié)

    單片機(jī)原理及應(yīng)用知識(shí)點(diǎn)總結(jié),第一章 單片機(jī)概述(1KB=1024B、1B=8b)單片機(jī)(嵌入式控制器、微控制器):在一片硅導(dǎo)體上,集成了“中央處理單元(CPU)、存儲(chǔ)器(RAM、ROM
    發(fā)表于 07-14 07:08

    單片機(jī)原理及應(yīng)用考試復(fù)習(xí)知識(shí)點(diǎn)

    單片機(jī)原理及應(yīng)用考試復(fù)習(xí)知識(shí)點(diǎn)挺全的。
    發(fā)表于 01-11 14:54 ?0次下載

    初學(xué)51單片機(jī)有哪些不容易掌握的概念詳細(xì)資料說(shuō)明

    隨著電子技術(shù)的迅速發(fā)展,計(jì)算機(jī)已深入地滲透到我們的生活中,許多電子愛(ài)好者開始學(xué)習(xí)單片機(jī)知識(shí),但單片機(jī)的內(nèi)容比較抽象,相對(duì)電子愛(ài)好者已熟悉的模擬電路、數(shù)字電路,單片機(jī)中有一些新的概念,這
    發(fā)表于 06-13 17:40 ?5次下載
    <b class='flag-5'>初學(xué)</b>51<b class='flag-5'>單片機(jī)</b>有哪些<b class='flag-5'>不容易</b><b class='flag-5'>掌握</b>的概念詳細(xì)資料說(shuō)明

    單片機(jī)_IO口知識(shí)點(diǎn)介紹

    單片機(jī)_IO口知識(shí)點(diǎn)介紹IO/GPIOGeneral Purpose Input Output (通用輸入/輸出)簡(jiǎn)稱為GPIO,GPIO口作為單片機(jī)與外界通信控制最主要的手段,開始GPIO的學(xué)習(xí)
    發(fā)表于 11-23 17:36 ?74次下載
    <b class='flag-5'>單片機(jī)</b>_IO口<b class='flag-5'>知識(shí)點(diǎn)</b>介紹

    單片機(jī)開發(fā)零基礎(chǔ)可不行,還需掌握這些知識(shí)點(diǎn)

    單片機(jī)開發(fā)很多人都說(shuō)零基礎(chǔ)也可以做,但會(huì)非常難。想要順利入門,那么大家還需要有一定的基礎(chǔ),掌握一些必備的知識(shí)點(diǎn)、那今天通程創(chuàng)品就來(lái)給大家分享單片機(jī)開發(fā)中需要用到的
    的頭像 發(fā)表于 02-17 15:43 ?1938次閱讀

    51單片機(jī)知識(shí)點(diǎn)

    電子發(fā)燒友網(wǎng)站提供《51單片機(jī)知識(shí)點(diǎn).pdf》資料免費(fèi)下載
    發(fā)表于 11-01 17:32 ?2次下載