匯編語(yǔ)言與接口技術(shù)實(shí)驗(yàn)_第1頁(yè)
匯編語(yǔ)言與接口技術(shù)實(shí)驗(yàn)_第2頁(yè)
匯編語(yǔ)言與接口技術(shù)實(shí)驗(yàn)_第3頁(yè)
匯編語(yǔ)言與接口技術(shù)實(shí)驗(yàn)_第4頁(yè)
匯編語(yǔ)言與接口技術(shù)實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩74頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、匯編語(yǔ)言與接口技術(shù)實(shí)驗(yàn)課件第1頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四匯編語(yǔ)言調(diào)試環(huán)境使用說(shuō)明 利用Editplus和匯編相關(guān)軟件建立起基于Windows-XP平臺(tái)的匯編語(yǔ)言集成調(diào)試環(huán)境,對(duì)我們學(xué)習(xí)匯編語(yǔ)言、開發(fā)匯編軟件將十分方便,它將我們學(xué)習(xí)匯編程序時(shí)的編輯、編譯、調(diào)試等工具集成于一體。一、Editplus的安裝和必要設(shè)置: 1、將壓縮軟件“EDITPLUS.RAR”解壓到c:EDitPLUS目錄下 2、用鼠標(biāo)點(diǎn)擊圖標(biāo): 安裝EDITPLUS到C:EDITPLUS目錄下。 3、用鼠標(biāo)點(diǎn)擊圖標(biāo): 完成注冊(cè)碼的輸入。 4、將壓縮軟件“MASM615.RAR”解壓到c:EDitPL

2、US目錄下,即完成安裝。 5、用鼠標(biāo)雙擊桌面上的圖標(biāo): 或選開始程序EDITPLUS EDITPLUS 2 ,出現(xiàn)如下界面:第2頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四文件夾下的源程序列表(匯編程序文件的后綴為ASM或SRC)選擇用戶編程文件夾用戶程序編輯區(qū)輸出窗口文件列表中文件名后綴第3頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四每個(gè)窗口的大小可由鼠標(biāo)進(jìn)行縮放輸出窗口可由鼠標(biāo)控制進(jìn)行縮放,其他窗口同樣第4頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四安裝Editplus主要菜單的設(shè)置第一次安裝Editplus必須進(jìn)行必要的設(shè)置 第5頁(yè),共79頁(yè),2022

3、年,5月20日,8點(diǎn)48分,星期四首先對(duì)“文件” 中的“設(shè)置與語(yǔ)法”規(guī)則進(jìn)行設(shè)置 匯編程序文件名的后綴一般為“asm”或“src”為“匯編語(yǔ)言”添加文件類型第6頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四其次對(duì)“文件” 中的“模板”進(jìn)行設(shè)置為“匯編語(yǔ)言”添加模板匯編語(yǔ)言模板的文件名第7頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四設(shè)置用戶工具用戶工具應(yīng)添加:編譯(匯編)工具調(diào)試工具 幫助文件(可選)請(qǐng)記?。壕幾g(匯編)工具的參數(shù)設(shè)置第8頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四請(qǐng)記住:調(diào)試工具的參數(shù)設(shè)置第9頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星

4、期四幫助文件根據(jù)需要顆可選第10頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四以上設(shè)置完成后關(guān)閉Editplus ,重新啟動(dòng)Editplus,即可以對(duì)匯編語(yǔ)言程序進(jìn)行編輯、編譯、調(diào)試及運(yùn)行第11頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四從源程序列表中打開要編輯、調(diào)試的文件第12頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四主要菜單的使用對(duì)源程序的編譯和連接對(duì)目標(biāo)程序的調(diào)試幫助文件第13頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四源程序調(diào)試軟件的使用 源程序窗口寄存器窗口命令行窗口第14頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四源程序調(diào)

5、試工具常用命令介紹窗口介紹:源程序調(diào)試工具的窗口共有十個(gè): 0Help ALT+0 1. Locals ALT+1 2. Watch ALT+2 3. Source1 ALT+3() 4. Source2 ALT+4 5. Memory1 ALT+5( ) 6. Memory2 ALT+6 7. Register ALT+7() 8. 8087 ALT+8 9. Command ALT+9()用鼠標(biāo)點(diǎn)擊Windows菜單可看到這10個(gè)窗口,要打開某個(gè)窗口,用鼠標(biāo)選擇對(duì)應(yīng)項(xiàng)即可。激活窗口: 將鼠標(biāo)移動(dòng)到當(dāng)前窗口并點(diǎn)擊鼠標(biāo)左鍵,此時(shí)該窗口邊框變亮,表明當(dāng)前窗口被激活。移動(dòng)窗口: 將鼠標(biāo)放在被激活窗

6、口左邊框線或上邊框線上,并按住鼠標(biāo)左鍵移動(dòng)鼠標(biāo),則可移動(dòng)當(dāng)前窗口的位置。關(guān)閉窗口: 將鼠標(biāo)放在被激活窗口的左上方邊框 “”處,單擊鼠標(biāo)左鍵則關(guān)閉當(dāng)前窗口。第15頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四功能鍵:F2:寄存器窗口的開/關(guān)F3:在源程序方式和匯編方式之間切換F4:切換到輸出屏幕F5:執(zhí)行到下一個(gè)斷點(diǎn)或到程序結(jié)束(沒斷點(diǎn))F6:激活各調(diào)試窗口F7:在光標(biāo)所在行設(shè)置一個(gè)臨時(shí)斷點(diǎn),并執(zhí)行到該行F8:執(zhí)行跟蹤命令F9:在光標(biāo)所在行設(shè)置或清除一個(gè)斷點(diǎn)(雙擊鼠標(biāo)左鍵功能相同)F10:執(zhí)行Program Step命令PgUp:上卷一頁(yè)P(yáng)gDn:下卷一頁(yè)Home:上卷到文件或命令緩沖

7、區(qū)頂部End: 下卷到文件或命令緩沖區(qū)底部命令行常用命令的使用:T :相當(dāng)于F8 P :相當(dāng)于F10G :相當(dāng)于F5 D type :顯示內(nèi)存內(nèi)容E type :修改內(nèi)存內(nèi)容R 寄存器名 :顯示并修改寄存器內(nèi)容Q :退出調(diào)試工具第16頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四實(shí)驗(yàn)一 BCD碼的運(yùn)算 一實(shí)驗(yàn)?zāi)康?1.熟悉在Ediplus集成環(huán)境下編輯、編譯、調(diào)試編語(yǔ)言程序的全過(guò)程。 2.掌握匯編語(yǔ)言程序結(jié)構(gòu)中數(shù)據(jù)段、堆棧段、代碼段定義及內(nèi)存分配方法。 3.學(xué)會(huì)源程序調(diào)試工具主要命令的使用方法。 4.掌握用組合BCD碼表示數(shù)據(jù)的方法,并熟悉其加、減、乘、除運(yùn)算。二實(shí)驗(yàn)內(nèi)容 1.多位十

