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

正文內(nèi)容

8051單片機(jī)教程(doc77)-管理培訓(xùn)(文件)

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

下一頁面
 

【正文】 被送到了 P1口,只有從 P3口進(jìn)來的數(shù)送到 A,又被送到了 P1口,所以,肯定是 P3 口進(jìn)來的數(shù)使得 P12位輸出電平的。 并行口結(jié)構(gòu)分析: 輸出結(jié)構(gòu) 先看 P1口的一位的結(jié)構(gòu)示意圖(只畫出了輸出部份):從圖中可以看出,開關(guān)的打開和合上代表了引腳輸出的高和低,如果開關(guān)合上了,則引腳輸出就是低,如果開關(guān)打開了,則輸出高電平,這個(gè)開關(guān)是由一根線來控制的,這根數(shù)據(jù)總線是出自于 CPU,讓我們回想一下,數(shù)據(jù)總線是一根大家公用的線,很多的器件和它連在一起,在不同的時(shí)候,不同的器件當(dāng)然需要不同的信號(hào),如某一時(shí)刻我們讓這個(gè)引腳輸出高電平,并要求保持若干時(shí)間,在這段時(shí)間里,計(jì)算機(jī)當(dāng)然在忙個(gè)不停, 在與其它器件進(jìn)行聯(lián)絡(luò),這根控制線上的電平未必能保持原來的值不變,輸出就會(huì)發(fā)生變化了。這兩根線是用于從外部接收信號(hào)的,為什么要兩根呢?原來,在 51 單片機(jī)中輸入有兩種方式,分別稱為‘讀引腳’和‘讀鎖存器’,第一種方式是將引腳作為輸入,那是真正地從外部引腳讀進(jìn)輸入的值,第二種方式是該引腳處于輸出狀態(tài)時(shí),有時(shí)需要改變這一位的狀態(tài),則并不需要真正地讀引腳狀態(tài),而只是讀入鎖存器的狀態(tài),然后作某種變換后再輸出。正因?yàn)橐茸鲞@么一個(gè)準(zhǔn)備工作,所以我們稱之為“準(zhǔn)雙向 I/O 口”。 單片機(jī)教程第七課 : 單片機(jī)內(nèi)部結(jié)構(gòu)分析(五) 通過前面的學(xué)習(xí),我們已知單片機(jī)的內(nèi)部有 ROM、有 RAM、有并行 I/O口,那么,除了這些東西之外,單片機(jī)內(nèi)部究竟還有些什么,這些個(gè)零碎的東西怎么連在一起的,讓我們來對(duì)單片機(jī)內(nèi)部作一個(gè)完整的分析吧! 看圖( 1)(本圖太大,請(qǐng)大家找本書看吧,一般講單片機(jī)的書,隨便哪本都有)。事實(shí)上,我們已接觸過 P1這個(gè)特殊功能寄存器了,還有哪些呢?看表 1 符號(hào) 地址 功能 介紹 B F0H B 寄存器 ACC E0H 累加器 PSW D0H 程序狀態(tài)字 IP B8H 中斷優(yōu)先級(jí)控制寄存器 P3 B0H P3口鎖存器 IE A8H 中斷允許控制寄存器 P2 A0H P2口鎖存器 SBUF 99H 串行口鎖存器 SCON 98H 串行口控制寄存器 P1 90H P1口鎖存器 TH1 8DH 定時(shí)器 /計(jì)數(shù)器 1(高 8 位) TH0 8CH 定時(shí)器 /計(jì)數(shù)器 1(低 8 位) TL1 8BH 定 時(shí)器 /計(jì)數(shù)器 0(高 8 位) TL0 8AH 定時(shí)器 /計(jì)數(shù)器 0(低 8 位) TMOD 89A 定時(shí)器 /計(jì)數(shù)器方式控制寄存器 TCON 88H 定時(shí)器 /計(jì)數(shù)器控制寄存器 DPH 83H 數(shù)據(jù)地址指針(高 8 位) DPL 82H 數(shù)據(jù)地址指針(低 8 位) SP 81H 堆棧指針 P0 80H P0口鎖存器 中國(guó)最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者 所有 ) 第 13 頁 共 68 頁 PCON 87H 電源控制寄存器 表 1 下面,我們介紹一下幾個(gè)常用的 SFR,看圖 2。 B:一個(gè)寄存器。它的各位功能請(qǐng)看表 2 D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 OV P 表 2 下面我們逐一介紹各位的用途 ( 1) CY:進(jìn)位標(biāo)志。 例: 57H+3AH( 01010111+00111010) ( 3) F0:用戶標(biāo)志位,由我們(編程人員)決定什么時(shí)候用,什么時(shí)候不用 。什么是溢出我們稍后再談吧。 DPTR( DPH、 DPL):數(shù)據(jù)指針,可以用它來訪問外部數(shù)據(jù)存儲(chǔ)器中的任一單元,如果不用,也可以作為通用寄存器來用,由我們自已決定如何使用。 堆棧介紹:日常生活中,我們都注意到過這樣的現(xiàn)象,家里洗的碗,一只一只摞起來,最晚放上去的放在最上面,而最早放上去的則放在最下面,在取的時(shí)候正好相反,先從最上面取,這種現(xiàn)象我們用一句話來概括:“先進(jìn)后出,后進(jìn)先出”。所以利用堆棧這種方法來放數(shù)據(jù)可 中國(guó)最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者 所有 ) 第 14 頁 共 68 頁 以簡(jiǎn)化操作 那么 51 中堆棧什么地方呢?單片機(jī)中能存放數(shù)據(jù)的區(qū)域有限,我們不 能夠?qū)iT分配一塊地方做堆棧,所以就在內(nèi)存( RAM)中開辟一塊地方,用于堆棧,但是用內(nèi)存的哪一塊呢?還是不好定,因?yàn)?51 是一種通用的單片機(jī),各人的實(shí)際需求各不相同,有人需要多一些堆棧,而有人則不需要那么多,所以怎么分配都不合適,怎樣來解決這個(gè)問題 ?分不好干脆就不分了,把分的權(quán)利給用戶(編程者),根據(jù)自已的需要去定吧,所以 51 單片機(jī)中堆棧的位置是可以變化的。 一、概述 指令的格式 我們已知,要讓計(jì)算機(jī)做事,就得給計(jì)算機(jī)以指令,并且我們已知,計(jì)算機(jī)很 “笨 ”,只能懂得數(shù)字,如前面我們寫進(jìn)機(jī)器的 75H, 90H, 00H等等,所以指令的第一種格式就是機(jī)器碼格式,也說是數(shù)字的形式。手工匯編實(shí)際上就是查表,因?yàn)檫@兩種格式純粹是格式不同,所以是一一對(duì)應(yīng)的,查一張表格就行了。 分析一下 MOV P1, 0FFH這條指令,我們不難得出結(jié)論,第一個(gè)詞 MOV是命令動(dòng)詞,也就是決定做什么事情的, MOV是 MOVE少寫了一個(gè) E,所以就是 “傳遞 ”,這就是指令,規(guī)定做什么事情,后面還有一些參數(shù),分析一下,數(shù)據(jù)傳遞必須要有一個(gè) “源 ”也就是你要送什么數(shù),必須要有一個(gè) “目的 ”,也就是你這個(gè)數(shù)要送到什么地方去,顯然在上面那條指令中, 要送的數(shù)(源)就是 0FFH,而要送達(dá)的地方(目的地)就是 P1這個(gè)寄存器。這樣就可以滿足要求。例: MOV A, R0 就是將 R0 工作寄存器中的數(shù)據(jù)送到累加器 A中去。 再來提一個(gè)問題,現(xiàn)在我們已知,尋找操作數(shù)可以通過直接給的方式(立即尋址)和直接給出數(shù)所在單元 地址的方式(直接尋址),這就夠了嗎? 看這個(gè)問題,要求從 30H單元開始,取 20個(gè)數(shù),分別送入 A累加器。通過例子來說明吧。 這也是一種尋找數(shù)據(jù)的方法,由于數(shù)據(jù)是間接地被找到的,所以就稱之為間址尋址。第四條指令是將立即數(shù) data送到 A中。如執(zhí)行命令前 R1中的值為 20H,則是將 20H單元中的值送入 A中。其中高 8位送入 DPH,低 8位送入 DPL。則就相當(dāng)于執(zhí)行了 MOV DPTR, 3512H。用 ALT+A 匯編通過。 圖 5當(dāng)運(yùn)行完程序后,即進(jìn)入它的反匯編區(qū),不是我們想要的東西。 CTRL+F2 是程序復(fù)位,用 RUN菜單。所有需要送入外部 RAM 的數(shù)據(jù)必需要通過 A 送去,而所有要讀入的外部 RAM 中的數(shù)據(jù)也必需通過 A 讀入。因?yàn)橛袝r(shí)擴(kuò)展的外部 RAM 的數(shù)量比較少,少于或等于 256 個(gè),就只需要提供 8 位地址 就夠了。本指令也被稱為查表指令,常用此指令來查一個(gè)已做好在 ROM中的表格 說明: 此條指令引出一個(gè)新的尋址方法:變址尋址。其它數(shù)據(jù)也可以類推。而在以前我們學(xué)過的如 LCALL DELAY 指令中, DELAY 則代表了以 DELAY 為標(biāo)號(hào)的那段程序在 ROM中存放的起始地址。 堆棧操作 PUSH direct POP direct 第一條指令稱之為推入,就是將 direct 中的內(nèi)容送入堆棧中,第二條指令稱之為彈出,就是將堆棧中的內(nèi)容送回到 direct 中。 接上例: POP B POP ACC 則執(zhí)行過程是:將 SP 中的值(現(xiàn)在是 61H)作為地址,取 61H單元中的數(shù)值(現(xiàn)在是 20),送到 B 中,所以執(zhí)行完本條指令后 B中的值是 20,然后將 SP 減 1,因此本條指令執(zhí)行完后,SP 的值變?yōu)?60H,然后執(zhí)行 POP ACC,將 SP 中的值( 60H)作為地址,從該地址中取數(shù)(現(xiàn)在是 100),并送到 ACC 中,所以執(zhí)行完本條指令后, ACC 中的值是 100。 例:寫出以下程序的運(yùn)行結(jié)果 MOV 30H, 12 MOV 31H, 23 PUSH 30H PUSH 31H POP 30H POP 31H 結(jié)果是 30H 中的值變?yōu)?23,而 31H 中的值則變?yōu)?12。 單片機(jī) 教程第十一課 : 算術(shù)運(yùn)算類指令 不帶進(jìn)位位的加法指令 ADD A,DATA 。例: ADD A, R0 用途:將 A中的值與其后面的值相加,最終結(jié)果否是回到 A中。如何合并呢?其實(shí)很簡(jiǎn)單,讓我們看一個(gè) 10 進(jìn)制數(shù)的例子: 66+78。 在做低位時(shí)產(chǎn)生了進(jìn)位,我們做的時(shí)候是在適當(dāng)?shù)奈恢命c(diǎn)一下,然后在做高位加法是將這一點(diǎn)加進(jìn)去。然后再做 10H+10H+CY,結(jié)果是 21H,所以最終的結(jié)果是 2107H。在乘積大于 FFFFFH( 65535。 說明:沒有不帶借位 的減法指令,如果需要做不帶位的減法指令(在做第一次相減時(shí)),只要將 CY 清零即可。在進(jìn)行高位加法是將這個(gè) C 加進(jìn)去。做了兩次加法,只是我們做的時(shí)候并沒有刻意分成兩次加法來做 中國(guó)最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者 所有 ) 第 22 頁 共 68 頁 罷了,或者說我們并沒有意識(shí)到我們做了兩次加法。 下面的題目自行練習(xí) MOV 34H, 10H MOV R0, 13H MOV A, 34H ADD A, R0 MOV R1, 34H ADD A, R1 帶進(jìn)位位的加法指令 ADDC A, Rn ADDC A,direct ADDC A,Ri ADDC A,data 用途:將 A中的值和其后面的值相加,并且加上進(jìn)位位 C 中的值。例: ADD A, 10H ADD A,Rn 。從這個(gè)例子可以看出:使用堆棧時(shí),入棧的書寫順序和出棧的書寫順序必須相反,才能保證數(shù)據(jù)被送回原位,否則就要出錯(cuò)了。 還有一個(gè)問題,如果我不用堆棧,比如說在 PUSH ACC指令處用 MOV 60H, A,在 PUSH B處用指令 MOV 61H, B,然后用 MOV A, 60H, MOV B, 61H來替代兩條 POP 指令,不是也一樣嗎?是的,從結(jié)果上看是一樣的,但是從過程看是不一樣的, PUSH 和 POP 指令都 中國(guó)最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者 所有 ) 第 21 頁 共 68 頁 是單字節(jié),單周期指令,而 MOV指令則是雙字節(jié),雙周期指令。例: MOV SP, 5FH MOV A, 100 MOV B, 20 PUSH ACC PUSH B 則執(zhí)行第一條 PUSH ACC 指令是這樣的:將 SP 中的值加 1,即變?yōu)?60H,然后將 A中的值送到 60H單元中,因此執(zhí)行完本條指令后, 內(nèi)存 60H單元的值就是 100,同樣,執(zhí)行 PUSH B 時(shí),是將 SP+1,即變?yōu)?61H,然后將 B 中的值送入到 61H單元中,即執(zhí)行完本條指令后,61H 單元中的值變?yōu)?20。 中國(guó)最大的管理資料下載中心 (收集 \整理 . 部分版權(quán)歸原作者 所有 ) 第 20 頁 共 68 頁 可以通過以下的例子再來看一看標(biāo)號(hào)的含義: MOV DPTR, 100H MOV A, R0 MOVC A, A+DPTR ORG 0100H. DB 0,1,4,9,16,25 如果 R0 中的值為 2,則最終地址為 100H+2 為 102H,到 102H 單元中找到的是 4。事實(shí)上,標(biāo)號(hào)的真實(shí)含義就是地址數(shù)值。 查找到的結(jié)果被放在 A中,因此,本條指令執(zhí)行前后, A中的值不一定相同。 例:將外部 RAM 中 100H 單元中的內(nèi)容送入外部 RAM 中 200H 單元中。 要讀或?qū)懲獠康?RAM,當(dāng)然也必須要知道 RAM 的地址,在后兩條指令中,地址是被直接放在 DPTR 中的。 此次大家就用 用熟這個(gè)軟件吧,說實(shí)話,我并不很喜歡它,操作起來不方便,但給我的機(jī)器只能上這個(gè),沒辦法,下次再給網(wǎng)友單獨(dú)介紹一個(gè)好一點(diǎn)的吧。注意此時(shí)不會(huì)看到原來的窗口,為看到原來的窗口,請(qǐng)用 ALT+4 或 ALT+5等來切換。 圖 4 內(nèi)存中值的變化在此是看不到的,可以用如下方法觀察(看圖 5):將鼠標(biāo)移到 DATA,雙擊,則光標(biāo)進(jìn)入此行,此時(shí)可以鍵盤上的上下光標(biāo)鍵上下翻動(dòng)來觀察內(nèi)存值的變化。 上機(jī)練習(xí): 進(jìn)入 DOS狀態(tài),進(jìn)入 WAVE所在的目錄,例 D:\WAVE 鍵入 MCS51,出現(xiàn)如下畫面 圖 1 按 FileOpen,出現(xiàn)對(duì)話框后,在 Name處輸入一個(gè)文件名(見圖 2),如果是下面列表中已存在的,則打開這個(gè)文件,如果不存在這個(gè)文件,則新建一個(gè)文件(見圖 3) 圖 2 在空白處將上面的程序輸入。反之,如果我們分別向 DPH, DPL送數(shù),則結(jié)果也一樣。 2)以寄存器 Rn為目的操作的指令 MOV Rn,A MOV Rn,direct MOV Rn,data 這組指令功能是把源地址單元中的內(nèi)容送入工作寄存器,源操作數(shù)不變。 MOV A,30H ; 將內(nèi)存 30H單元中的值送入 A,
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1