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

正文內(nèi)容

單片機入門教程(doc50)-管理培訓-資料下載頁

2025-08-09 19:34本頁面

【導讀】有感于本人自學單片機的痛苦經(jīng)歷,以及對目前單片機教材和教學方法的懷疑,決定做這一版,以幫助那些和我一樣,想入單片機之門身邊卻沒有一個老師可以問的人。本版將分兩大塊:自編。教程和為讀者提供盡可能詳盡的教學資料。編程器一只、89C51一片,實驗板一塊,再準備一只仿真機,如果你想學單片機,而又不愿做這些投資,我勸你最好還是放棄,否則可能只會。挫傷你學習的積極性和浪費你的時間。好在這些投資并不算多。不過幾十元的代價。件,你可以直接將要輸出的變量在計算機上顯示出來。被分成若干塊芯片,安裝一個稱之為主板的印刷線路板上。INTEL公司將MCS51的核心技術(shù)授權(quán)給了很多其它公司,所以有。用89C51來完成一系列的實驗。拿到一塊芯片,想要使用它,首先必須要知道怎樣連線,我們用的一塊稱之為89C51的芯片,要計算機做事,也得要向計算機發(fā)命令,計算機能聽得懂的命令稱之為計算機的指令。

  

【正文】 H MOV @Ri,data MOV @R0,34H ( 5)十六位數(shù)的傳遞指令 匯編指令 例子 說明 MOV DPTR, data16 MOV DPTR, 1324H 8051是一種 8位機,這是唯一的一條 16位立即數(shù)傳遞指令,其功能是將一個 16 位的立即數(shù)送入 DPTR中去。其中高 8位送入 DPH,低 8 位送入 DPL。例: MOV DPTR, 1234H,則執(zhí)行完了之后 DPH中的值為 12H, DPL中的值為 34H。反之,如果 我們分別向 DPH, DPL 送數(shù),則結(jié)果也一樣。如有下面兩條指令: MOV DPH, 35H, MOV DPL, 12H。則就相當于執(zhí)行了 MOV DPTR, 3512H。 綜合練習: 1. 給出每條指令執(zhí)行后的結(jié)果 匯編指令 執(zhí)行后的結(jié)果 正確答案 MOV 23H,30H (23h)=? (23h)=30h MOV 12H,34H (12h)=? (12h)=34h MOV R0,23H (R0)=? (R0)=23H MOV R7,22H (R7)=? (R7)=22H MOV R1,12H (R1)=? (R1)=34H MOV A,@R0 (A)=? (A)=30H MOV 34H,@R1 (34H)=? (34H)=34H MOV 45H,34H (45H)=? (45H)=34H MOV DPTR,6712H (DPTR)=? (DPTR)=6712H MOV 12H,DPH (12H)=? (12H)=67H MOV R0,DPL (R0)=? (R0)=12H MOV A,@R0 (A)=? (A)=67H 說明:上表中 各條指令順序執(zhí)行; 用括號括起來代表內(nèi)容,如( 23H)則代表內(nèi)部 RAM23H 單元中的值,( A)則代表累加器 A單元中的值。 2. 上機練習: 1. 進入 DOS 狀態(tài),進入 WAVE 所在的目錄,例 D:\WAVE 2. 鍵入 MCS51,出現(xiàn)如下畫面 圖 1 3. 按 FileOpen,出現(xiàn)對話框后,在 Name 處輸入一個文件名(見圖 2),如果是下面列表中已存在的,則打開這個文件,如果不存在這個文件,則新建一個文件(見圖 3) 圖 2 圖 3 4. 在空白處將上面的程序輸入。見圖 4。用 ALT+A匯編通過。用 F8 即可單步執(zhí)行,在執(zhí) 行過程中注意觀察屏幕左邊的工作寄存器及 A累加器中的值的變化。 圖 4 5. 內(nèi)存中值的變化在此是看不到的,可以用如下方法觀察(看圖 5):將鼠標移到DATA,雙擊,則光標進入此行,此時可以鍵盤上的上下光標鍵上下翻動來觀察內(nèi)存值的變化。本行的最前面 DATA后面的數(shù)據(jù)代表的是 “一段 ”的開始地址,如現(xiàn) 在為 20H,再看屏幕的最上方,數(shù)字從 0 到 F,顯示兩者相加就等于真正的地址值,如現(xiàn)在圖上所示的內(nèi)存 20H、 21H、 22H、 23H 中的值分別是 FBH 、0EH、 E8H、 30H。 圖 5 6. 當運行完程序后,即進入它的反匯編區(qū),不是我們想要的東西。為了再從頭開始,可以用 CTRL+F2 功能鍵復位 PC值。注意此時不會看到原來的窗口,為看到原來的窗口,請用 ALT+4 或 ALT+5 等來切換。當然以上操作也可以菜單進行。 CTRL+F2 是程序復位,用 RUN 菜單。窗口用 WINDOWS 菜單。 此次大家就用用熟這個軟件吧,說實話,我并不很喜歡它,操作起來不方便,但給我的機器只能上這個,沒辦法,下次再給網(wǎng)友單獨介紹一個好一點的吧。 本頁圖片較多,如果大家無法忍受它的等待, 請下載 單片機指令(三) 累加器 A 與片外 RAM 之間的數(shù)據(jù)傳遞類指令 匯編指令書寫格式 例子 說明 MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A 說明: 1. 1)在 51 中,與外部存儲器 RAM 打交道的只可以是 A累加器。所有需要送入外部 RAM的數(shù)據(jù)必需要通過 A送去,而所有要讀入的外部 RAM 中的數(shù)據(jù)也必需通過 A讀入。在此我們可以看出內(nèi)外部 RAM 的區(qū)別了,內(nèi)部 RAM 間可以直接進行數(shù)據(jù)的傳遞,而外部則不行,比如,要將外部 RAM 中某一單元(設(shè)為 0100H 單元的數(shù)據(jù))送入另一個單元(設(shè)為 0200H 單元),也必須先將 0100H 單元中的內(nèi)容讀入 A,然后再送到 0200H 單元中去。 2. 要讀或?qū)懲獠康?RAM,當然也必須要知道 RAM 的地址,在后兩條指令中,地址是被直接放在 DPTR 中的。而前兩條指令,由于 Ri(即 R0 或 R1)只是一個 8 位的寄存器,所以只提供低 8 位地址。因為有時擴展的外部 RAM 的數(shù)量比較少,少于或等于 256 個,就只需要提供 8 位地址就夠了。 3. 使用時應(yīng)當首先將要讀或?qū)懙牡刂匪腿?DPTR 或 Ri 中,然后再用讀 寫命令。 例:將外部 RAM中 100H 單元中的內(nèi)容送入外部 RAM 中 200H單元中。 匯編指令 說明 MOV DPTR, 0100H MOVX A, @DPTR MOV DPTR,0200H MOVX @DPTR,A 3、程序存儲器向累加器 A 傳送指令 匯編指令書寫格式 例子 說明 MOVC A,@DPTR 本指令是將 ROM中的數(shù)送入 A中。本指令也被稱為查表指令,常用此指令來查一個已做好在 ROM中的表格 說明: 1. 此條指令引出一個新的尋址方法:變址尋址。本指 令是要在 ROM 的一個地址單元中找出數(shù)據(jù),顯然必須知道這個單元的地址,這個單元的地址是這樣確定的:在執(zhí)行本指令立腳點 DPTR 中有一個數(shù), A中有一個數(shù),執(zhí)行指令時,將 A和 DPTR 中的數(shù)加起為,就成為要查找的單元的地址。 2. 查找到的結(jié)果被放在 A中,因此,本條指令執(zhí)行前后, A中的值不一定相同。 例:有一個數(shù)在 R0中,要求用查表的方法確定它的平方值(此數(shù)的取值范圍是 05) 匯編指令 說明 MOV DPTR, TABLE MOV A, R0 MOVC A, @A+DPTR . . TABLE: DB 0,1,4,9,16,25 設(shè) R0中的值為 2,送入 A 中,而 DPTR中的值則為 TABLE,則最終確定的 ROM單元的地址就是 TABLE+2,也就是到這個單元中去取數(shù),取到的是 4,顯然它正是 2的平方。其它數(shù)據(jù)也可以類推。 標號的真實含義:從這個地方也可以看到另一個問題,我們使用了標號來替代具體的單元地址。事實上,標號的真實含義就是地址數(shù)值。在這里它代表了, 0, 1, 4, 9, 16, 25 這幾個數(shù)據(jù)在 ROM中存放的起點位置。而在以前我們學過的如 LCALL DELAY 指令中, DELAY 則代表了以DELAY為標號的那段程序在 ROM中存放的起始地址。事實上, CPU 正是通過這個地址才找到這段程序的。 可以通過以下的例子再來看一看標號的含義: 匯編指令 說明 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。這個可以看懂了吧? 那為什么不這樣寫程序,要用標號呢?不是增加疑惑嗎? 如果這樣寫程序的話,在寫程序時,我們就必須確定這張表格在 ROM 中的具體的位置,如果寫完程序后,又想在這段程序前插入一段程序,那么這張表格的位置就又要變了,要改 ORG 100H這句話了,我們是經(jīng)常需要修改程序的,那多麻煩,所以就用標號來替代,只要一編譯程序,位置就自動發(fā)生變化,我們把這個麻煩事交給計算機 指 PC機去做了。 堆棧操作 匯編指令 說明 PUSH direct POP direct 第一條指令稱之為推入,就是將 direct 中的內(nèi)容送入堆棧中,第二條指令稱之為彈出,就是將堆棧中的內(nèi)容送回到 direct中。推入指令的執(zhí)行過程是,首先將 SP中的值加 1,然后把 SP中的值當作地址,將 direct中的值送進以 SP中的值為地址的 RAM單元中。例: 匯編指令 說明 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 時,是將 SP+1,即變?yōu)?61H,然后將 B 中的值送入到 61H 單元中,即執(zhí)行完本條指令后, 61H 單元中的值變?yōu)?20。 POP指令的執(zhí)行是這樣的,首先將 SP中的值作為地址,并將此地址中的數(shù)送到 POP指令后面的那個 direct 中,然后 SP 減 1。 接上例: 匯編指令 說明 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。 這有什么意義呢? ACC 中的值本來就是 100, B 中的值本來就是 20,是的,在本例中,的確沒有意義,但在實際工作中,則在 PUSH B后往往要執(zhí)行其他指令,而且這些指令會把 A中的值,B 中的值改掉,所以在程序的結(jié)束,如果我們要把 A和 B 中的值恢復原值,那么這些指令就有意義了。 還有一個問題,如果我不用堆棧,比如說在 PUSH ACC指令處用 MOV 60H, A,在 PUSH B 處用指令 MOV 61H, B,然后用 MOV A, 60H, MOV B, 61H 來替代兩條 POP指令,不是也一樣嗎?是的,從結(jié)果上看是一樣的,但是從過程看是不一樣的, PUSH和 POP指令都是單字節(jié),單周期指令,而 MOV指令則是雙字節(jié),雙周期指令。更何況,堆棧的作用不止于此,所以一般的計算機上都設(shè)有堆棧,而我們在編寫子程序,需要保存數(shù)據(jù)時,通常也不采用后面的方法,而是用堆棧的方法來實現(xiàn)。 例:寫出以下程序的運行結(jié)果 匯編指令 說明 MOV 30H, 12 (30H)=12 MOV 31H, 23 (30H)=23 PUSH 30H 將 30H 單元的內(nèi)容 (即 12)壓入堆棧 PUSH 31H 將 31H 單元的內(nèi)容 (即 23)壓入堆棧 POP 30H 將堆棧頂?shù)膬?nèi)容 (即 23)彈出到 30H 單元內(nèi) POP 31H 將堆棧頂?shù)膬?nèi)容 (即 12)彈出到 31H 單元內(nèi) 結(jié)果是 30H中的值變?yōu)?23,而 31H中的值則變?yōu)?12。也就兩者進行了數(shù)據(jù)交換。從這個例子可以看出:使用堆棧時,入棧的書寫順序和出棧的書寫順序必須相反,才能保證數(shù)據(jù)被送回原位,否則就要出錯了。 作業(yè):在 MCS51 下執(zhí) 行上面的例程,注意觀察內(nèi)存窗口和堆棧的變化。 單片機指令(四)算術(shù)運算類指令 1. 不帶進位位的加法指令 ADD A,DATA 例: ADD A, 10H ADD A,direct 例: ADD A, 10H ADD A,Rn 例: ADD A, R7 ADD A,@Ri 例: ADD A, @R0 2. 用途:將 A 中的值與其后面的值相加,最終結(jié)果否是回到 A中。 3. 例: MOV A, 30H 4. ADD A, 10H 5. 則執(zhí)行完本條指令后, A中的值為 40H。 6. 下面的題目自行練習 MOV 34H, 10H MOV R0, 13H MOV A, 34H ADD A, R0 MOV R1, 34H ADD A, @R1 7. 8. 帶進位位的加法指令 ADDC A, Rn ADDC A,direct ADDC A,@Ri ADDC A,data 用途:將 A 中的值和其后面的值相加,并且加上進位位 C 中的值。 說明:由于 51單片機是一種 8 位機,所以只能做 8 位的數(shù)學運算,但 8 位運算的范圍只有 0255,這在實際工作中是不夠的,因此就要進行擴展,一般是將 2 個 8位的數(shù)學運算合起來,成為一個 16位的運算,這樣,可以表達的數(shù)的范圍就可以達到 065535。如何合并呢?其實很簡單,讓我們看一個 10 進制數(shù)的例子: 66+78。 這兩個數(shù)相加,我們根本不在意這的過程,但事實上我們是這樣做的:先做 6+8(低位),然
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1