8、進(jìn)制數(shù)加法。 2.兩位十進(jìn)制數(shù)乘法。三實(shí)驗(yàn)要求 1.多位十進(jìn)制數(shù)加法:在內(nèi)存中以DATA1和DATA2為首址,各分配5個(gè)字節(jié)單元,分別存入兩個(gè)8位組合BCD碼數(shù)據(jù)(低位在前),將兩數(shù)相加,結(jié)果送回到DATA2處。 2.兩位十進(jìn)制數(shù)乘法:將被乘數(shù)和乘數(shù)以組合BCD碼形式分別存放于DATA1和DATA2定義的字節(jié)單元中,經(jīng)乘法運(yùn)算,乘積存入DATA3定義的兩個(gè)內(nèi)存單元中。 3.用匯編調(diào)試工具查看運(yùn)算結(jié)果,進(jìn)行手工驗(yàn)證;并且用匯編調(diào)試工具中的相關(guān)修改DATA1和DATA2 ,并重新執(zhí)行。第17頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四關(guān)于BCD碼擴(kuò)充知識(shí)Intel 助記符使用術(shù)語(yǔ) “A

9、SCII” 稱作不壓縮的BCD碼,而使用“十進(jìn)制數(shù)”則稱為壓縮BCD碼。不壓縮的BCD碼 不壓縮的BCD碼由在每一個(gè)字節(jié)的低四位包含一個(gè)十進(jìn)制數(shù)字的字節(jié)組成, Intel系列處理器提供了調(diào)整不壓縮值的四種算術(shù)操作指令: 加法操作后調(diào)整 AAA ; Ascii Adjust for Addition 減法操作后調(diào)整 AAS ; Ascii Adjust for Subtraction 乘法操作后調(diào)整 AAM ; Ascii Adjust for Multiply 除法操作后調(diào)整 AAD ; Ascii Adjust for Division 壓縮的BCD碼 壓縮的BCD碼由包含兩個(gè)十進(jìn)制數(shù)字的字

10、節(jié)組成:一個(gè)在高四位,另一個(gè)在低四位,Intel系列處理器提供了對(duì)進(jìn)行加和運(yùn)算的壓縮BCD數(shù)調(diào)整指令: 加法操作后調(diào)整 DAA ; Decimal Adjust for Addition 減法操作后調(diào)整 DAS ; Decimal Adjust for Subtraction 今天實(shí)驗(yàn)所講的“BCD碼的運(yùn)算 ”是指壓縮BCD碼的運(yùn)算。 搞清計(jì)算機(jī)中壓縮BCD碼、十六進(jìn)制碼的概念舉例: 在內(nèi)存中定義了兩個(gè)數(shù)據(jù),分別為data1=78H、data2=78H,其中data1 為組合的BCD碼,data2為16進(jìn)制數(shù),則有: data1的十進(jìn)制、十六進(jìn)制為:78(十進(jìn)制),4EH(十六進(jìn)制) data

11、2的十進(jìn)制、十六進(jìn)制為:120(十進(jìn)制),78H(十六進(jìn)制) 第18頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四多位十進(jìn)制數(shù)加法 .model small .data data1 db 11h,22h,33h,44h,00h data2 db 99h,88h,77h,66h,00h .code .startup mov si,offset data1 ;設(shè)指針 mov di,offset data2 clc ;清進(jìn)位 mov cx,5 ;設(shè)加法次數(shù)lop: mov al,si ;取第一加數(shù) adc al,di ;取第二加數(shù) daa ;十進(jìn)制調(diào)整 mov di,al ;結(jié)果存入指定單

12、元 inc si ;指針加1 inc diloop lop ;循環(huán) .exit end 流程圖:開始SI Data1首址DI Data2首址清進(jìn)位設(shè)加法次數(shù)十進(jìn)制調(diào)整; 部分和回送指向下單元數(shù)AL 第一加數(shù)AL AL+第二加數(shù)CX-1=0?結(jié)束YN第19頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四兩位十進(jìn)制數(shù)乘法: 如34*56=? 編程思路:1. 把56循環(huán)疊加34次;每疊加一次進(jìn)行一次BCD 碼的加法調(diào)整; 2. 34為組合的BCD碼,在計(jì)算機(jī)中的存放形式 為: 00110100b 3. 必須將組合BCD碼34H轉(zhuǎn)換成十六進(jìn)制才可進(jìn) 行循環(huán)疊加: 34H(BCD碼) 30H+4

13、 30H/10H*0AH+4 34(d) 22H 第20頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四兩位十進(jìn)制數(shù)乘法流程圖:開始BL 第一乘數(shù)BH 第一乘數(shù)分離出第一乘數(shù)的“個(gè)位”分離出第一乘數(shù)的“十位”第一乘數(shù)的“十位”移到“個(gè)位”后,再乘 10合成得到16進(jìn)制的第一乘數(shù)CX 16進(jìn)制的第一乘數(shù)BCD碼轉(zhuǎn)換成16進(jìn)制數(shù)11AX 0清進(jìn)位BL 第二乘數(shù)第二乘數(shù)做加法次數(shù)十進(jìn)制調(diào)整AL與AH內(nèi)容交換AL AL+0+CFAL AL+BLAL與AH內(nèi)容交換十進(jìn)制調(diào)整CX-1=0?NY存儲(chǔ)結(jié)果結(jié)束第21頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四一、實(shí)驗(yàn)?zāi)康?掌握循環(huán)結(jié)構(gòu)程序的

14、設(shè)計(jì)、調(diào)試。二、實(shí)驗(yàn)內(nèi)容1多字節(jié)無(wú)符號(hào)數(shù)加法。2設(shè)計(jì)一軟件延時(shí)器,并在屏幕上顯示軟件延時(shí)倒計(jì)時(shí)及正計(jì)時(shí)過(guò)程。3.試編寫一個(gè)程序,延時(shí)大約1秒,在屏幕上按99、98、97、96、00的順序顯示倒計(jì)時(shí)的全過(guò)程。(可選作) 實(shí)驗(yàn)三 循環(huán)結(jié)構(gòu)程序第22頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四三、實(shí)驗(yàn)要求1多字節(jié)無(wú)符號(hào)加法:在DATAS中存放10個(gè)雙字節(jié)無(wú)符號(hào)數(shù), 用循環(huán)結(jié)構(gòu)設(shè)計(jì)程序,通過(guò)程序運(yùn)算,把這10個(gè)雙字節(jié)無(wú)符號(hào)數(shù)相加,其和存入RESULT定義的四個(gè)字節(jié)單元當(dāng)中,要求用16位寄存器完成編程(范例為用32寄存器實(shí)現(xiàn) )。2設(shè)計(jì)一軟件延時(shí)器,并在屏幕上顯示16進(jìn)制(F0)倒計(jì)時(shí)及正計(jì)

