微機(jī)課程設(shè)計(jì)報(bào)告-交通燈_第1頁
已閱讀1頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  《微機(jī)實(shí)驗(yàn)及課程設(shè)計(jì)》</p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  姓 名: 學(xué) 號(hào): </p><p>  專 業(yè): 自動(dòng)化學(xué)院 實(shí) 驗(yàn) 室: 計(jì)算機(jī)硬件實(shí)驗(yàn)室 </p><p

2、>  組 別: 無 同組人員: 無 </p><p>  設(shè)計(jì)時(shí)間: 2013 年 5 月 17 日 —— 2013 年 6 月 8日</p><p>  評(píng)定成績: 審閱教師: </p><p>  目

3、 錄</p><p>  課程設(shè)計(jì)目的與要求……………………………………………3</p><p>  方案論證于原理設(shè)計(jì)……………………………………………3</p><p>  原理闡述及設(shè)計(jì)…………………………………………………4</p><p>  發(fā)難實(shí)現(xiàn)與測試…………………………………………………6</p>

4、<p>  分析與總結(jié)………………………………………………………7</p><p>  附錄……………………………………………………………….8</p><p>  一. 課程設(shè)計(jì)目的與要求</p><p><b>  設(shè)計(jì)目的:</b></p><p>  微機(jī)課程綜合設(shè)計(jì)用于檢驗(yàn)和提高學(xué)生在原理與接口綜合

5、應(yīng)用方面分析問題與解決問題的能力,同時(shí)也給學(xué)生提供更多、更好的訓(xùn)練機(jī)會(huì),課程給出了10 道微機(jī)硬件應(yīng)用綜合測試題。為完成每道測試題,至少需要選用TPC 微機(jī)實(shí)驗(yàn)裝置中三部分以上的硬件電路(還需將它們有機(jī)組合起來)并編制相應(yīng)的應(yīng)用。</p><p>  通過試驗(yàn)還能夠讓學(xué)生更好的了解所學(xué)知識(shí)在實(shí)際控制中的運(yùn)用,增加對(duì)本專業(yè)的認(rèn)識(shí)和學(xué)習(xí)興趣。</p><p><b>  設(shè)計(jì)要求:&

6、lt;/b></p><p>  1)基本要求 (難度系數(shù)1.0)</p><p>  L7、L6、L5 作為南北路口的交通燈,L2、L1、L0 作為東西路口的交通燈。編程使六個(gè)燈按交通燈變</p><p>  化規(guī)律亮滅。要求進(jìn)行周期性重復(fù)控制:</p><p>  (1) 南北路口的綠燈、東西路口的紅燈同時(shí)亮20 秒;</p&

7、gt;<p>  (2) 南北路口的黃燈閃爍3 秒,同時(shí)東西路口的紅燈閃3 秒;</p><p>  微機(jī)實(shí)驗(yàn)及課程設(shè)計(jì)教程</p><p>  (3) 南北路口的紅燈、東西路口的綠燈同時(shí)亮90 秒;</p><p>  (4) 南北路口的紅燈、同時(shí)東西路口的黃燈亮閃爍3 秒;</p><p>  (5) 在8 段LED 上同步

8、顯示倒計(jì)時(shí)。</p><p><b>  2)設(shè)計(jì)提示</b></p><p>  (1) 要求精確計(jì)時(shí),采用實(shí)驗(yàn)系統(tǒng)8253 定時(shí)器中斷或主機(jī)8253 定時(shí)器;</p><p>  (2) 利用軟件定時(shí)器。</p><p><b>  3)進(jìn)一步設(shè)計(jì)要求</b></p><p&

9、gt;  (1) 8×8 點(diǎn)陣顯示當(dāng)前車流運(yùn)行方向, 上下對(duì)應(yīng)南北,左右對(duì)應(yīng)東西。綠色箭頭對(duì)應(yīng),紅色箭頭對(duì)應(yīng)</p><p><b>  黃燈狀態(tài);</b></p><p>  (2) 允許南北向路口設(shè)置人工按鈕, 請(qǐng)求行人提前過街, 如東西綠燈已亮40 秒則按鈕后10 秒南北綠</p><p>  燈亮,否則按鈕后40 秒南北綠燈亮

