一實驗目的:1熟悉單片機地址線與EPROM引腳的連線方式。2學會用altium繪制電路原理圖。3掌握c8051,32k寄存器拓展簡單并行的輸入輸出的方法。二實驗內容:1設同學的點名序號為 XX,參考教材的圖5.12的與非門譯碼電路,將一片32K的EPROM譯碼到首地址為 YY000H的地址空間。2其中 YYH=XXH+40H。如某同學的點名序號為 38,則 'YY'='38'+'40'='78'。三實驗原理:通過c8051單片機地址線中低15位與32k62256EPROM地址連接起來,高八位地址控制ROM的片使能,達到單片機拓展EPROM的目的。四實驗步驟:1通過查表可知本人班級點名序號為45,’yy’=’85 ’;首地址為’85000h’.2電路分析:1據5-12例可以得到,單片機A0-A14地址線與62256的A0-14相連,單片機A12-A19為控制信號,如果采用書中電路,就會發現保存的地址不是連續空間,需要用鎖存器來進行首地址選擇后,再進行余下地址的譯碼。2經過仔細分析,發現高8位地址線可以用4-16譯碼器,邏輯電路,鎖存器三種控制方法實現。本文主要介紹譯碼器方案。電路圖如下所示: 1 該電路圖主要由EPROM儲存電路和邏輯器件控制電路兩部分組成,其中由于首地址是85000h,末地址為8c000h,高4位可以直接用1000一直表示,但第12-15位4位二進制一直在變化,不能借用書中用一個15輸入與非門解決地址連續的問題。需要用數電中邏輯電路知識,圖中電路不是最簡電路,但為了便于看圖,用了5個非門,2個四輸入或非門,2個四輸入與非門,3個二輸入與非門,一個四輸入與門,邏輯電路如下所示:
將A19-A12用A19--A12表示,上圖中的邏輯關系可以用如下公式表示: 
2計算:如圖,控制電路部分由高八位代碼0x85-0x8c決定,即高四位一定是8,A15-A12位為0101-1011 bit | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 數值 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 由表得A15-A12可以分為01xx,10xx,1100,合并并除去0100,就可以得到。使地址儲存在0x85000h-0x8cfffh;
實驗二emulator8086對外設控制的仿真一實驗目的:⑴了解并掌握如何用匯編語言對外設進行控制; ⑵學習構建應用案例;二實驗內容:根據emu8086的應用例程,構建一個控制交通燈、溫度計、機器人或者步進電機的應用案例。如,可以通過simpleio輸入步進電機要轉的角度,然后控制stepper motor旋轉,等等。三實驗原理:通過emulator8086的例程學習用匯編語言對外設的控制,掌握程序的調試,修改,注釋。四實驗過程:1選用例程溫度計案例;源代碼如下#start=thermometer.exe##make_bin#
; set data segment to code segment: mov ax, cs mov ds, ax ;首先設置數據段代碼段: start:
in al, 125 ;啟動溫度計,設定加熱溫器溫度125度
cmp al, 90 ;設定最小溫度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 ;跳轉OK
high: mov al, 0 ;關閉加熱器,直接進入OK out 127, al ; turn heater "off".
 ok: ;重新進入下個循環
jmp start ; endless loop. 2流程圖:
C偽代碼: First:初始化,設置數據段代碼段 Then:進入start,設定加熱溫度125度 next:設定最小溫度90度,比較當前溫度計溫度與90度差距 If:溫度小于90度,指向low If:溫度大于等于91度,指向high else:指向ok Low:打開加熱器,程序跳轉ok High:關閉加熱器,程序跳轉ok Last Ok:返回first,重新進入下一個循環。 3 題目分析:首先初始化程序,設定加熱器溫度125度,比較加熱器溫度是否在90-91度之間,通過關閉打開加熱器使燒杯中溫度維持在90-91度間,一直循環下去。目的是想把燒杯溫度維持在90度左右,實際也可以達到目的。
4實驗結果:通過觀察,發現溫度計溫度維持在90度至91度間,達到預期設想,調節速度快且穩定。
|