15、時(shí)及(0F)過(guò)程。(范例:做一延時(shí)約1秒的軟件延時(shí)器,在屏幕上按9、8、0順序顯示軟件延時(shí)倒計(jì)時(shí)過(guò)程。 ) 對(duì)于“學(xué)號(hào)”為奇數(shù)的同學(xué)在計(jì)算機(jī)屏幕上的顯示如圖1所示。 對(duì)于“學(xué)號(hào)”為偶數(shù)的同學(xué)在計(jì)算機(jī)屏幕上的顯示如圖2所示。3.可參考實(shí)驗(yàn)2的編程完成編程。FEDCBA98765432100123456789ABCDEF0 F E D C B A 9 8 7 6A 5B 4C 3D 2E 1F 0 圖1圖2第23頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四補(bǔ)充知識(shí):關(guān)于循環(huán)語(yǔ)句的高級(jí)語(yǔ)法目前的MASM中引入了一系列的偽指令,涉及條件測(cè)試、分支和循環(huán)語(yǔ)句,有了它們,匯編語(yǔ)言有了和高級(jí)語(yǔ)言

16、一樣的結(jié)構(gòu)。關(guān)于循環(huán)語(yǔ)句的偽指令有: .while 條件測(cè)試表達(dá)式 指令 .break .if 退出.while條件 .continue .endw;- .repeat 指令 .break .if退出.while條件 .continue .until 條件測(cè)試表達(dá)式(或.untilcxz 條件測(cè)試表達(dá)式) 第24頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四通過(guò)今天的實(shí)驗(yàn)應(yīng)順便掌握子程(過(guò)程)序的編寫及調(diào)用子程序結(jié)構(gòu): procedure_name PROC 距離 USES 寄存器列表 LOCAL 局部變量列表 匯編語(yǔ)言指令 RET ;子程序的返回 procedure_name EN

17、DP ;子程序的結(jié)束 距離:NEAR,FAR,NEAR16,NEAR32,FAR16,FAR32。缺省為NEAR USES 寄存器列表:由編譯器在子程序指令開始前自動(dòng)安排PUSH這些寄存器的指令,并在RET前自動(dòng)安排POP指令,用于保護(hù)執(zhí)行環(huán)境。注意在子程序中也可用80386以后的指令PUSHA、POPA、PUSHAD、POPAD也十分方便。 LOCAL 局部變量列表:局部變量列表必須放到子程序中所有匯編語(yǔ)句的最前面。常用的局部變量類型有:byte、word、dword等。 第25頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四擴(kuò)充知識(shí)關(guān)于空操作(NOP)指令 空操作(NOP)是所有指

18、令中最簡(jiǎn)單的,正如它的名字所暗示的那樣:無(wú)論在情況下它什么也不操作。NOP不影響標(biāo)志、寄存器及存儲(chǔ)單元,它僅僅讓指令指針(IP)增加。 NOP有許多用途,如,在你不想重新匯編程序而刪除一條指令時(shí),可以用90H(NOP)來(lái)填充相應(yīng)的單元;又如我們本實(shí)驗(yàn)所用到的,在你要測(cè)試程序的最后一條指令后加入一條NOP指令,然后在此設(shè)置一條斷點(diǎn),以次方便用戶程序的調(diào)試。 當(dāng)然隨著編程水平的提高,還有其他用途,這里不做深入講解。了解DOS下的系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用:系統(tǒng)功能調(diào)用是DOS為方便匯編語(yǔ)言編寫而提供的一組約80個(gè)功能調(diào)用的常用子程序,它分為設(shè)備管理、文件管理和目錄管理等幾類。DOS規(guī)定用軟中斷指令

19、INT 21H 進(jìn)入各功能調(diào)用子程序的總?cè)肟?,再為每個(gè)功能調(diào)用規(guī)定一個(gè)功能號(hào),以便進(jìn)入相應(yīng)各用子程序的入口。系統(tǒng)功能調(diào)用的使用方法:指定的寄存器入口參數(shù)AH調(diào)用功能的功能號(hào)INT 21H第26頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四EX1:從鍵盤輸入單字符 MOV AH,01H ;1號(hào)功能調(diào)用 INT 21H將鍵盤輸入字符的ASCII碼送到 AL。EX2:從鍵盤輸入字符串 BUF DB 10 DUP(?) LEA DX,BUF MOV AH,0AH ;0A號(hào)功能調(diào)用 INT 21H將鍵盤輸入的字符串寫到 RAM 中去,擊回車鍵表示字符串結(jié)束。字符數(shù)與予留空間的關(guān)系為:少補(bǔ)零多丟

20、失。EX3:輸出單字符 MOV DL,M MOV AH,02H; 2號(hào)功能調(diào)用 INT 21H將 DL 中字符從屏幕上顯示出來(lái)。EX4:輸出字符串 BUF DB Thank you MOV DX,OFFSET BUF MOV AH,09H;9號(hào)功能調(diào)用 INT 21H將 指定 RAM 緩沖區(qū)中的字符串從屏幕上顯示出來(lái)。 為字符串結(jié)束符。EX5:直接控制臺(tái)輸入/輸出單字符 MOV DL,0FFH;DL=0FFH時(shí), MOV AH,06H; 6號(hào)功能調(diào)用 INT 21H; 將鍵盤輸入字符 送到 AL 中。 MOV DL,M; DL 0FFH時(shí), MOV AH,06H; 6號(hào)功能調(diào)用 INT 21H

21、; 將 DL 中字符送到 屏幕上顯示。第27頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四多字節(jié)無(wú)符號(hào)數(shù)加法 .MODEL SMALL .586 .DATADATAS DW 1111H,2222H,3333H,4444H,5555H DW 6666H,7777H,8888H,9999H,0AAAAHRESULT DD ?.CODE.STARTUP MOV SI,OFFSET DATAS;設(shè)指針 MOV CX,10;累加次數(shù) MOV EAX,0;清累加器 CLC;清進(jìn)位LOP: MOV BX,SI;取加數(shù)到BX MOVZX EBX,BX ;將BX擴(kuò)展成32位 ADC EAX,EBX;帶