10、;</p><p>  (3) 考慮其他復(fù)雜情況。</p><p>  二.方案論證與原理設(shè)計(jì)</p><p>  1)在考慮程序的整體要求和框架后,決定把程序總共分為四個(gè)模塊,分別為交通燈顯示模塊,數(shù)碼管顯示的模塊,中斷程序模塊,中斷初始化模塊。</p><p>  交通燈顯示模塊是整個(gè)程序的主模塊,其主要功能就是判斷交通狀態(tài)的運(yùn)行方向和顯

11、示模式,還有顯示的時(shí)間長短,并且還有人工緊急按鈕的功能。顯示模塊則由交通燈狀態(tài)來判斷并在數(shù)碼管上顯示倒計(jì)時(shí)。中斷則主要用作計(jì)時(shí)。中斷初始化程序用來初始化9054和一些基本的置取中斷向量的功能。</p><p><b>  2)各模塊的實(shí)現(xiàn)</b></p><p>  交通燈模塊通過一個(gè)全局變量irq_times來計(jì)時(shí),通過中斷服務(wù)子程序來改變它,在該模塊中通過判斷該變

12、量的值去選擇程序流程,并結(jié)合開關(guān)量來判斷人工按鈕有無按下。并在不同 流程去顯示交通燈和流向問題。并且調(diào)用數(shù)碼管顯示程序。 </p><p>  數(shù)碼管顯示模塊,通過irq_times來判斷并顯示。</p><p>  中斷服務(wù)模塊每調(diào)用一次說明已經(jīng)過去一秒鐘,則irq_times變化一次</p>

13、<p>  1.可編程定時(shí)/計(jì)數(shù)器8253</p><p>  定時(shí)/計(jì)數(shù)器8253主要是用于定時(shí)1s,觸發(fā)中斷把全局變量減一。電路連線是CLOCK0接1MHZ,分頻后頻率為1KHz,OUT0接中斷CLKCK1,分頻后為1HZ,OUT1接IRQ,每一秒觸發(fā)一次中斷,GATE0,GATE1接5v。計(jì)數(shù)器的初值應(yīng)都是1000;</p><p>  2.8255并行接口單元</p

14、><p>  8255主要是用于數(shù)碼管和發(fā)光二極管的數(shù)據(jù)輸出。所以用8255A口高三位和低三位接6個(gè)發(fā)光二極管,B口接數(shù)碼管的數(shù)據(jù)端,C口低兩位接數(shù)碼管位控制,最高位接開關(guān)K1</p><p><b>  3.點(diǎn)陣使用</b></p><p>  由于提高要求需要顯示上下箭頭,所以使用8*8點(diǎn)陣顯示箭頭。由地址譯碼電路的地址控制點(diǎn)陣。</p&

15、gt;<p><b>  4 微機(jī)控制器</b></p><p>  程序在純Dos下運(yùn)行</p><p>  三.詳細(xì)(機(jī)理)設(shè)計(jì)</p><p>  1) 軟件流程圖(總流程圖)</p><p>  本設(shè)計(jì)的軟件設(shè)計(jì)的思路:通過軟件編程使8253輸出定時(shí)信號(hào)申請(qǐng)中斷,在中斷服務(wù)程序中改變?nèi)钟?jì)數(shù)變量。在

16、主程序體中通過判斷全局變量的值來控制程序流向。</p><p>  圖表 1交通燈系統(tǒng)總流程圖</p><p><b>  2) 中斷模塊</b></p><p>  進(jìn)入中斷后,關(guān)閉中斷,然后壓棧,顯示提示信息,最后處理數(shù)據(jù)</p><p>  算法實(shí)現(xiàn):利用irq_times全局變量減一來實(shí)現(xiàn)倒計(jì)時(shí)。</p&g

17、t;<p>  3) LED顯示程序:本設(shè)計(jì)只用到了2個(gè)LED,只要將時(shí)間轉(zhuǎn)換為相應(yīng)的段碼。先輸出位碼,再輸出段碼,循環(huán)輸出就可以動(dòng)態(tài)顯示。將LED作偏移碼,利用XLAT,很簡單就可以實(shí)現(xiàn)譯碼。 </p><p>  4) 硬件連接圖 IRQ</p><p>  四. 方案實(shí)現(xiàn)與測試(或調(diào)試)</p>

