




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、微機(jī)接口技術(shù)課程設(shè)計(jì)報(bào)告 設(shè)計(jì)題目: 秒表設(shè)計(jì) _ 班級(jí):電子 0801 姓名: 計(jì)算機(jī)科學(xué)與技術(shù) 學(xué)院 電子信息科學(xué)與技術(shù) 專(zhuān)業(yè) 時(shí)間:2010-12-25 前 言 微機(jī)接口技術(shù)是計(jì)算機(jī)和電子類(lèi)專(zhuān)業(yè)重要的專(zhuān)業(yè)基礎(chǔ)課之一,它不僅要求有較好 的理論基礎(chǔ),而且還要求有較強(qiáng)的實(shí)際動(dòng)手能力。本課程設(shè)計(jì)的主要目的是通過(guò)課程 設(shè)計(jì)的綜合訓(xùn)練,培養(yǎng)學(xué)生實(shí)際分析問(wèn)題、編程和動(dòng)手能力,最終使學(xué)生系統(tǒng)掌握接 口技術(shù)課程的內(nèi)容,能把學(xué)到的知識(shí)應(yīng)用到實(shí)際中去,學(xué)習(xí)解決實(shí)際生活和工作中的 問(wèn)題,提高實(shí)踐能力,包括對(duì)計(jì)算機(jī)接口技術(shù)的理解和計(jì)算機(jī)應(yīng)用系統(tǒng)的分析、設(shè)計(jì) 能力。課程設(shè)計(jì)較課程實(shí)驗(yàn)復(fù)雜,課程設(shè)計(jì)涉及理論嘗試更廣,
2、更接近實(shí)際應(yīng)用,要 求同學(xué)們重視實(shí)際動(dòng)手能力的訓(xùn)練,提前做好預(yù)習(xí),學(xué)習(xí)查找、運(yùn)用設(shè)計(jì)資料,完成 工程設(shè)計(jì)所必備的基本訓(xùn)練。 一、主要內(nèi)容 本次課程設(shè)計(jì)的題目為秒表設(shè)計(jì)。設(shè)計(jì)的具體要求為: 1、利用 8253a,用實(shí)驗(yàn)箱上的數(shù)碼管模擬一個(gè)秒表,要求具有一般秒表的功能; 2、能顯示實(shí)時(shí)時(shí)間,時(shí)間值的變化可采用查詢 8253a 的計(jì)數(shù)器值來(lái)進(jìn)行計(jì)算; 按“1”鍵時(shí),進(jìn)入秒表準(zhǔn)備狀態(tài),再按“1”鍵開(kāi)始秒表計(jì)時(shí)(計(jì)時(shí)單位為 1/100 秒) ,再按“1”鍵時(shí)停止秒表計(jì)時(shí)。秒表計(jì)時(shí)的時(shí)間在數(shù)碼管上顯示; 3、按“2”鍵退出秒表計(jì)時(shí)狀態(tài),顯示實(shí)時(shí)時(shí)間。 二、資料收集 本論文參考了 2008 年 2 月清華大
3、學(xué)出版社由戴梅萼和史嘉權(quán)編寫(xiě)的第四版微 機(jī)計(jì)算機(jī)技術(shù)及應(yīng)用 ,以及西安電子科技大學(xué)出版社出版的唐祎玲和毛月東于 2003 年 8 月編寫(xiě)的32 位微機(jī)原理與接口技術(shù)實(shí)驗(yàn)教程 。 三、工作過(guò)程 在老師的要求下全班進(jìn)行了自行分組,我們組三名成員,在經(jīng)過(guò)初期選擇題目, 確定思路后著手寫(xiě)的程序,期間遇到了一些問(wèn)題,最后在老師的指導(dǎo)、同學(xué)的幫助以 及自己組內(nèi)成員的努力下克服了這些困難。 由于筆者水平有限,設(shè)計(jì)報(bào)告中難免有錯(cuò)誤和不足之處,敬請(qǐng)老師提出寶貴意見(jiàn)。 目 錄 一、系統(tǒng)概述 .1 1.1 設(shè)計(jì)要求.1 1.2 系統(tǒng)流程論述及工作原理.1 1.3 系統(tǒng)可行性分析.4 二、單元電路設(shè)計(jì)與分析 .6 2
4、.1 硬件電路設(shè)計(jì).6 2.2 器件選擇與簡(jiǎn)介.7 2.2.1 可編程計(jì)數(shù)器/定時(shí)器芯片 8254a .7 2.2.2 可編程并行通信接口芯片 8255a .9 三、軟件編程與調(diào)試 .12 3.1 技術(shù)問(wèn)題.12 3.2 調(diào)試結(jié)果.12 四、結(jié)束語(yǔ) .13 4.1改進(jìn)分析 .13 4.2實(shí)驗(yàn)總結(jié) .13 附錄 .14 參考文獻(xiàn) .21 1 一、系統(tǒng)概述 1.1 設(shè)計(jì)要求 利用 8253a,用實(shí)驗(yàn)箱上的數(shù)碼管模擬一個(gè)秒表,要求具有一般秒表的功能; 能顯示實(shí)時(shí)時(shí)間,時(shí)間值的變化可采用查詢 8253a 的計(jì)數(shù)器值來(lái)進(jìn)行計(jì)算;按 “1”鍵時(shí),進(jìn)入秒表準(zhǔn)備狀態(tài),再按“2”鍵開(kāi)始秒表計(jì)時(shí)(計(jì)時(shí)單位為 1/
5、100 秒) ,再按“3”鍵時(shí)停止秒表計(jì)時(shí)。秒表計(jì)時(shí)的時(shí)間在數(shù)碼管上顯示;按“4”鍵退出 秒表計(jì)時(shí)狀態(tài),顯示實(shí)時(shí)時(shí)間(從 0 分 0 秒開(kāi)始) 。下圖為各模塊的組合框圖: 8254 時(shí)間 控制模塊 鍵盤(pán)模塊 主 控 制 器 模 塊 并行通信模 塊-8255 led 顯 示模塊 電源模塊 圖 1.1 秒表各模塊的組合框圖 1.2 系統(tǒng)流程論述及工作原理 本系統(tǒng)主要利用對(duì)計(jì)數(shù)器/定時(shí)器多功能接口芯片 8254 裝不同的初值,產(chǎn)生 1/100 秒信號(hào)和 1 秒信號(hào),并送給可編程并行通信接口芯片 8255 作為加 1 信號(hào),再 通過(guò)按鍵和 8255 控制 led 模塊顯示。工作流程圖及子程序流程圖如下
6、所示: 2 圖 1.2 總程序流程圖 n 開(kāi)始 8255 初始化 秒表計(jì)時(shí),aa:1/100s,bb: 秒 8254 重裝初值 時(shí)鐘計(jì)時(shí),aa:秒,bb:分 設(shè)置顯示次數(shù) 調(diào)用顯示 1 調(diào)用清屏 調(diào)用 break 退出程序 顯示次數(shù)=0 ? 是否有“1”鍵按 下按下 n y 8254 初始化,裝計(jì)數(shù)初值 是否有“2”鍵按 下 n y 是否有“3”按 下 調(diào)用顯示 1 n y 是否有“4”按 下 存儲(chǔ)單元清零 n y 3 顯示 1: 圖 1.3 顯示模塊 獲得 tab 的偏移地址 aa 除 10 取余 控制 led 最低位亮 調(diào)用顯示 2 延時(shí) 控制 led 次低位亮 調(diào)用顯示 2,顯示商 延時(shí)
7、 bb 除 10 取余 控制 led 次高位 亮 調(diào)用顯示 2 延時(shí) 控制 led 最高位亮 調(diào)用顯示 2,顯示商 延時(shí) 返回 4 break: 圖 1.4 退出程序流程圖 圖 1.5 延時(shí)子程序 清屏:實(shí)現(xiàn)向 8255_a 輸送 00h,清除以前顯示的數(shù)字,使其黑屏。 從總流程圖可以看出,當(dāng)操作者按下“1”鍵時(shí),秒表進(jìn)入準(zhǔn)備狀態(tài),等待“2” 鍵的按下,當(dāng)“2”鍵按下時(shí),8254 初始化,開(kāi)始產(chǎn)生 1/100 秒信號(hào),并將該信號(hào)送 給 8255 的 c 口的 pc0 位,8255 不斷對(duì) pc0 位進(jìn)行檢測(cè),檢測(cè)到上升沿時(shí),8255 計(jì)數(shù) 器 0 加 1,同時(shí) 8255 檢測(cè)鍵盤(pán)是否有“3”鍵
8、按下,若有鍵按下,8255a 口就將秒表 計(jì)時(shí)的數(shù)據(jù)送給 led 顯示,以此來(lái)實(shí)現(xiàn)秒表的計(jì)時(shí)及顯示功能。 顯示完后,等待“4”鍵的按下進(jìn)入后面的程序,當(dāng)“4”鍵按下時(shí),8254 重裝初值, 產(chǎn)生 1 秒信號(hào),8255 不斷對(duì) pc0 位進(jìn)行檢測(cè),檢測(cè)的方式,是檢測(cè)上升沿,當(dāng)檢測(cè) 到上升沿時(shí),8255 計(jì)數(shù)器 0(已清 0)加 1,同時(shí)將時(shí)間送給 led 顯示。這樣完成了 時(shí)鐘的功能。 1.3 系統(tǒng)可行性分析 本實(shí)驗(yàn)的操作都在實(shí)驗(yàn)箱上完成,在實(shí)驗(yàn)箱完好的前提下,各芯片都能正常工作。 根據(jù)設(shè)計(jì)要求,本系統(tǒng)設(shè)計(jì)為以下幾個(gè)基本模塊,即:主控制器模塊,電源模塊, led 顯示模塊,鍵盤(pán)模塊,信號(hào)產(chǎn)生模塊
9、和計(jì)時(shí)器模塊。 其中各模塊的主要功能和相互之間的關(guān)系如下: (1)控制器模塊 是電子交警的核心,它連接其它各個(gè)模塊,完成計(jì)算、控制、存儲(chǔ)、接口等功能。 6 號(hào)功能調(diào) 用 鍵盤(pán)是否有鍵按下 返回 n y 程序結(jié)束 5 (2)電源模塊 是獨(dú)立的直流電源系統(tǒng),為整個(gè)系統(tǒng)供電。 (3)led 顯示模塊 完成顯示功能,由 8255 的 a 口將數(shù)據(jù)送給其顯示。 (4)信號(hào)產(chǎn)生模塊 利用 8254,根據(jù)宋的初值不同,產(chǎn)生 1/100 秒信號(hào)和 1 秒信號(hào)。 (5)計(jì)時(shí)器模塊 利用 8255,通過(guò)對(duì) pc0 位的檢測(cè)產(chǎn)生秒表計(jì)時(shí)和時(shí)鐘的功能。 以上功能的各個(gè)模塊相互連接,相互配合,完成秒表計(jì)時(shí)和時(shí)鐘的功能。
10、是一個(gè) 結(jié)構(gòu)清晰,思路分明,模塊化設(shè)計(jì)完整的秒表設(shè)計(jì)方案。 6 二、單元電路設(shè)計(jì)與分析 2.1 硬件電路設(shè)計(jì) y1 dp a x1x2x3x4 y2 xa0 xiow xior ioy2 xa1 xd0 d7 pb7 8255 d0 pb0 a1 a0 pa0 wr rd cs pa7 pc7 pc0 xd7 仿仿 真真 總總 線線 接接 口口 鍵盤(pán) l e d l e d l e d l e d 10khz xa0 xiow xior ioy2 xa1 xd7 d0 8254 d7 a1 out0 a0 clk0 wr rd gate0 cs xd0 pc0 仿仿 真真 總總 線線 接接 口
11、口 +5v 圖 2.1 硬件電路設(shè)計(jì)圖 7 2.2 器件選擇與簡(jiǎn)介 2.2.1 可編程計(jì)數(shù)器/定時(shí)器芯片 8254a 1. 8254a 變成結(jié)構(gòu)和外部信號(hào) 圖 2.2 8254 編程結(jié)構(gòu) 8 圖 2.3 8254 外部信號(hào) 2. 編程命令和工作模式 編程原則:(1)設(shè)置初值錢(qián)必須先寫(xiě)控制字;(2) 初值設(shè)置要符合控制字中 的格式規(guī)定;(3)要讀取計(jì)數(shù)器的當(dāng)前值和狀態(tài)字,必須用控制字先鎖定,才能讀 取。 編程命令有兩類(lèi): (1)讀出命令; 讀計(jì)數(shù)器計(jì)數(shù)值; 讀狀態(tài)寄存器值(只對(duì) 8254) ; (2)寫(xiě)入命令; 模式設(shè)置控制字命令; 讀出控制字(鎖存命令); 設(shè)置計(jì)數(shù)初始值。 工作模式(六種)
12、(1) 模式 0計(jì)數(shù)結(jié)束產(chǎn)生中斷 性質(zhì):寫(xiě)入控制字,out 端為低電平,計(jì)數(shù)初值裝入該計(jì)數(shù)器后,等待到 gate 輸入高電平時(shí),計(jì)數(shù)器開(kāi)始遞減計(jì)數(shù)。在整個(gè)計(jì)數(shù)過(guò)程中,out 保持低電平,當(dāng)計(jì)數(shù) 器減為 0 時(shí),out 輸出高電平,并且一直保持高電平,除非寫(xiě)入新的計(jì)數(shù)值。 (2) 模式 1 可編程的單穩(wěn)態(tài)觸發(fā)器 性質(zhì):寫(xiě)入控制字,out 端為高電平,計(jì)數(shù)初值裝入該計(jì)數(shù)器后,在 gate 信號(hào) 的上升沿后的下一個(gè) clk 脈沖的下降沿開(kāi)始計(jì)數(shù),out 變?yōu)榈碗娖?。在整個(gè)計(jì)數(shù)過(guò)程 中,out 保持低電平,當(dāng)計(jì)數(shù)器減為 0 時(shí),out 變?yōu)楦唠娖?,輸出一個(gè)單脈沖,若 d7d0 a1 a0 wr# rd
13、# clk0 gate0 out0 clk1 gate1 out1 clk2 gate2 out2 通道 0 db 通道 1 cs# 通道 2 a2 a1 iow# ior# 片選信號(hào) 9 gate 信號(hào)再由低變高,可再產(chǎn)生一個(gè)單脈沖,相當(dāng)一個(gè)單穩(wěn)態(tài)。 (3) 模式 2分頻器 性質(zhì): 寫(xiě)入控制字,out 端為高電平,計(jì)數(shù)初值寫(xiě)入計(jì)數(shù)器后,等待到觸發(fā)信 號(hào)時(shí),計(jì)數(shù)器開(kāi)始遞減計(jì)數(shù)。減到 1,out 端變成低電平,經(jīng)過(guò)一個(gè)時(shí)鐘脈沖 out 端 又變?yōu)楦唠娖剑缓箝_(kāi)始一個(gè)新的計(jì)數(shù)過(guò)程,重復(fù)進(jìn)行。 (4) 模式 3方波發(fā)生器 性質(zhì):cpu 寫(xiě)入控制字后 out 變高,寫(xiě)完計(jì)數(shù)初值并受觸發(fā)后,開(kāi)始減 1
14、計(jì)數(shù), 輸出保持高電平。當(dāng)計(jì)到一半計(jì)數(shù)值時(shí),輸出變低,直到計(jì)數(shù)到 0,輸出又變?yōu)楦撸?重新開(kāi)始計(jì)數(shù)。 (5) 模式 4軟件觸發(fā)的選通信號(hào)發(fā)生器 性質(zhì): 寫(xiě)入控制字,out 端為高電平,寫(xiě)入計(jì)數(shù)初值,gate 為高電平,開(kāi)始計(jì) 數(shù),計(jì)數(shù)器計(jì)到 0 時(shí),out 變?yōu)榈碗娖剑?jīng)過(guò)一個(gè) clk 脈沖周期,out 又變高,計(jì)數(shù) 器停止計(jì)數(shù),只有寫(xiě)入新計(jì)數(shù)值才能開(kāi)始新的計(jì)數(shù)。 (6) 模式 5硬件觸發(fā)的選通信號(hào)發(fā)生器 性質(zhì):寫(xiě)入控制字,out 變高,寫(xiě)入計(jì)數(shù)初值后,由 gate 信號(hào)的上升沿觸發(fā)開(kāi) 始計(jì)數(shù)。計(jì)到 0 后,out 變?yōu)榈碗娖?。?jīng)一個(gè) clk 周期后,out 又變?yōu)楦唠娖?,并?止計(jì)數(shù),等下次
15、 gate 觸發(fā)才能再計(jì)數(shù)。 2.2.2 可編程并行接口芯片 8255a 1.8255a 內(nèi)部結(jié)構(gòu)和引腳信號(hào) 圖 2.4 8255 內(nèi)部結(jié)構(gòu) 10 圖 2.5 8255a 引腳信號(hào) 2. 8255a 的控制字 控制字分為兩類(lèi): (1)各端口的方式選擇控制字; 圖 2.6 8255a 的方式選擇控制字 11 (2)c 端口按位置 1/置 0 控制字。 圖 2.7 端口 c 置 1/置 0 控制字 12 三、軟件編程與調(diào)試 3.1 技術(shù)問(wèn)題 軟件編程中一開(kāi)始我們實(shí)時(shí)時(shí)鐘顯示模塊不對(duì),它到了 60 秒的時(shí)候沒(méi)有清零, 而是繼續(xù)加直到 100 才清的的零,而且秒表記錄的時(shí)間也不對(duì)。經(jīng)過(guò)反復(fù)檢查和請(qǐng)教
16、老師,最終找到寄存器不清零的錯(cuò)誤原因是寄存器重復(fù)利用,在很多子程序都被反復(fù) 用到了,導(dǎo)致計(jì)數(shù)值混亂,沒(méi)有在記到 60 秒或 60 分的時(shí)候清零;而秒表記錄時(shí)間誤 差大的原因是計(jì)數(shù)器 8254 芯片的初值送錯(cuò)了,我們直接送的是 100,但是 pc 機(jī)上把 100 當(dāng)做的是十六進(jìn)制的數(shù),所以導(dǎo)致秒表計(jì)時(shí)發(fā)生偏差。 3.2 調(diào)試結(jié)果 經(jīng)過(guò)多次試驗(yàn),我們?cè)跀?shù)據(jù)段上定義一個(gè)存儲(chǔ)單元,把用來(lái)計(jì)數(shù)的存儲(chǔ)器改成了 存儲(chǔ)單元。這樣就使得計(jì)數(shù)時(shí)數(shù)據(jù)不會(huì)混亂,清零問(wèn)題得到解決。對(duì)于秒表計(jì)數(shù)出現(xiàn) 偏差的問(wèn)題,我們把 100 改成 0100h,這樣秒表計(jì)數(shù)也正確了。 data segment tab db 0fch,6
17、0h,0dah,0f2h,66h,0b6h,0beh,0e0h,0feh,0f6h aa db 00h bb db 00h ll db 00h data ends code segment assume cs:code,ds:data ;定義存儲(chǔ)單元 a1: ;a1,a2 合起來(lái)檢測(cè)上升沿 mov dx,my8255_c in al,dx ;讀取 8255c 口的值 test al,01h ;檢測(cè)第 0 位的值 jnz a1 ;不為 0,返回 a1 a2: in al,dx ;讀取 8255c 口的值 test al,01h ;檢測(cè)第 0 位的值 jz a2 ;為 0,返回 a1 inc aa
18、 ;有上升沿(即 1/100s 信號(hào)) ,存儲(chǔ)單元加 1 cmp aa,100 ;比較,判斷是否加到了 100 jnz ting ;沒(méi)加到 100,跳到 ting mov aa,0 ;加到 100,1/100s 計(jì)數(shù)置 0 inc bb ;秒存儲(chǔ)單元加 1 cmp bb,100 ;判斷秒是否加到 100 jnz ting ;沒(méi)加到 100,跳到 ting mov bb,0 ;秒存儲(chǔ)單元置 0 13 jmp a1 ;跳轉(zhuǎn)到 a1 繼續(xù)檢測(cè) 1/100s 信號(hào) 四、結(jié)束語(yǔ) 4.1 改進(jìn)分析 我們的程序仍有可以改進(jìn)的地方,比如:實(shí)時(shí)時(shí)鐘的顯示模塊,我們的程序是讓 時(shí)鐘從 00:00:00 開(kāi)始計(jì)時(shí)的
19、。在這方面我們可以把 pc 機(jī)上的時(shí)間下載到箱試驗(yàn)上, 讓七段數(shù)碼管上顯示的是當(dāng)時(shí)的準(zhǔn)確時(shí)間。 4.2 實(shí)驗(yàn)總結(jié) 開(kāi)始做設(shè)計(jì)時(shí)總是會(huì)犯一些錯(cuò)誤,只有經(jīng)過(guò)不停的改錯(cuò)不停的編譯得到正確的程 序說(shuō)明了作為軟件編程人員是不能粗心大意的,一個(gè)程序的質(zhì)量的高低與你細(xì)心與否 有著一定的聯(lián)系。在編程時(shí),我充分使用了結(jié)構(gòu)化的思想,這樣程序檢查起來(lái)也比較 方便,調(diào)試時(shí)也給了我很大方便,只要一個(gè)模塊一個(gè)模塊的進(jìn)行調(diào)就可以了,充分體 現(xiàn)了結(jié)構(gòu)化編程的優(yōu)勢(shì)。在設(shè)計(jì)中要求我要有耐心和毅力,還要細(xì)心,稍有不慎,一 個(gè)小小的錯(cuò)誤就會(huì)導(dǎo)致結(jié)果的不正確,而對(duì)錯(cuò)誤的檢查要求我要有足夠的耐心,通過(guò) 這次設(shè)計(jì)和設(shè)計(jì)中遇到的問(wèn)題,也積累
20、了一定的經(jīng)驗(yàn),對(duì)以后從事集成電路設(shè)計(jì)工作 會(huì)有一定的幫助。 在應(yīng)用匯編語(yǔ)言的過(guò)程中讓我真正領(lǐng)會(huì)到了其并行運(yùn)行與其他軟件順序執(zhí)行的差 別及其在電路設(shè)計(jì)上的優(yōu)越性。用匯編描述語(yǔ)言的形式來(lái)進(jìn)行秒表系統(tǒng)的設(shè)計(jì)方便靈 活,利用實(shí)驗(yàn)箱仿真極大地減少了電路設(shè)計(jì)時(shí)間和可能發(fā)生的錯(cuò)誤,降低了開(kāi)發(fā)成本, 這種設(shè)計(jì)方法在秒表系統(tǒng)設(shè)計(jì)中發(fā)揮越來(lái)越重要的作用。 14 附 錄 元器件明細(xì)表 符號(hào)名稱(chēng)型號(hào) 參數(shù)數(shù)量備注 8255 并行接口 d8255ac-2 1 個(gè)并行傳輸 8254 計(jì)數(shù)器/定時(shí)器 d8254c-2 1 個(gè)計(jì)數(shù)功能 電路原理圖 y1 dp a x1x2x3x4 y2 xa0 xiow xior ioy2
21、xa1 xd0 d7 pb7 8255 d0 pb0 a1 a0 pa0 wr rd cs pa7 pc7 pc0 xd7 仿仿 真真 總總 線線 接接 口口 鍵盤(pán) l e d l e d l e d l e d 15 10khz xa0 xiow xior ioy2 xa1 xd7 d0 8254 d7 a1 out0 a0 clk0 wr rd gate0 cs xd0 pc0 仿仿 真真 總總 線線 接接 口口 +5v 源程序清單 my8254_count0 equ 9840h my8254_count1 equ 9841h my8254_count2 equ 9842h my8254_
22、mode equ 9843h my8255_a equ 9860h my8255_b equ 9861h my8255_c equ 9862h my8255_mode equ 9863h data segment tab db 0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0h,0feh,0f6h aa db 00h bb db 00h ll db 00h data ends code segment assume cs:code,ds:data start: mov ax,data 16 mov ds,ax mov dx,my8255_mode mov al,89h
23、;8255 初始化,a 口輸出,工作在方式 0 下;b 口輸出, 工作在方式 0 下;c 口輸入 out dx,al jiance1: call break ;按任意鍵退出,防止程序在以下的程序進(jìn)入死循 環(huán)沒(méi)法退出 mov dx,my8255_b mov al,0eh out dx,al ;開(kāi)放 x1 那一列開(kāi)關(guān) call dally ;等待 y1y2 的檢測(cè) mov dx,my8255_c in al,dx ;c 口高四位的低兩位讀取 y1,y2 的按鍵情況 and al,30h ;取 c 口高四位的低兩位 cmp al,20h ;檢測(cè) y1 行按鍵情況 jnz jiance1 ;x1y1(
24、即“1”鍵)沒(méi)有按下返回 jiance1 jiance2: mov dx,my8255_b mov al,0dh out dx,al ;開(kāi)放 x2 那一列開(kāi)關(guān) call dally ;等待 y1y2 的檢測(cè) mov dx,my8255_c in al,dx ;c 口高四位的低兩位讀取 y1,y2 的按鍵情況 and al,30h ;取 c 口高四位的低兩位 cmp al,20h ;檢測(cè) y1 行按鍵情況 jnz jiance2 ;x2y1(即“2”鍵)沒(méi)有按下返回 jiance2 chuzhi: mov al, 35h mov dx, my8254_mode out dx, al ;8254
25、初始化,選擇計(jì)數(shù)器 0;先讀/寫(xiě)高 8 位,再讀 /寫(xiě)低 8 位;工作在模式 2 下;計(jì)數(shù)初值為 bcd 碼格式 mov ax, 0100h ;存計(jì)數(shù)初值 100,產(chǎn)生 1/100s 信號(hào) mov dx, my8254_count0 out dx, al ; 送低字節(jié)到計(jì)數(shù)器 0 mov al, ah out dx, al ; 送高字節(jié)到計(jì)數(shù)器 0 a1: ;a1,a2 合起來(lái)檢測(cè)上升沿 mov dx,my8255_c in al,dx ;讀取 8255c 口的值 test al,01h ;檢測(cè)第 0 位的值 17 jnz a1 ;不為 0,返回 a1 a2: in al,dx ;讀取 825
26、5c 口的值 test al,01h ;檢測(cè)第 0 位的值 jz a2 ;為 0,返回 a1 inc aa ;有上升沿(即 1/100s 信號(hào)) ,存儲(chǔ)單元加 1 cmp aa,100 ;比較,判斷是否加到了 100 jnz ting ;沒(méi)加到 100,跳到 ting mov aa,0 ;加到 100,1/100s 計(jì)數(shù)置 0 inc bb ;秒存儲(chǔ)單元加 1 cmp bb,100 ;判斷秒是否加到 100 jnz ting ;沒(méi)加到 100,跳到 ting mov bb,0 ;秒存儲(chǔ)單元置 0 jmp a1 ;跳轉(zhuǎn)到 a1 繼續(xù)檢測(cè) 1/100s 信號(hào) ting: call break mo
27、v dx,my8255_b mov al,0bh out dx,al ;開(kāi)放 x3 那一列開(kāi)關(guān) call dally mov dx,my8255_c in al,dx ;讀 c 口的值 and al,30h cmp al,20h ;檢測(cè) y1 行的按鍵情況 jnz a1 ;x3y1(即“3”)鍵沒(méi)按下,返回 ting 繼續(xù)檢測(cè) call break m1: call xianshi1 ;調(diào)用顯示子程序顯示秒表的計(jì)數(shù)值 jiance3: mov dx,my8255_b mov al,07h out dx,al ;開(kāi)放 x4 那一列開(kāi)關(guān) call dally mov dx,my8255_c in
28、al,dx ;讀 c 口的值 and al,30h cmp al,20h ;檢測(cè) y1 行的按鍵情況 jnz m1 ;x4y1(即“4”)鍵沒(méi)按下,返回 jiance3 繼續(xù)檢測(cè) mov aa,0 ;清 0 mov bb,0 ;清 0 call clear ;清除 led 的顯示情況 18 chuzhi1: mov al, 35h mov dx, my8254_mode out dx, al ;8254 初始化,選擇計(jì)數(shù)器 0;先讀/寫(xiě)高 8 位,再 讀/寫(xiě)低 8 位;工作在模式 2 下;計(jì)數(shù)初值為 bcd 碼格式 mov ax, 0 ;重裝計(jì)數(shù)初值 100000,產(chǎn)生 1s 信號(hào) mov d
29、x, my8254_count0 out dx, al ; 低字節(jié)送計(jì)數(shù)器 0 mov al, ah out dx, al ; 高字節(jié)送計(jì)數(shù)器 0 b1: ;b1 和 b2 合起來(lái)檢測(cè) 1s 信號(hào) mov ll,0 ;存儲(chǔ)單元清 0,存顯示次數(shù),用于穩(wěn)定顯示 mov dx,my8255_c in al,dx ;讀 8255 的 c 口的值 test al,01h ;檢測(cè)第 0 位 jnz b1 ;不為 0,返回 b1 繼續(xù)檢測(cè) b2: mov dx,my8255_c in al,dx ;再讀 8255 的 c 口的值 test al,01h ;檢測(cè)第 0 位 jz b2 ;為 0,返回 b2
30、繼續(xù)檢測(cè) inc aa ;有上升沿,秒存儲(chǔ)單元 aa 加 1 cmp aa,60 ;是否加到 60s jnz c1 ;沒(méi)有加到 60s,跳到 c1 mov aa,0 ;有 60s,秒存儲(chǔ)單元 aa 置 0 inc bb ;分存儲(chǔ)單元 bb 加 1 cmp bb,60 ;分是否加到 60 jnz c1 ;沒(méi)加到 60,跳到 c1 mov bb,0 ;到 60,分置 0 c1: inc ll ;顯示次數(shù)加 1 call xianshi1 call break ;顯示完后按任意鍵退出 cmp ll,9fh ;是否達(dá)到顯示的次數(shù) jnz c1 jmp b1 ;一個(gè)數(shù)顯示完畢,返回 c1 繼續(xù)計(jì)時(shí) xianshi1: ;取出 aa 和 bb 中的每一位 mov di,offset tab ;獲得數(shù)字表的偏移地址 mov al,aa 19 mov ah,0 mov ch,10 div ch ;除 10,分離 aa 的兩位數(shù) mov ch,al ;保存商(即 aa 的高四位) mov dx,my8255_b mov al,0f7h out dx,al ;8255_b 控制 led 的最低位亮 call xianshi2 ;調(diào)用顯示 2,顯示 aa 低 4 位數(shù)字 call dally mov ah,ch ;取出商 mov dx,my8255_b mov al,0fbh out d
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度技術(shù)合作項(xiàng)目終止及解除合同書(shū)
- 2025年度農(nóng)村水井承包合同與農(nóng)業(yè)灌溉用水權(quán)流轉(zhuǎn)及監(jiān)管協(xié)議
- 2025年度特殊年齡段勞動(dòng)者用工協(xié)議及權(quán)益保障
- 2025年度個(gè)體商戶勞動(dòng)合同(家政服務(wù)行業(yè)合作)
- 5G通信借款居間合同模板
- 2025年度分紅股收益確認(rèn)與分配協(xié)議
- 2025年度影視作品著作權(quán)許可及廣告植入合作合同
- 2025年度分手協(xié)議書(shū)模板:分手后共同債務(wù)承擔(dān)協(xié)議
- 2025年度房屋拆除與建筑垃圾清運(yùn)一體化服務(wù)合同
- 2025年度企業(yè)導(dǎo)師帶徒技能傳承服務(wù)協(xié)議
- 2025年湖南現(xiàn)代物流職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 第二十章手術(shù)減肥及體形塑造美容手術(shù)美容外科學(xué)概論講解
- 2025年蘇州衛(wèi)生職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 履帶式剪叉高空作業(yè)平臺(tái)安全操作規(guī)程
- 《水稻育秧技術(shù)新》課件
- 2024-2025年第一學(xué)期初中德育工作總結(jié)
- 圍手術(shù)期手術(shù)患者護(hù)理要點(diǎn)
- 2025年大連長(zhǎng)興開(kāi)發(fā)建設(shè)限公司工作人員公開(kāi)招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 貨物學(xué) 課件1.3貨物的計(jì)量
- 《鈉離子電池用電解液編制說(shuō)明》
- 全球醫(yī)療旅游經(jīng)濟(jì)的現(xiàn)狀與未來(lái)趨勢(shì)
評(píng)論
0/150
提交評(píng)論