22、進(jìn)位加 INC SI;改指針 INC SI LOOP LOP;循環(huán)加 MOV RESULT,EAX;存結(jié)果 .EXIT END開始SI DATAS的首址CX 累加次數(shù)EAX 0清進(jìn)位BX SI所指加數(shù)將BX擴(kuò)展為32位EAX EAX+EBX+CFSI 指向下一加數(shù)CX-1=0?NY存結(jié)果 結(jié)束第28頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四軟件延時(shí)器.model small.data mydata db 10 dup(20h) num db 39h,0dh,0ah,$.code.startupmov cx,0ah; 設(shè)循環(huán)次數(shù)lop:mov ah,09h;顯示功能調(diào)用lea dx

23、,mydataint 21hcall near ptr delay ;調(diào)用延時(shí)子程序dec num ;修改顯示數(shù)字loop lop nop.exit nopDelay proc near uses cx ;延時(shí)子程序 mov bx,06ffh ;設(shè)第二時(shí)常數(shù)Delay1 : mov cx,0h loop $ ;自身循環(huán)CX次 dec bx ;第二時(shí)常數(shù)減1 jnz delay1 ;不為零循環(huán) retDelay endp end開始CX 循環(huán)次數(shù)字符串顯示功能調(diào)用延時(shí)子程序調(diào)用顯示數(shù)字修改CX-1=0?NY結(jié)束主程序流程:延時(shí)子程序流程:延時(shí)子程序定義BX 第二時(shí)常數(shù)CX 第一時(shí)常數(shù)CX-1=0

24、?NYBX-1BX=0?NY子程序返回子程序結(jié)束關(guān)鍵詞第29頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四實(shí)驗(yàn)四 排序程序 一實(shí)驗(yàn)?zāi)康?1學(xué)習(xí)無(wú)符號(hào)數(shù)比較大小指令; 2掌握多重循環(huán)編程方法; 3掌握匯編語(yǔ)言編寫排序程序的思路和方法。二實(shí)驗(yàn)內(nèi)容 1單字節(jié)無(wú)符號(hào)數(shù)排序。 2去極值濾波。三實(shí)驗(yàn)要求 1單字節(jié)無(wú)符號(hào)數(shù)排序:在DATANUM單元存放雙字節(jié)無(wú)符號(hào)數(shù),表示要排序數(shù)據(jù)的個(gè)數(shù),而從DATAS單元開始存放要排序的單字節(jié)無(wú)符號(hào)數(shù)據(jù),數(shù)據(jù)個(gè)數(shù)至少10個(gè)。程序運(yùn)行之后,這些數(shù)據(jù)按照由大到小的順序仍然存放于DATAS單元開始的單元。 2 去極值濾波:某控制系統(tǒng)為了抗干擾,采用去極值濾波法處理采集

25、數(shù)據(jù),取連 續(xù)6個(gè)A/D采樣值(12位雙字節(jié),低12位),要求去掉最大值和最小值,將 余下4個(gè)數(shù)求平均值,用該平均值代表當(dāng)前時(shí)刻系統(tǒng)狀態(tài)的真值。試編一程序完 成這個(gè)濾波過(guò)程。第30頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四單字節(jié)無(wú)符號(hào)數(shù)排序流程圖:開始數(shù)據(jù)指針 SI 置 0累加器 前數(shù) 前數(shù)與后數(shù)比較前數(shù)后數(shù)? 前、后數(shù)交換數(shù)據(jù)指針 SI 指向下一數(shù)YNCX-1=0?NYYBX-1=0?N結(jié)束CX BXBX 數(shù)據(jù)個(gè)數(shù)-1第31頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四 .model small .data datanum dw 10 datas db 21h,13h

26、,4h,5h,7h,6h,0F9h,20h,9h,11h .code .startup mov bx,datanum ;取數(shù)據(jù)的個(gè)數(shù)到BX dec bx ;BX-1為循環(huán)次數(shù)lop0: mov cx,bx ;設(shè)內(nèi)循環(huán)次數(shù) mov si,0 ;設(shè)置尋址的偏移量SI=0lop:mov al,datassi ;取一個(gè)數(shù)A cmp al,datassi+1 ;取下一個(gè)數(shù)B,比較A和B jbe jh ;若AB,轉(zhuǎn)到JH xchg al,datassi+1 ;若AB,交換A,B mov datassi,aljh: inc si ;偏移量SI+1 loop lop ;CX-10,繼續(xù)內(nèi)循環(huán) dec bx ;

27、CX-1=0,內(nèi)循環(huán)結(jié)束,外循環(huán)次數(shù)BX-1 jnz lop0 ;BX0,繼續(xù)外循環(huán) .exit ;BX=0,排序結(jié)束 end 第32頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四去極值濾波注意與前面程序排序筆筒的地方:此排序?yàn)樽值呐判颍?6位),所以比較為16位數(shù)據(jù)比較,指針的移動(dòng)為兩個(gè)字節(jié)。開始調(diào)排序子程序?qū)?shù)據(jù)進(jìn)行排序?qū)ε磐晷虻臄?shù)據(jù)掐頭去尾求和求均值保存結(jié)果結(jié)束第33頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四.model small.586 .datadatanum db 6datasdw 0123h,0abch,0234h dw 0345h,0456h,0567

28、h .code.startupcall px ;排序mov si,offset datas+2;掐頭去尾送指針mov cx,4 ;送累加次數(shù)clc ;清進(jìn)位mov ax,0 ;取首數(shù)qh:adc ax,si ;累加inc siinc siloop qhshr ax,2 ;除4mov datas,ax ;存結(jié)果到DATAS首位 nop .exit noppxproc near mov bl,datanum ;取字長(zhǎng) dec bl mov bh,0lop0: mov cx,bx ;送比較次數(shù) mov si,0lop:mov ax,datassi ;送前數(shù)cmp ax,datassi+2 ;與后數(shù)比

29、較 jbe jh ;若大于則跳轉(zhuǎn)到j(luò)h xchg ax,datassi+2 ;交換 mov datassi,axjh: inc si inc si loop lopnext: dec bl ;修改比較次數(shù) jz finish jmp lop0finish: nop ;結(jié)束 retpx endp end第34頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四實(shí)驗(yàn)五 分支程序一、實(shí)驗(yàn)?zāi)康?掌握分支程序編程方法,復(fù)雜分支程序的查表法等。二、實(shí)驗(yàn)內(nèi)容 1、 學(xué)生課程成績(jī)分段統(tǒng)計(jì)。 2、 鍵盤及屏幕顯示功能調(diào)用。三、實(shí)驗(yàn)要求 1、 學(xué)生課程成績(jī)分段統(tǒng)計(jì):用一個(gè)字節(jié)表示每個(gè)學(xué)生的學(xué)號(hào),另一個(gè)字節(jié)存放