18、<p>  首先根據(jù)設(shè)計(jì)思路,選擇采用8253和8255芯片,使用較為復(fù)雜的中斷。然后調(diào)試硬件,確定位選、芯片等工作正常。這可以通過手動(dòng)輸入控制字,進(jìn)行簡單輸入輸出實(shí)現(xiàn)。然后確定8253、8255芯片的地址,開始軟件編程。</p><p>  軟件編程首先完成整體的邏輯框架,然后具體編寫子程序。剛開始時(shí)采用軟件延時(shí),優(yōu)先調(diào)試8255。采用8255的A、B口的0方式,A、B口的變化將反映在八段碼和LE

19、D燈上。子程序的編寫即將設(shè)計(jì)好的算法轉(zhuǎn)換為程序流,用程序流的方向?qū)崿F(xiàn)選擇,用調(diào)用子程序?qū)崿F(xiàn)具體操作。 然后加入8253的硬件中斷加以調(diào)整全局計(jì)數(shù),將OUT1連至IRQ,通過查詢PC7口的狀態(tài)進(jìn)行判斷人工按鈕有無按下。由于前面8255已經(jīng)調(diào)好,所以8253的調(diào)試比較順利。</p><p>  最終將全部硬件連線接好,進(jìn)行整機(jī)聯(lián)調(diào)。當(dāng)中發(fā)現(xiàn)許多問題,有編譯問題,但在調(diào)整后都編譯通過了,對(duì)軟件進(jìn)行單步,這時(shí)由于有現(xiàn)象,

20、進(jìn)行軟件調(diào)試的時(shí)候也更有針對(duì)性。通過設(shè)置斷點(diǎn),逐步跟蹤寄存器值,調(diào)試時(shí)發(fā)現(xiàn)在中斷程序返回時(shí)始終是不對(duì)的,這導(dǎo)致一運(yùn)行程序就會(huì)跑飛。無論如何都排查不了這個(gè)問題,一般這種問題都是由于堆棧不平衡引起的,但檢查程序并未發(fā)現(xiàn)有堆棧錯(cuò)誤。最終在一個(gè)偶然的瞬間我把主程序中的幾句用來顯示提示信息的語句刪除后發(fā)現(xiàn)程序這次可以正確運(yùn)行了,最后發(fā)現(xiàn)在中斷外面運(yùn)用INT21功能號(hào)為9的中斷顯示字符串會(huì)導(dǎo)致中斷返回不了的問題。在最后調(diào)好這問題后運(yùn)行程序達(dá)到了理想

21、的目的與與要求,實(shí)現(xiàn)的拓展功能。 </p><p><b>  實(shí)物連接圖:</b></p><p><b>  五.分析與總結(jié)</b></p><p>  1)題目要求要用到8255經(jīng)確定時(shí),所以考慮到用中斷來實(shí)現(xiàn)這個(gè)功能要求。</p><p>  3)由于想到各種顯示輸出需要很多鎖存,而8255

22、卻可以很好地解決這個(gè)問題,于是就用8255實(shí)現(xiàn),而且8255C口的高四位與低四位輸入輸出不一樣,這位人工按鈕提供方便。</p><p>  2) 編程中遇到的很多是邏輯問題.另一個(gè)遇到的問題就是跳轉(zhuǎn)語句超出范圍的錯(cuò)誤,這個(gè)錯(cuò)誤的解決是通利用兩個(gè)跳轉(zhuǎn)實(shí)現(xiàn)(一個(gè)條件一個(gè)無條件)。</p><p>  3) 我的主程序是用來控制程序流向的,但其實(shí)也包括了程序顯示的一部分任務(wù),其中不同的流向中就用

23、不同的顯示方案,這樣也簡化了顯示子程序的任務(wù)。使得程序編寫比較方便和控制。</p><p>  4) 對(duì)終端的初始化是主要參考實(shí)驗(yàn)書上的中斷試驗(yàn)程序。</p><p>  5)中斷調(diào)試時(shí)由于要進(jìn)入純DOS所以比較麻煩,所以調(diào)試也比較耗時(shí)間,最主要的問題是該種中斷問題很少遇到,要不是最后自己出于簡化程序來找錯(cuò)誤的思想,可能就根本發(fā)現(xiàn)不了在中斷的外邊用顯示功能回事中斷的返回出問題,導(dǎo)致程序跑飛

24、掉。</p><p>  6)交通燈的這個(gè)題目狀態(tài)還好不多,但由于中斷的引入使得程序變得復(fù)雜,但其實(shí)也就是初始化和退出程序比較復(fù)雜,而對(duì)于主程序來說沒有多大影響,還有就是對(duì)調(diào)試用較高的要求。這個(gè)題目做下來還是有不少收獲的,至少經(jīng)驗(yàn)上要多了一些。</p><p><b>  參考書目:</b></p><p>  楊素行等,《微型計(jì)算機(jī)系統(tǒng)原理及

