找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3644|回復(fù): 0
收起左側(cè)

emulator8086對外設(shè)控制的仿真

[復(fù)制鏈接]
ID:76127 發(fā)表于 2015-4-18 01:47 | 顯示全部樓層 |閱讀模式
      一實驗?zāi)康模?/font>⑴了解并掌握如何用匯編語言對外設(shè)進(jìn)行控制; ⑵學(xué)習(xí)構(gòu)建應(yīng)用案例;二實驗內(nèi)容:根據(jù)emu8086的應(yīng)用例程,構(gòu)建一個控制交通燈、溫度計、機(jī)器人或者步進(jìn)電機(jī)的應(yīng)用案例。如,可以通過simpleio輸入步進(jìn)電機(jī)要轉(zhuǎn)的角度,然后控制stepper motor旋轉(zhuǎn),等等。三實驗原理:通過emulator8086的例程學(xué)習(xí)用匯編語言對外設(shè)的控制,掌握程序的調(diào)試,修改,注釋。四實驗過程:1選用例程溫度計案例;源代碼如下#start=thermometer.exe##make_bin#


; set data segment to code segment:
mov ax, cs
mov ds, ax         ;首先設(shè)置數(shù)據(jù)段代碼段:
start:

in al, 125          ;啟動溫度計,設(shè)定加熱溫器溫度125度

cmp al, 90         ;設(shè)定最小溫度90度

jl  low           ;如果燒杯溫度小于90度,指向low

cmp al, 91        ;如果燒杯溫度大于91度,指向high
jle  ok           ;如果小于等于90度,指向OK
jg   high         ;如果大于90度,指向high

low:         
mov al, 1          ;打開加熱器
out 127, al   ; turn heater "on".
jmp ok            ;跳轉(zhuǎn)OK

high:         
mov al, 0          ;關(guān)閉加熱器,直接進(jìn)入OK
out 127, al   ; turn heater "off".

ok:                ;重新進(jìn)入下個循環(huán)
jmp start   ; endless loop.
2流程圖:
C偽代碼:
First:初始化,設(shè)置數(shù)據(jù)段代碼段
Then:進(jìn)入start,設(shè)定加熱溫度125度
next:設(shè)定最小溫度90度,比較當(dāng)前溫度計溫度與90度差距
If:溫度小于90度,指向low
If:溫度大于等于91度,指向high
   else:指向ok
Low:打開加熱器,程序跳轉(zhuǎn)ok
High:關(guān)閉加熱器,程序跳轉(zhuǎn)ok
Last  Ok:返回first,重新進(jìn)入下一個循環(huán)。
3       題目分析:首先初始化程序,設(shè)定加熱器溫度125度,比較加熱器溫度是否在90-91度之間,通過關(guān)閉打開加熱器使燒杯中溫度維持在90-91度間,一直循環(huán)下去。目的是想把燒杯溫度維持在90度左右,實際也可以達(dá)到目的。

4實驗結(jié)果:通過觀察,發(fā)現(xiàn)溫度計溫度維持在90度至91度間,達(dá)到預(yù)期設(shè)想,調(diào)節(jié)速度快且穩(wěn)定。

   



回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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