30、壓縮BCD碼,表示學(xué)生的課程成績(jī)(最低0分,最高99分),規(guī)定當(dāng)課程成績(jī)?yōu)?F0H表示作弊,當(dāng)課程成績(jī)?yōu)?F1H表示缺考,當(dāng)學(xué)生的學(xué)號(hào)為0FFH時(shí)表示學(xué)生成績(jī)統(tǒng)計(jì)的結(jié)束符。學(xué)生成績(jī)?cè)趦?nèi)存的存放形式為“學(xué)號(hào),成績(jī)”,每個(gè)學(xué)生占兩個(gè)字節(jié),從內(nèi)存SCORE為首址開始存放。要求學(xué)生人數(shù)不少于10個(gè),試編程序,按0 9、10 19、20 29、80 89、90 99及作弊、缺考等12種情況把學(xué)生的課程成績(jī)進(jìn)行分段統(tǒng)計(jì),將統(tǒng)計(jì)結(jié)果存入以COUNT為首址的12個(gè)單元中。 2、試編一程序掃描鍵盤,當(dāng)B鍵按下時(shí),在屏幕上顯示09循環(huán)計(jì)數(shù);S鍵按下時(shí)停止計(jì)數(shù);再按B鍵繼續(xù)計(jì)數(shù)過(guò)程。E鍵按下時(shí)退出程序。 3、定義三

31、個(gè)字節(jié)的正數(shù)(A、B、C),判斷是否能構(gòu)成三角形,如能,則顯示“Yes !”,不能,則“No !”。(要構(gòu)成三角形,必須滿足兩邊之和大于第三邊,即:BCA 或ACB 或ABC) *定義三組字節(jié)的正數(shù)(A1、B1、C1),(A2、B2、C2),(A3、B3、C3),請(qǐng)編程序判斷這三組數(shù)據(jù)能否構(gòu)成三個(gè)三角形,將三組數(shù)據(jù)判斷的結(jié)果用“Yes !”或“No !”顯示出來(lái),用來(lái)表示能否構(gòu)成三角形。 4、用DEBUG調(diào)試程序預(yù)置數(shù)據(jù)和查看程序運(yùn)行結(jié)果,以驗(yàn)證程序正確性。 第35頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四分支程序常由比較指令(CMP)和條件轉(zhuǎn)移指令共同實(shí)現(xiàn)。條件轉(zhuǎn)移分帶符號(hào)轉(zhuǎn)移

32、和不帶符號(hào)轉(zhuǎn)移。轉(zhuǎn)移指令的記憶技巧: 字母 含義 J 轉(zhuǎn)移 G 大于(帶符號(hào)比較) L 小于(帶符號(hào)比較) A 高于(無(wú)符號(hào)比較) B 低于(無(wú)符號(hào)比較) E 等于 N 不 應(yīng)注意的問(wèn)題:條件轉(zhuǎn)移的跳轉(zhuǎn)范圍為:+128 -127。選擇合適的轉(zhuǎn)移指令,否則不能轉(zhuǎn)移到一定的程序分支,特別要注意區(qū)分有符號(hào)數(shù)和無(wú)符號(hào)數(shù)的使用條件。要為每個(gè)分支安排的出口,否則導(dǎo)致程序運(yùn)行混亂。在分支較多時(shí),編程時(shí)各個(gè)分支的先后次序應(yīng)與流程圖一致,以減少編程出錯(cuò)的機(jī)會(huì)并便于檢查。在調(diào)試分支程序時(shí),要假設(shè)各種可能的輸入數(shù)據(jù),并沿每個(gè)分支走一邊,以檢查程序的正確性。第36頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期

33、四學(xué)生課程成績(jī)分段統(tǒng)計(jì)開始設(shè)置學(xué)號(hào)、成績(jī)指針取學(xué)號(hào)取成績(jī)是結(jié)束標(biāo)志?取十分位,并將十分值擴(kuò)展為16位送DI,對(duì)DI所指統(tǒng)計(jì)區(qū)段統(tǒng)計(jì)值加1是作弊?是缺考?修改指針CX-1=0?CX 統(tǒng)計(jì)上限作弊統(tǒng)計(jì)區(qū)段統(tǒng)計(jì)值加1缺考統(tǒng)計(jì)區(qū)段統(tǒng)計(jì)值加1結(jié)束YYYYNNNN第37頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四 .model small .586 .data score db 1,10h,2,20h,3,30h,4,40h,5,50h,6,77h,7,70h db 8,80h,9,90h,10h,08,11h,0f0h,12h,0f1h,0ffhcount db 12 dup(?) .cod

34、e .startup mov cx,20 ;送統(tǒng)計(jì)上限 mov si,0 ;SCORE 統(tǒng)計(jì)指針statistic: mov al,scoresi ;取學(xué)號(hào) cmp al,0ffh ;判是否為結(jié)束 je sta_end;轉(zhuǎn)統(tǒng)計(jì)結(jié)束 mov bl,scoresi+1;取成績(jī) cmp bl,0f0h ;是否作弊 je fake;是,轉(zhuǎn)作弊處理 cmp bl,0f1h;是否缺考 je miss;是,轉(zhuǎn)缺考處理 shr bl,4;取十分位 movzx di,bl ;將十分值擴(kuò)展為16位送DI inc countdi ;相應(yīng)區(qū)段統(tǒng)計(jì)值加1down: inc si ;改指針 inc si loop sta

35、tistic;循環(huán)sta_end:nop;結(jié)束 .exitfake: inc count10 ;作弊處理 jmp downmiss: inc count11 ;缺考處理 jmp down end第38頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四鍵盤及屏幕顯示功能調(diào)用開始顯示提示信息置處理指針為“停止”調(diào)延時(shí)、鍵盤掃描程序有鍵動(dòng)?轉(zhuǎn)處理指針處B 鍵?S 鍵?E 鍵?轉(zhuǎn)處理指針處結(jié)束置處理指針為“計(jì)數(shù)”置處理指針為“停止”NYYYYNNN處理指針為“計(jì)數(shù)”處理指針為“停止”計(jì)數(shù)顯示第39頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四延時(shí)、鍵盤掃描程序子程序定義BX 第二時(shí)常數(shù)

36、CX 第一時(shí)常數(shù)CX-1=0?NYBX-1BX=0?NY子程序返回監(jiān)測(cè)鍵動(dòng)有鍵動(dòng)?做鍵動(dòng)標(biāo)志bx=1NY第40頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四.model small.dataMess1 db press b button - count,0dh,0ahmess2 db press s button - stop,0dh,0ahMess3 db press e button - exit,0dh,0ah,$count db 20h,20h,20h,20h,20h,30h,0dh,$.code.startupmov ah,09h;顯示提示信息mov dx,offset m