25、應(yīng)用》,北京,清華大學(xué)出版社,2009年</p><p>  東南大學(xué)微機(jī)系統(tǒng)與接口課程組,《微機(jī)實(shí)驗(yàn)及課程設(shè)計(jì)教程試用版3.0》,南京,東南大學(xué)出版社,2010年</p><p><b>  附錄.代碼程序</b></p><p>  ioport equ 0ec00h-0280h</p><p>  iopor

26、t_82530 equ ioport+0280h ;8253io地址</p><p>  ioport_82531 equ ioport+0281h</p><p>  ioport_82533 equ ioport+0283h</p><p>  io82550 equ ioport+0290h</p><p>

27、;  io82551 equ ioport+0291h;8255io地址</p><p>  io82552 equ ioport+0292h</p><p>  io82553 equ ioport+0293h</p><p>  ioportCequ ioport+0298h</p><p>  

28、ioportRrequ ioport+02a0h;點(diǎn)陣控制地址</p><p>  ioportRy equ ioport+02a8h</p><p>  int_vect EQU 72H ;中斷0-7 的向量為:08h-0fh,中斷8-15 的向量為:70h-77h</p><p>  irq_mask_2_7 equ 11111011b ;中斷掩碼,中

29、斷0-7 時(shí)從低至高相應(yīng)位為零,中斷8-15 時(shí)第2 位為零</p><p>  irq_mask_9_15 equ 11111011b;中斷0-7 時(shí)全一,中斷8-15 時(shí)從低至高相應(yīng)位零</p><p>  ioport_cent equ 0e800h ;tpc 卡中9054 芯片的io 地址</p><p>  data segment</p>

30、<p>  csreg dw ?</p><p>  ipreg dw ? ;舊中斷向量保存空間</p><p>  irq_times dw ? ;中斷計(jì)數(shù)</p><p>  buffer0 db 00h,01h,02h,03h,04h,05h,06h,07h</p><p>  buffer1 db 10h,38h,10h,1

31、0h,10h,20h,7eh,20h</p><p>  gewei dw 0</p><p>  shiwei dw 0</p><p>  Led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;碼</p><p>  msg1 db 0dh,0ah,'display',0dh,0ah

32、,'$'</p><p>  msg3 db 0dh,0ah,'interrupt !!!!!! ',0dh,0ah,'$'</p><p><b>  data ends</b></p><p>  stacks segment stack</p><p>  db 25

33、6 dup (?)</p><p>  stacks ends</p><p>  code segment</p><p>  assume cs:code,ds:data,ss:stacks,es:data</p><p>  main proc far ;Enable Local Interrupt Input</p>&

34、lt;p><b>  start:cli</b></p><p>  mov ax,data</p><p><b>  mov ds,ax</b></p><p><b>  mov es,ax</b></p><p>  mov ax,stacks</p>

35、<p><b>  mov ss,ax</b></p><p>  mov dx,ioport_cent+68h ;設(shè)置 tpc 卡中9054 芯片io 口,使能中斷</p><p><b>  in ax,dx</b></p><p>  or ax,0900h</p><p>&l

36、t;b>  out dx,ax</b></p><p>  mov al,int_vect ;保存原中斷向量</p><p>  mov ah,35h</p><p><b>  int 21h</b></p><p><b>  mov ax,es</b></p>

37、<p>  mov csreg,ax</p><p>  mov ipreg,bx</p><p>  mov ax,cs ;設(shè)置新中斷向量</p><p><b>  mov ds,ax</b></p><p>  mov dx,offset int_proc</p><p>  mo

38、v al,int_vect</p><p>  mov ah,25h</p><p><b>  int 21h</b></p><p>  in al, 21h ;設(shè)置中斷掩碼</p><p>  and al, irq_mask_2_7</p><p>  out 21h, al</p&

39、gt;<p>  in al, 0a1h</p><p>  and al, irq_mask_9_15</p><p>  out 0a1h, al</p><p>  mov ax,data</p><p><b>  mov ds,ax</b></p><p>  ;以上為中斷

40、初始化部分</p><p>  ;8253初始化部分</p><p>  mov dx,ioport_82533</p><p>  mov al,36h</p><p><b>  out dx,al</b></p><p>  mov dx,ioport_82530</p>&l

