freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

8051單片機(jī)教程(doc77)-管理培訓(xùn)-預(yù)覽頁

2025-09-19 12:31 上一頁面

下一頁面
 

【正文】 。(請想一下,我們還看到過什么樣的類似的例子呢?(海軍之)燈語、旗語,電報(bào),甚至紅、綠燈) 位的含義: 通過上面的實(shí)驗(yàn)我們已經(jīng)知道:一盞燈亮或者說一根線的電平的高低,可以代表兩種狀態(tài):0 和 1。不要問我為什么是 8 根而不是其它數(shù),因?yàn)槲乙膊恢?。這是一個(gè)存儲(chǔ)器的示意圖:一個(gè)存儲(chǔ)器就象一個(gè)個(gè)的小抽屜,一個(gè)小抽屜里有八個(gè)小格子,每個(gè)小格子就是用來存 放“電荷”的,電荷通過與它相連的電線傳進(jìn)來或釋放掉,至于電荷在小格子里是怎樣存的,就不用我們操心了,你可以把電線想象成水管,小格子里的電荷就象是水,那就好理解了。 存儲(chǔ)器譯碼 那么,我們怎樣來控制各個(gè)單元 的控制線呢?這個(gè)還不簡單,把每個(gè)單元元的控制線都引到集成電路的外面不就行了嗎?事情可沒那么簡單,一片 27512存儲(chǔ)器中有 65536 個(gè)單元,把每根線都引出來,這個(gè)集成電路就得有 6萬多個(gè)腳?不行,怎么辦?要想法減少線的數(shù)量。這樣問題就出來了,這八根線既然不是存儲(chǔ)器和計(jì)算機(jī)之間專用的,如果總是將某個(gè)單元接在這八根線上,就不好了,比如這個(gè)存儲(chǔ)器單元中的數(shù)值是0FFH 另一個(gè)存儲(chǔ)器的單元是 00H,那么這根線到底是處于高電平,還是低電平?豈非要打架看誰歷害了?所以我們要讓它們分離。要將數(shù)據(jù)寫入片中,先選中該片,然后發(fā)出寫信號(hào),開關(guān)就合上了,并將傳過來的數(shù)據(jù)(電荷)寫入片中。 從上面的介紹中我們已經(jīng)看到,用來傳遞數(shù)據(jù)的八根線并不是專用的,而是很多器件大家共用的,所以我們稱之為數(shù)據(jù)總線,總線英文名為 BUS,總即公交車道,誰者可以走。只讀存 儲(chǔ)器的英文縮寫為 ROM( READ ONLY MEMORY) 所謂隨機(jī)存取存儲(chǔ)器,即隨時(shí)可以改寫,也可以讀出里面的數(shù)據(jù),它類似于我們的黑板,我可以隨時(shí)寫東西上去,也可以用黑板擦擦掉重寫。 順便解釋一下其它幾個(gè)常見的概念。它里面的內(nèi)容寫上去之后,如果覺得不滿意,可以用一種特殊的方法去掉后重寫,這就是用紫外線照射,紫外線就象“消字靈”,可以把字去掉,然后再重寫。不管是 PROM、 EPROM 還是 FLASH ROM,它們的寫都要有特殊的條件,一般我們用一種稱之為“編程器”的設(shè)備來做這項(xiàng)工作,一旦把它裝到它的工作位置,就不能隨便改寫了。第二,在執(zhí)行完 CLR P10 后,不會(huì)再 去執(zhí)行 SETB P10指令,所以以后再也沒有機(jī)會(huì)讓滅了。 第一條是讓燈滅,第二條應(yīng)當(dāng)是延時(shí),第三條是讓燈亮,第四條和第 二條一模一樣,也是延時(shí),第五條應(yīng)當(dāng)是轉(zhuǎn)去執(zhí)行第一條指令。 第二條和第四條指令的用途是延時(shí),它是怎樣實(shí)現(xiàn)的呢?指令的形式是 LCALL,這條指令稱為調(diào)用子程序指令,看一下指令后面跟的是什么, DELAY,找一下 DELAY,在第六條指令的前面,顯然,這也是一個(gè)標(biāo)號(hào)。 程序的最后一行是 END,這不是一條指令,它只是告訴我們程序到此結(jié)束,它被稱為 偽 指令 。這其中 1552 是我們想要的結(jié)果,而 690 并非我們所要的結(jié)果,但是為了得到最終結(jié)果,我們又不得不先算出 690,并記下來,這其實(shí)是一個(gè)中間結(jié)果,計(jì)算機(jī)中做運(yùn)算和這個(gè)類似,為了要得到最終結(jié)果,往往要做很多步的中間結(jié)果,這些中間結(jié)果要有個(gè)地方放才行,把它們放哪呢?放在前面提到過的 ROM 中可以嗎?顯然不行,因?yàn)橛?jì)算機(jī)要將結(jié)果寫進(jìn)去,而 ROM 是不可以寫的,所以在單片機(jī)中另有一個(gè)區(qū)域稱為 RAM區(qū)( RAM 是隨機(jī)存取存儲(chǔ)器的英文縮寫),它可以將數(shù)據(jù)寫進(jìn)去。從指令 MOV R7, 250 中來分析, R7 是一個(gè)接受者, 250 是被傳遞的數(shù),傳遞者在這條指令中被省略了(注意:并不是每一條傳遞指令都會(huì)省的,事實(shí)上大部份數(shù)據(jù)傳遞指令都會(huì)有傳遞者)。 DJNZ:這是另一條指令,我們來看一下這條指令后面跟著的兩個(gè)東西,一個(gè)是 R6,一個(gè)是D2, R6我們當(dāng)然已知是什么了,查一下 D2是什么。本條指令的最終執(zhí)行結(jié)果就是,在原地轉(zhuǎn)圈 250 次。 二、時(shí)序分析: 前面我們介紹了延時(shí)程序 ,但這還不完善,因?yàn)?,我們只知?DJNZ R6, D2 這句話會(huì)被執(zhí)行 62500次,但是執(zhí)行這么多次需要多長時(shí)間呢?是否滿足我們的要求呢?我們還不知道,所以下面要來解決這個(gè)問題。這個(gè)鈴是按一定的時(shí)間安排來響的,我們可以稱之為“時(shí)序 時(shí)間的順序 ”。 我們已知,計(jì)算機(jī)工作時(shí),是一條一條地從 ROM 中取指令,然后一步一步地執(zhí)行,我們規(guī)定:計(jì)算機(jī)訪問一次存儲(chǔ)器的時(shí)間,稱之為一個(gè)機(jī)器周期。設(shè)一個(gè)單片機(jī)工作于 12M 晶振,它的時(shí)鐘周期 是 1/12(微秒)。這也不難再解,不是嗎?我讓你掃地的執(zhí)行要完成總得比要你完成擦黑板的指令時(shí)間要長。 下面讓我們來計(jì)算剛才的延時(shí)。 練習(xí):設(shè)計(jì)一個(gè)延時(shí) 100 毫秒的延時(shí)程序。預(yù)備鈴一響,大家就自動(dòng)地從操場、其它地方進(jìn)入教室了,在這一段時(shí)間里,是沒有老師干預(yù)的,對單片機(jī)來說,是程序還沒有開始執(zhí)行,是在做準(zhǔn)備工作。實(shí)際上,我們在上一次實(shí)驗(yàn)的圖中已見到過了。因此, P10 P17 是全部可以點(diǎn)亮燈的。當(dāng)然用的指令也不一樣了,是用 MOV 指令。 從硬件電路的連線可以看出,有四個(gè)按鈕被接入到 P3 口的 P32, P33, P34, P35。 P3 口的 P32 位的按鈕被按下,使得 P32 位的電平為低,通過程序,又使 P12 中國最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者 所有 ) 第 11 頁 共 68 頁 口輸出低電平,所以 P3 口起來了一個(gè)輸入的作用。怎么解決這個(gè)問題呢?我們在存儲(chǔ)器一節(jié)中學(xué)過,存儲(chǔ)器中是可以存放電荷的,我們不妨也加一個(gè)小的存儲(chǔ)器的單元,并在它的前面加一個(gè)開關(guān),要讓這一位輸出時(shí),就把開關(guān)打開,信號(hào)就進(jìn)入存儲(chǔ)器的單元,然后馬上關(guān)閉開關(guān),這樣這一位的狀態(tài)就被保存下來,直到下一次命令讓它把開關(guān)再打開為止。 請注意輸入結(jié)構(gòu)圖,如果將這一根引線作為輸入口使用,我們并不能保證在任何時(shí)刻都能得到正確的結(jié)果(為什么 ?)參考圖 2 輸入示意圖。 以上是 P1 口的一位的結(jié)構(gòu), P1 口其它各位的結(jié)構(gòu)與之相同,而其它三個(gè)口: P0、 P P3則除入作為輸入輸出口之外還有其它用途,所以結(jié)構(gòu)要稍復(fù)雜一些,但其用于輸 入、輸出的結(jié)構(gòu)是相同的。從圖中我們可以看出,在 51 單片機(jī)內(nèi)部有 一個(gè) CPU 用來運(yùn)算、控制,有 四個(gè)并行 I/O 口 ,分別是P0、 P P P3,有 ROM,用來存放程序,有 RAM,用來存放中間結(jié)果,此外還有 定時(shí) /計(jì)數(shù)器 , 串行 I/O 口 , 中斷系統(tǒng) ,以及一個(gè) 內(nèi)部的時(shí)鐘電路 。 ACC:累加器,通常用 A表示。在做乘、除法時(shí)放乘數(shù)或除數(shù),不做乘除法時(shí),隨你怎么用。 8051 中的運(yùn)算器是一種 8 位的運(yùn)算器,我們知道, 8位運(yùn)算器只能表示到 0255,如果做加法的話,兩數(shù)相加可能會(huì)超過 255,這樣最高位就會(huì)丟失,造成運(yùn)算的錯(cuò)誤,怎么辦?最高位就進(jìn)到這里來。 ( 4) RS RS0:工作寄存器組選擇位。 ( 6) P:奇偶校驗(yàn)位:它用來表示 ALU 運(yùn)算結(jié)果中二進(jìn)制數(shù)位“ 1”的個(gè)數(shù)的奇偶性。 P0、 P P P3:這個(gè)我們已經(jīng)知道,是四個(gè)并行輸 入 /輸出口的寄存器。請大家想想,還有什么地方有這種現(xiàn)象?其實(shí)比比皆是,建筑工地上堆放的磚頭、材料,倉庫里放的貨物,都是“先進(jìn)后出,后進(jìn)先出”,這實(shí)際是一種存取物品的規(guī)則,我們稱之為“堆?!薄6@種變化就體現(xiàn)在 SP 中值的變化,看圖 2, SP 中的值等于 27H不就相當(dāng)于是一個(gè)指針指向 27H 單元嗎?當(dāng)然在真正的 51 機(jī)中,開始指針?biāo)傅奈恢貌⒎蔷褪菙?shù)據(jù)存放 的位置,而是數(shù)據(jù)存放的前一個(gè)位置,比如一開始指針是指向 27H 單元的,那么第一個(gè)數(shù)據(jù)的位置是 28H 單元,而不是 27H 單元,為什么會(huì)這樣,我們在學(xué)堆棧命令時(shí)再說明。但這種形式實(shí)在是為難我們?nèi)肆?,太難記了,于是有另一種格式,助記符格式,如 MOV P1, 0FFH,這樣就好記了。不過手工查表總是嫌麻煩,所以就有了計(jì)算機(jī)軟件,用計(jì)算機(jī)軟件來替代手工查表,這就是機(jī)器匯編。在數(shù)據(jù)傳遞類指令中,均將目的地寫在指令的后面,而將源寫在最后。 從這里我們可以得出結(jié)論,在數(shù)據(jù)傳遞中要找到被傳遞的數(shù),很多時(shí)候,這個(gè)數(shù)并不能直接給出,需要變化,這就引出了一個(gè)概念:如何尋找操作數(shù),我們把尋找操作數(shù)所在單元的地址稱之為尋址。提一個(gè)問題:我們知道,工作寄存器就是內(nèi)存單元的一部份,如果我們選擇工作寄存器組 0,則 R0 就是 RAM的 00H 單元,那么這樣一來, MOV A, 00H,和 MOV A, R0 不就沒什么區(qū)別了嗎?為什么要加以區(qū)分呢?的確,這兩條指令執(zhí)行的結(jié)果是完全相同的,都是將 00H單元中的內(nèi)容送到 A中去,但是執(zhí)行的過程不同,執(zhí)行第一條指令需要 2個(gè)周期,而第二條則只需要 1 個(gè)周期 ,第一條指令變成最終的目標(biāo)碼要兩個(gè)字節(jié)( E5H 00H),而第二條則只要一個(gè)字節(jié)( E8h)就可以了。 就我們目前掌握的辦法而言,要從 30H 單元取數(shù),就用 MOV A, 30H,那么下一個(gè)數(shù)呢?是31H單元的,怎么取呢?還是只能用 MOV A, 31H,那么 20個(gè)數(shù),不是得 20條指令才能寫完嗎?這里只有 20個(gè)數(shù),如果要送 200個(gè)或 2020個(gè)數(shù),那豈不要寫上 200條或 2020條命令 ?這未免太笨了吧。 MOV R7, 20 MOV R0, 30H LOOP: MOV A, R0 INC R0 DJNZ R7,LOOP 這個(gè)例子中大部份指令我們是能看懂的,第一句,是將立即數(shù) 20 送到 R7 中,執(zhí)行完后 R7中的值應(yīng)當(dāng)是 20。注意,在間址尋址中,只能用 R0或 R1存放等尋找的數(shù)據(jù)。 下面我們通過一些例子加以說明: MOV A, R1 ; 將工作寄存器 R1中的值送入 A, R1中的值保持不變。 MOV A,34H ; 將立即數(shù) 34H送入 A中 , 執(zhí)行完本條指令后 , A中的值是 34H。例: MOV DPTR, 1234H,則執(zhí)行完了之后 DPH中的值為 12H, DPL中的值為 34H。綜合練習(xí): 給出每條指令執(zhí)行后的結(jié)果 MOV 23H,30HMOV 12H,34H MOV R0,23H MOV R7,22H 中國最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者 所有 ) 第 18 頁 共 68 頁 MOV R1,12H MOV A,R0 MOV 34H,R1 (23h)=30h (12h)=34h (R0)=23H (R7)=22H (R1)=12H (A)=30H (34H)=34H MOV 45H,34H MOV DPTR,6712H MOV 12H,DPH MOV R0,DPL MOV A,R0 (45H)=34H (DPTR)=6712H (12H)=67H (R0)=12H (A)=67H 說明:用括號(hào)括起來代表內(nèi)容,如( 23H)則代表內(nèi)部 RAM23H單元中的值,( A)則代表累加器 A單元中的值。用 F8 即可單步執(zhí)行,在執(zhí)行過程中注意觀察屏幕左邊的工作寄存器及 A累加器中的值的變化。為了再從頭開始,可以用 CTRL+F2 功能鍵復(fù)位 PC值。窗口用 WINDOWS菜單。在 此我們可以看出內(nèi)外部 RAM 的區(qū)別了,內(nèi)部 RAM 間可以直接進(jìn)行數(shù)據(jù)的傳遞,而外部則不行,比如,要將外部 RAM 中某一單元(設(shè)為 0100H單元的數(shù)據(jù))送入另一個(gè)單元(設(shè)為 0200H單元),也必須先將 0100H 單元中的內(nèi)容讀入 A,然后再送到 0200H 單元中去。 使用時(shí)應(yīng)當(dāng)首先將要讀或?qū)懙牡刂匪腿?DPTR 或 Ri 中,然后再用讀寫命令。本指令是要在 ROM的一個(gè)地址單元中找出數(shù)據(jù),顯然必須知道這個(gè)單元的地址,這個(gè)單元的地址是這樣確定的:在執(zhí)行本指令立腳點(diǎn)DPTR 中有一個(gè)數(shù), A中有一個(gè)數(shù),執(zhí)行指令時(shí),將 A和 DPTR中的數(shù)加起為,就成為要查找的單元的地址。 標(biāo)號(hào)的真實(shí)含義:從這個(gè)地方也可以看到另一個(gè)問題,我們使用了標(biāo)號(hào)來替代具體的單元地址。事實(shí)上, CPU 正是通過這個(gè)地址才找到這段程序的。推入指令的執(zhí)行過程是,首先將 SP 中的值加 1,然后把SP 中的值當(dāng)作地址,將 direct 中的值送進(jìn)以 SP 中的值為地址的 RAM 單元中。 這有什么意義呢? ACC 中的值本來就是 100, B 中的值本來就是 20,是的,在本例中,的確沒有意義,但在實(shí)際工作中,則在 PUSH B 后往 往要執(zhí)行其他指令,而且這些指令會(huì)把 A中的值, B 中的值改掉,所以在程序的結(jié)束,如果我們要把 A 和 B 中的值恢復(fù)原值,那么這些指令就有意義了。也就兩者進(jìn)行了數(shù)據(jù)交換。例: ADD A, 10H ADD A,direct 。 例: MOV A, 30H ADD A, 10H 則執(zhí)行完本條指令后, A中的值為 40H。 這兩個(gè)數(shù)相加,我們根本不在意這的過程,但事實(shí)上我們是這樣做的:先做 6+8(低位),然后再做 6+7,這是高位。那么計(jì)算機(jī)中做 16 位加法時(shí)同樣如此,先做低 8 位的,如果兩數(shù)相加產(chǎn)生了進(jìn)位,也要“點(diǎn)一下”做個(gè)標(biāo)記,這個(gè)標(biāo)記就是進(jìn)位位 C,在 PSW 中。 帶借位的減法指令 SUBB A, Rn SUBB A,direct SUBB A,Ri SUBB A,data 設(shè)(每個(gè) H,( R2) =55H, CY=1,執(zhí)行指令 SUBB A, R2 之后, A中的值為 7
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1