37、ess1int 21hlea si,stop;設(shè)處理指針scan: call near ptr delay ;調(diào)延時(shí)、鍵掃程序 or bx,bx;判有無(wú)鍵動(dòng) jnz scan1;有鍵動(dòng),轉(zhuǎn)鍵處理 jmp si;無(wú)鍵動(dòng),轉(zhuǎn)當(dāng)前處理程序scan1: cmp al,b ;鍵處理程序 je b_proc cmp al,s je s_proc cmp al,e je e_proc call delay jmp sib_proc: lea si,count_;B鍵處理 jmp scans_proc: lea si,stop;S鍵處理 jmp scane_proc: nop;E鍵處理 nop .exitco

38、unt_: inc count+5;修改顯示數(shù)字 mov al,3ah;比較超限 cmp al,count+5 ja down;若不超限,調(diào)顯示 mov count+5,30h;超限,設(shè)啟始值down: mov ah,09h;顯示功能調(diào)用 lea dx,count int 21h jmp scanstop: jmp scan nopDelay proc near uses cx;延時(shí)子程序 mov bx,380h;設(shè)第二時(shí)常數(shù)delay1: mov cx,0h loop $;自身循環(huán)CX次 mov dl,0ffh;監(jiān)測(cè)鍵動(dòng) mov ah,06h int 21h jnz key_ret ;若有鍵

39、動(dòng),延時(shí)終止,轉(zhuǎn)鍵處理 dec bx;第二時(shí)常數(shù)減1 jnz delay1;不為零循環(huán) jmp delay_retkey_ret: mov bx,1;做鍵動(dòng)標(biāo)志delay_ret: retDelay endp end第41頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四硬件實(shí)驗(yàn)部分本部分共進(jìn)行3次實(shí)驗(yàn),實(shí)驗(yàn)內(nèi)容如下:1 實(shí)驗(yàn)六 并行接口技術(shù)實(shí)驗(yàn) 2 實(shí)驗(yàn)七 8254定時(shí)/計(jì)數(shù)器實(shí)驗(yàn)3 實(shí)驗(yàn)九 A/D轉(zhuǎn)換實(shí)驗(yàn) (下面根據(jù)實(shí)驗(yàn)臺(tái)實(shí)物介紹實(shí)驗(yàn)臺(tái))第42頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四特別說(shuō)明:為了方便實(shí)驗(yàn),實(shí)驗(yàn)臺(tái)設(shè)計(jì)時(shí)已將除片選信號(hào)線(CS)外的所有相關(guān)總線全部連好,

40、并在每一個(gè)實(shí)驗(yàn)電路附近予留有實(shí)驗(yàn)內(nèi)容要求的連線插孔。實(shí)驗(yàn)時(shí)只要將相應(yīng)插孔用單股導(dǎo)線對(duì)應(yīng)相連即可組成完整的實(shí)驗(yàn)電路。在給出的實(shí)驗(yàn)電路圖中,線路所帶小圓圈即表示連線插孔。硬件實(shí)驗(yàn)注意事項(xiàng):1.在實(shí)驗(yàn)臺(tái)確保斷電的條件下,方可連接電路;2.線路連接完成、檢查確認(rèn)沒有錯(cuò)誤后,再開通實(shí)驗(yàn)臺(tái)電源;3.用單股導(dǎo)線連接電路時(shí),要將單股導(dǎo)線線頭整直,并確認(rèn)線頭沒有 斷裂,以防單股導(dǎo)線端頭斷裂在插孔內(nèi),影響下次試驗(yàn)的進(jìn)行;4.實(shí)驗(yàn)完成后,首先關(guān)斷實(shí)驗(yàn)臺(tái)電源,再用手捏住導(dǎo)線的根部,一根一根 拔出,并把導(dǎo)線整好放入實(shí)驗(yàn)箱右邊的線盒內(nèi)并蓋好實(shí)驗(yàn)箱才可離開。5.實(shí)驗(yàn)報(bào)告必須畫出原理框圖,并概述其工作原理。第43頁(yè),共79頁(yè)

41、,2022年,5月20日,8點(diǎn)48分,星期四實(shí)驗(yàn)六 并行接口技術(shù)實(shí)驗(yàn) 一實(shí)驗(yàn)?zāi)康?1.掌握8255A并行接口的基本使用方法。 2.理解數(shù)碼管掃描顯示原理,學(xué)習(xí)數(shù)碼管掃描顯示方法。二實(shí)驗(yàn)內(nèi)容 1.用8255A作為并行接口,從8255A的A口的PA4PA7輸入四個(gè)開關(guān)量, B口通過(guò)74HC573與數(shù)碼管的段位相連(a、b、c、d、e、f、g、dp分別對(duì)應(yīng)B口的PB0、PB1、PB2、PB3、PB4、PB5、PB6、PB7)。試編寫一個(gè)程序,從8255A的A口讀入將這四個(gè)開關(guān)量的值,并根據(jù)其值的大小,通過(guò)8255A的B口連接的數(shù)碼管顯示出相應(yīng)的十六進(jìn)制值,即當(dāng)A口輸入為 “0000 xxxx”時(shí),

42、B口輸出所數(shù)碼管顯示“0”, ,當(dāng)A口輸入為 “1111xxxx”時(shí), B口輸出所數(shù)碼管顯示“F” 。 2.設(shè)8255A的A口B口均為輸出方式, A口通過(guò)ULN2003驅(qū)動(dòng)器接數(shù)碼管的位選端; B口通過(guò)74HC573與數(shù)碼管的段位相連(a、b、c、d、e、f、g、dp分別對(duì)應(yīng)B口的PB0、PB1、PB2、PB3、PB4、PB5、PB6、PB7)。試編一動(dòng)態(tài)掃描程序,讓6個(gè)數(shù)碼管“同時(shí)”點(diǎn)亮,顯示每位學(xué)生自己的學(xué)號(hào)。(參考程序顯示“123456”) 3.參考程序2,編寫一個(gè)倒計(jì)時(shí)程序(延時(shí)約1秒2秒)的軟件延時(shí)器,用兩位LED動(dòng)態(tài)顯示出2F、2E、00倒計(jì)時(shí)過(guò)程。三實(shí)驗(yàn)電路及設(shè)計(jì) 1.實(shí)驗(yàn)電路圖

43、第44頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四第45頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四第46頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四 2.實(shí)驗(yàn)連線(1)邏輯電平開關(guān)輸出孔K1K6對(duì)應(yīng)連接到8255A的PA0PA5;(2)8255A的PB0PB5對(duì)應(yīng)連接到數(shù)碼管的位選端JM1JM6;(3)數(shù)據(jù)總線D0、D1、D2、D3、D4、D5、D6、D7對(duì)應(yīng)連接到數(shù)碼 管的字劃端a、b、c、d、e、f、g、dp;(4)8255A的片選端CS8255連到譯碼控制單元的0E200H - 0E203H;3.8255A的端口地址 PA口:0E200H ,PB 口