41、t;p>  mov ax,1000</p><p><b>  out dx,al</b></p><p><b>  mov al,ah</b></p><p><b>  out dx,al</b></p><p>  mov dx,ioport_82533</

42、p><p>  mov al,76h</p><p><b>  out dx,al</b></p><p>  mov dx,ioport_82531</p><p>  mov ax,1000</p><p><b>  out dx,al</b></p>&l

43、t;p><b>  mov al,ah</b></p><p><b>  out dx,al</b></p><p><b>  ;8255初始化</b></p><p>  mov dx,io82553</p><p>  mov al,88h</p>

44、<p><b>  out dx,al</b></p><p><b>  sti;開中斷</b></p><p>  beg: mov irq_times,36</p><p>  go1:cmp irq_times,26</p><p><b>  jl go2<

45、;/b></p><p>  mov ax,irq_times</p><p><b>  sub ax,26</b></p><p>  call disp</p><p>  mov al,24h;南北綠燈和東西紅燈亮10秒</p><p>  mov dx,io82550

46、</p><p><b>  out dx,al</b></p><p>  mov cx,0008h</p><p>  mov ah,01h</p><p>  mov si,offset buffer0</p><p>  d1:mov al,[si]</p><p&

47、gt;  mov bx,offset buffer1;箭頭顯示橫向紅,列項(xiàng)綠</p><p><b>  xlat</b></p><p>  mov dx,ioportC</p><p><b>  out dx,al</b></p><p><b>  mov al,ah</

48、b></p><p>  cmp 20h,ah</p><p><b>  jb next0</b></p><p>  mov dx,ioportRy</p><p><b>  out dx,al</b></p><p>  next1:mov dx,ioportR

49、r</p><p><b>  shl,ah</b></p><p><b>  inc si</b></p><p><b>  push cx</b></p><p>  mov cx,0fffh</p><p>  loop1:loop 1oop1

50、</p><p><b>  pop cx</b></p><p><b>  loop d1</b></p><p><b>  jmp lll</b></p><p>  go2:cmp irq_times,23</p><p><b>

51、  jl go3</b></p><p>  mov ax,irq_times</p><p><b>  sub ax,23</b></p><p>  call leddisp</p><p><b>  mov al,0</b></p><p>  mov

52、 dx,io82550</p><p><b>  out dx,al</b></p><p>  mov dx,ioportC</p><p><b>  out dx,al</b></p><p>  cmp irq_times,24</p><p><b> 

53、 je turn</b></p><p><b>  jmp go2</b></p><p>  turn: mov al,44h;南北黃燈和東西紅燈閃3秒</p><p>  mov dx,io82550</p><p><b>  out dx,al</b></p&g

54、t;<p>  mov cx,0008h</p><p>  mov ah,01h</p><p>  mov si,offset buffer0</p><p>  d2:mov al,[si]</p><p>  mov bx,offset buffer1;箭頭閃爍顯示橫向紅,列項(xiàng)綠</p><p

55、><b>  xlat</b></p><p>  mov dx,ioportC</p><p><b>  out dx,al</b></p><p><b>  mov al,ah</b></p><p>  cmp 20h,ah</p><p&g

56、t;<b>  jb next0</b></p><p>  mov dx,ioportRy</p><p><b>  out dx,al</b></p><p>  next2:mov dx,ioportRr</p><p><b>  shl,ah</b></p&g

57、t;<p><b>  inc si</b></p><p><b>  push cx</b></p><p>  mov cx,0fffh</p><p>  loop2:loop 1oop2</p><p><b>  pop cx</b></p>

58、;<p><b>  loop d2</b></p><p><b>  jmp lll</b></p><p>  beg_mid:jmp beg</p><p>  go3:cmp irq_times,3</p><p><b>  jl go4</b>&

59、lt;/p><p>  mov ax,irq_times</p><p><b>  sub ax,3</b></p><p>  call leddisp ;南北紅燈東西綠燈亮20秒</p><p>  mov al,81h</p><p>  mov dx,io82550</p>

60、<p><b>  out dx,al</b></p><p>  mov cx,0008h</p><p>  mov ah,01h</p><p>  mov si,offset buffer0</p><p>  d3:mov al,[si]</p><p>  mov b

61、x,offset buffer1;箭頭顯示橫向綠,列項(xiàng)紅</p><p><b>  xlat</b></p><p>  mov dx,ioportC</p><p><b>  out dx,al</b></p><p><b>  mov al,ah</b></

62、p><p>  cmp 20h,ah</p><p><b>  jb next0</b></p><p>  mov dx,ioportRr</p><p><b>  out dx,al</b></p><p>  next3:mov dx,ioportRy</p>

63、;<p><b>  shl,ah</b></p><p><b>  inc si</b></p><p><b>  push cx</b></p><p>  mov cx,0fffh</p><p>  loop3:loop 1oop3</p>

64、<p><b>  pop cx</b></p><p><b>  loop d3</b></p><p>  mov dx,io82553;中間人工按鍵時(shí)可以調(diào)整</p><p><b>  in al,dx</b></p><p>  and al,80h&

65、lt;/p><p>  cmp al,80h</p><p>  je qq ;按下時(shí)跳到qq</p><p><b>  jmp lll</b></p><p>  qq: cmp irq_times,13</p><p><b>  jl qq1</b></p

66、><p>  mov irq_times,8 ;根據(jù)題目要求東西已亮十秒則三秒后南北綠亮;則8秒后亮</p><p><b>  jmp goon</b></p><p>  qq1: mov irq_times,3</p><p><b>  jmp goon</b></

67、p><p>  goon: cmp irq_times,3</p><p><b>  jl go4</b></p><p>  mov ax,irq_times</p><p><b>  sub ax,3</b></p><p>  call leddisp</p

68、><p>  mov al,81h</p><p>  mov dx,io82550</p><p><b>  out dx,al</b></p><p>  mov cx,0008h</p><p>  mov ah,01h</p><p>  mov si,offset

69、 buffer0</p><p>  dgoon:mov al,[si]</p><p>  mov bx,offset buffer1;箭頭顯示橫向綠,列項(xiàng)紅</p><p><b>  xlat</b></p><p>  mov dx,ioportC</p><p><b>

70、  out dx,al</b></p><p><b>  mov al,ah</b></p><p>  cmp 20h,ah</p><p><b>  jb next0</b></p><p>  mov dx,ioportRr</p><p><b&

71、gt;  out dx,al</b></p><p>  nextgoon:mov dx,ioportRy</p><p><b>  shl,ah</b></p><p><b>  inc si</b></p><p><b>  push cx</b><

72、/p><p>  mov cx,0fffh</p><p>  loopgoon:loop 1oopgon</p><p><b>  pop cx</b></p><p>  loop dgoon</p><p><b>  mov ah,1</b></p>&l

73、t;p><b>  int 16h</b></p><p><b>  jnz exit</b></p><p>  ;南北紅燈和東西綠燈亮20</p><p><b>  jmp goon</b></p><p>  go4:cmp irq_times,0</p

74、><p>  jl beg_mid</p><p>  mov ax,irq_times</p><p>  call leddisp</p><p><b>  mov al,0</b></p><p>  mov dx,io82550 ;南北紅燈和東西黃燈閃3</p>

75、<p><b>  out dx,al</b></p><p>  mov dx,ioportC</p><p><b>  out dx,al</b></p><p>  cmp irq_times,1</p><p><b>  je turn1</b><

76、;/p><p><b>  jmp go4</b></p><p>  turn1: mov al,82h</p><p>  mov dx,io82550</p><p><b>  out dx,al</b></p><p>  mov cx,0008h</p>

77、;<p>  mov ah,01h</p><p>  mov si,offset buffer0</p><p>  d4:mov al,[si]</p><p>  mov bx,offset buffer1;箭頭顯示橫向綠,列項(xiàng)紅</p><p><b>  xlat</b></p>

78、<p>  mov dx,ioportC</p><p><b>  out dx,al</b></p><p><b>  mov al,ah</b></p><p>  cmp 20h,ah</p><p><b>  jb next0</b></p&g

79、t;<p>  mov dx,ioportRr</p><p><b>  out dx,al</b></p><p>  next4:mov dx,ioportRy</p><p><b>  shl,ah</b></p><p><b>  inc si</b>

80、;</p><p><b>  push cx</b></p><p>  mov cx,0fffh</p><p>  loop4:loop 1oop4</p><p><b>  pop cx</b></p><p><b>  loop d4</b>

81、;</p><p><b>  jmp lll</b></p><p>  lll: mov ah,1</p><p><b>  int 16h</b></p><p>  jnz exit ;按任意鍵退出</p><p><b