44、:0E201H,PC口:0E202H,控制寄存器:0E203H4.數(shù)碼管編碼表 “0”-3FH “1”-06H “2”-5BH “3”-4FH “4”-66H “5”-6DH “6”-7DH “7”-07H “8”-7FH “9”-6FH “A”-77H “B”-7CH “C”-39H “D”-5EH “E”-79H “F”-71H 第47頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四有關(guān)問(wèn)題的說(shuō)明數(shù)碼管(共陰):DPDP共陰地?cái)?shù)字字型碼5不閉合,數(shù)碼管就點(diǎn)不亮第48頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四多個(gè)數(shù)碼管掃描顯示:第49頁(yè),共79頁(yè),2022年,5月20日

45、,8點(diǎn)48分,星期四多個(gè)數(shù)碼管掃描顯示:限流電阻鎖存器JM3、JM2、JM1誰(shuí)為,誰(shuí)連接的數(shù)碼管就顯示鎖存器當(dāng)前鎖存的值所謂掃描顯示是:對(duì)個(gè)數(shù)碼管:.給鎖存器送第個(gè)數(shù)碼管顯示內(nèi)容,而后第個(gè)數(shù)碼管公共端接低,延時(shí).給鎖存器送第個(gè)數(shù)碼管顯示內(nèi)容,而后第個(gè)數(shù)碼管公共端接低,延時(shí).給鎖存器送第個(gè)數(shù)碼管顯示內(nèi)容,而后第個(gè)數(shù)碼管公共端接低,延時(shí)第步后,再?gòu)拈_始,周而復(fù)始。那么, JM3、JM2、JM1是互斥的了!連接數(shù)據(jù)總線D7D0 驅(qū)動(dòng)器第50頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四實(shí)驗(yàn)6-1電路示意圖B口 8255PA3 PA2 PA1 PA0 SK4 SK3 SK2 SK1 開關(guān)74

46、HC573鎖存器限流電阻D-busD7D0SMGLTCS8255PB0-PB7KCPU第51頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四開始初始化8255點(diǎn)亮一位數(shù)碼管讀鍵盤有鍵按下否?讀8255A的A口數(shù)據(jù), 屏蔽高4位查表,得到相應(yīng)的字型碼通過(guò)8255A的B口輸出字型碼到LED顯示結(jié)束第52頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四.model small Cs8255 equ 0E200h ;片選地址CS1p_ctl equ 90h ;8255控制字-A口入,B口出.datatable db 3fh,6h,5bh,4fh,66h ;0,1,2,3,4;字型表 d

47、b 6dh,7dh,07h,7fh,6fh, 77h ;5,6,7,8,9,A db 7ch,39h,5eh,79h,71h ;B,C,D,E,F .code .startup mov dx,cs8255+3 ;8255初始化 mov ax,p_ctl out dx,ax lop: mov ah,06h ;鍵入任意結(jié)束程序的執(zhí)行 mov dl,0ffh int 21h jnz scan_end mov dx,cs825 ;讀開關(guān) in al,dx and al,0fh mov bx,offset table ;讀字型碼 xlat mov dx,cs8255+1 ;B口輸出 out dx,al

48、jmp lop ;循環(huán)掃描 scan_end: .exit end 實(shí)驗(yàn)6-1源程序第53頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四實(shí)驗(yàn) 6.2限流電阻 ULN2003驅(qū)動(dòng)器COMDbusD7D0CS573CS825574HC573鎖存器COMCOMCOMCOMCOMABCDEFGDPA口B口PB0-PB7K1K3K4K5K6K2第54頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四開始初始化查表取顯示數(shù)字字型碼顯示字型碼送鎖存器(輸出)掃描位數(shù)?調(diào)延時(shí)初始掃描位置(顯示數(shù)字)初始掃描位置讀鍵盤有鍵動(dòng)?結(jié)束延時(shí)子程序流程(略)取對(duì)應(yīng)數(shù)碼管字位、并輸出+(下一掃描位置)第5

49、5頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四 .model smallCs8255 equ 0E200h ;片選地址CS1p_ctl equ 80h ;8255控制字-A口輸出,B口輸出.datatable db 3fh,06h,5bh,4fh,66h;0,1,2,3,4 ;字型表 db 6dh,7dh,07h,7fh,6fh;5,6,7,8,9 .code .startup mov dx,cs8255+3 ;發(fā)控制字 mov al,p_ctlout dx,almov cl,1 ;設(shè)掃描位置lop:mov al,cl ;取顯示數(shù)字mov bx,offset table ;讀字型碼

50、xlatmov dx,cs8255+1 ;輸出字型碼out dx,almov al,80h Inc clror al,clmov dx,cs8255 ;輸出字位out dx,alcmp cl,6jbe down ;若顯示位置大于6,返回啟始位置mov cl,1down: call delay mov ah,06 ;判有鍵動(dòng),跳出循環(huán) mov dl,0ffh int 21h jnz scan_end jmp lop ;循環(huán)掃描scan_end: nop .exit nop delay proc near ;延時(shí)子程序 push cx mov bx,02hdelay1: mov cx,0h loo

51、p $ dec bx jnz delay1 pop cx retdelayendp end第56頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四實(shí)驗(yàn)七 8254定時(shí)/計(jì)數(shù)器實(shí)驗(yàn) 一實(shí)驗(yàn)?zāi)康?1.掌握8254定時(shí)/計(jì)數(shù)器的基本使用方法。 2.了解8254定時(shí)/計(jì)數(shù)器利用級(jí)連擴(kuò)大計(jì)數(shù)范圍的方法。 3.了解多I/O芯片協(xié)同工作的原理和方法。二實(shí)驗(yàn)內(nèi)容 1.將8254定時(shí)器0設(shè)置為方式2(分頻),定時(shí)器1設(shè)置為方式3(方波),定時(shí)器0的CLK0端接1M或2M時(shí)鐘,定時(shí)器0的輸出脈沖作為定時(shí)器1的時(shí)鐘輸入。將定時(shí)器1的輸出脈沖接在一個(gè)LED燈上或風(fēng)鳴器上。編程使8254工作,觀察燈的狀態(tài)或風(fēng)鳴器