82、>  jmp go1</b></p><p><b>  exit: cli</b></p><p>  mov bl, irq_mask_2_7 ;恢復(fù)中斷掩碼</p><p><b>  not bl</b></p><p>  in al, 21h</p>&l

83、t;p><b>  or al, bl</b></p><p>  out 21h, al</p><p>  mov bl, irq_mask_9_15</p><p><b>  not bl</b></p><p>  in al, 0a1h</p><p>&l

84、t;b>  or al, bl</b></p><p>  out 0a1h, al</p><p>  mov dx,ipreg ;恢復(fù)原中斷向量</p><p>  mov ax,csreg</p><p><b>  mov ds,ax</b></p><p>  mov

85、ah,25h</p><p>  mov al,int_vect</p><p><b>  int 21h</b></p><p>  mov dx,ioport_cent+68h ;設(shè)置 tpc 卡中9054 芯片io 口,關(guān)閉中斷</p><p><b>  in ax,dx</b></

86、p><p>  and ax,0f7ffh</p><p><b>  out dx,ax</b></p><p>  mov ax,4c00h</p><p><b>  int 21h</b></p><p><b>  main endp</b><

87、;/p><p>  int_proc proc far ;中斷處理程序</p><p><b>  cli</b></p><p><b>  push ds</b></p><p><b>  push ax</b></p><p><b>  

88、push dx</b></p><p>  mov ax,data</p><p><b>  mov ds,ax</b></p><p>  mov dx,offset msg2</p><p>  mov ah,09h</p><p><b>  int 21h</

89、b></p><p>  dec irq_times;倒計(jì)時(shí)減少irq_times</p><p>  mov al,20h ;Send EOI</p><p>  out 0a0h,al</p><p>  out 20h,al</p><p><b>  pop dx</b></p

90、><p><b>  pop ax</b></p><p><b>  pop ds</b></p><p><b>  sti</b></p><p><b>  iret</b></p><p>  int_proc endp<

91、;/p><p>  disp proc near ;disp</p><p><b>  push dx</b></p><p><b>  push cx</b></p><p><b>  push ax</b></p><p>

92、;  mov ax,data</p><p><b>  mov ds,ax</b></p><p>  ; mov dx,offset msg1</p><p>  ; mov ah,09h</p><p>  ; int 21h ;設(shè)di為顯示緩沖區(qū)</p><p><b>  mo

93、v bl,10</b></p><p><b>  pop ax</b></p><p><b>  div bl</b></p><p><b>  mov dx,ax</b></p><p>  and ax,00ffh</p><p>

94、  mov shiwei,ax</p><p>  mov cl,08h</p><p><b>  shr dx,cl</b></p><p>  and dx,00ffh</p><p>  mov gewei,dx</p><p>  mov si,offset Led

95、;置led數(shù)碼表偏移地址為SI</p><p>  add si,gewei ;求出對(duì)應(yīng)的led數(shù)碼</p><p>  mov al,byte ptr [si]</p><p>  mov dx,io82551 ;自8255b的口輸出 B port</p><p><b

96、>  out dx,al</b></p><p>  mov al,01h ; 使相應(yīng)的數(shù)碼管亮 C port</p><p>  mov dx,io82552</p><p><b>  out dx,al</b></p><p><b>  mov bx

97、,0</b></p><p>  delay:dec bx</p><p><b>  jnz delay</b></p><p><b>  mov al,0</b></p><p>  mov dx,io82552</p><p><b>  ou

98、t dx,al</b></p><p>  delay2: dec bx</p><p>  jnz delay2</p><p>  mov si,offset led ;置led數(shù)碼表偏移地址為SI</p><p>  add si,shiwei ;求出對(duì)應(yīng)的led數(shù)

99、碼</p><p>  mov al,byte ptr [si]</p><p>  mov dx,io82551 ;8255B的口輸出</p><p><b>  out dx,al</b></p><p>  mov al,2 ;使相應(yīng)的數(shù)碼管亮c口<

100、/p><p>  mov dx,io82552</p><p><b>  out dx,al</b></p><p><b>  mov bx,1</b></p><p>  delay1: dec bx</p><p>  jnz delay1</p><

101、p><b>  mov al,0</b></p><p>  mov dx,io82552</p><p><b>  out dx,al</b></p><p><b>  pop cx</b></p><p><b>  pop dx</b>&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論