52、聲響。 2.用8254做秒信號(hào)源,用8255A控制交通燈的紅綠變化,完成一交通燈控制系統(tǒng),使每10秒切換一次通行方向。三實(shí)驗(yàn)電路及設(shè)計(jì) 1 .實(shí)驗(yàn)電路圖 第57頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四第58頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四第59頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四第60頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四第61頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四第62頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四 2.“實(shí)驗(yàn)內(nèi)容1”實(shí)驗(yàn)連線 (1)8254的GATE0、GATE1接高電

53、平; (2)8254 T0的CLK0接1M或2M時(shí)鐘孔; (3)8254 T1的CLK1接T0的OUT0; (4)8254的片選端CS8254連到譯碼控制單元的0E204H0E207H; (5)8254 T1的OUT1接LED燈。 3.“實(shí)驗(yàn)內(nèi)容2”實(shí)驗(yàn)連線 以下連線假設(shè)8255A的A口為輸入方式、B口為輸出方式,8255A的PA1 連接8254 T1的OUT1,8255A的B口控制交通燈的八只LED燈。 (1)連線同“實(shí)驗(yàn)內(nèi)容1”的(1)(4); (2)8254 T1的OUT1接8255A的PA1孔; (3)8255A的PB7PB0對(duì)應(yīng)連接到dp、g、f、e、d、c、b、a,它們對(duì) 應(yīng)交通燈

54、的Wr、 Er、 Wg、 Eg、 Nr、 Sr、 Ng、 Sg燈; (4)交通燈八只LED發(fā)光管的公共控制端JTD孔接高電平; (5)8255A的片選端CS8255連到譯碼控制單元的 CS1(0E200H)。 第63頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四4.8254和8255A的端口地址 8254的端口地址(CS2): 定時(shí)器0分頻系數(shù)寄存器: 0E204H, 定時(shí)器1分頻系數(shù)寄存器: 0E205H, 控制寄存器 : 0E207H。 8255A的端口地址(CS1): PA口:0E200H,PB 口:0E201H,PC口:0E202H,控制寄存器:0E203H。 第64頁(yè),共7

55、9頁(yè),2022年,5月20日,8點(diǎn)48分,星期四實(shí)驗(yàn) .1開始初始化T0初始化T裝T0低字節(jié)計(jì)數(shù)初值結(jié)束裝T0高字節(jié)計(jì)數(shù)初值裝T低字節(jié)計(jì)數(shù)初值裝T高字節(jié)計(jì)數(shù)初值第65頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四;cs8253-CS2(0E204H0E207H);clk0 - 1M;out0 -CLK1;out1 - BJ 或 DL1;gate0 - K1,令k1=1;gate1 - K2,令k2=1;-.MODEL SMALL CS8253 EQU 0E204H T0_CTL EQU 00110100B ; 對(duì)T0 兩次讀寫, 先低后高。 T0為方式2(分頻) T1_CTL EQU

56、 01110110B ;對(duì)T1 兩次讀寫, 先低后高。 T1為方式3(方波).DATA T0_DATA DB 0FFH,040H T1_DATA DB 0FFH,0.CODE.STARTUPMOV DX,CS8253+3 ;初始化T0MOV AL,T0_CTLOUT DX,ALMOV DX,CS8253 ;給T0低字節(jié)裝計(jì)數(shù)初值MOV AL,T0_DATAOUT DX,ALMOV AL,T0_DATA+1 ;給T0高字節(jié)裝計(jì)數(shù)初值OUT DX,AL;-MOV DX,CS8253+3 ;初始化T1MOV AL,T1_CTLOUT DX,ALMOV DX,CS8253+1MOV AL,T1_DAT

57、A ;給T1低字節(jié)裝計(jì)數(shù)初值OUT DX,ALMOV AL,T1_DATA+1 ;給T1高字節(jié)裝計(jì)數(shù)初值OUT DX,AL.EXITEND第66頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四開始8254 T0 初始化給8254 T0裝初值8254 T 初始化給8254 T裝初值8255初始化為A口入、B口出8255 B口輸出方向初值讀8255 PA1、測(cè)試8255 PA1PA11?讀8255 PA1、測(cè)試8255 PA1PA10?控制換向8255 B口輸出方向值檢查鍵盤有鍵盤動(dòng)?結(jié)束實(shí)驗(yàn)7.2第67頁(yè),共79頁(yè),2022年,5月20日,8點(diǎn)48分,星期四;cs8254-CS2:0E2

58、04H-0E207H;clk0 - 1M;out0 - clk1;out1 -8255_PA1;gate0 - k1;gate1 - k2;JTD-+5V;CS8255 - CS1:0E200H-0E203H(8255芯片的片選信號(hào),即片選地址);(PB7 . PB0)- (RE,RS,RW,RN,GE,GS,GW,GN);-.MODEL SMALLCS8254EQU 0E204H ;計(jì)數(shù)器0寄存器地址,CS2T0_CTL EQU 00110101B;控制字:選擇計(jì)數(shù)器0,讀/寫雙字節(jié),先低后高,方式2,十進(jìn)制計(jì)數(shù)T1_CTL EQU 01110111B;控制字:選擇計(jì)數(shù)器1,讀/寫雙字節(jié),先

59、低后高,方式3,十進(jìn)制計(jì)數(shù)CS8255 EQU 0E200H;8255的A口地址,CS1P_CTL EQU 90H;8255的方式控制字A,B口均工作在方式0,A口輸入,B口輸出.DATAT0_DATA DB 00H,50H ;計(jì)數(shù)器0的計(jì)數(shù)值為5000HT1_DATA DB 00H,20H ;計(jì)數(shù)器1的計(jì)數(shù)值為2000Hdir_data db 01011010b ;交通燈方向初值,0表明燈熄滅,1表明燈點(diǎn)亮, ;高半字節(jié)為紅,低半字節(jié)為綠;順序?yàn)闁|南西北 ;D7-東紅,D6-南紅,D5-西紅,D4-北紅 ;D3-東綠,D2-南綠,D1-西綠,D0-北綠.CODE .STARTUP;- MOV

60、 DX,CS8254+3 ;寫控制字(8254控制寄存器地址0E204H,即T8254+3)MOV AL,T0_CTLOUT DX,AL;- MOV DX,CS8254 ;寫計(jì)數(shù)器0的計(jì)數(shù)值MOV AL,T0_DATA ;寫低字節(jié)OUT DX,AL ;MOV AL,T0_DATA+1 ;寫高字節(jié)OUT DX,AL ; ;- MOV DX,CS8254+3 ;寫8254控制字(8254控制寄存器地址0E204H,即T8254+3)MOV AL,T1_CTLOUT DX,AL;- MOV DX,CS8254+1 ;寫計(jì)數(shù)器1的計(jì)數(shù)值MOV AL,T1_DATA ;寫低字節(jié)OUT DX,AL ; M

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論