版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 接口課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告</p><p> 《宿舍安全系統(tǒng)》設(shè)計(jì)報(bào)告</p><p><b> 一.實(shí)驗(yàn)?zāi)康募耙?lt;/b></p><p> 目的:結(jié)合一個(gè)實(shí)際的接口技術(shù)問題在實(shí)驗(yàn)臺(tái)上編程模擬實(shí)現(xiàn)。</p><p> 要求:結(jié)合實(shí)際應(yīng)用,設(shè)計(jì)一微機(jī)應(yīng)用系統(tǒng),要求該系統(tǒng)綜合應(yīng)用并行接口、串行接口、
2、其它接口(定時(shí)器接口、中斷接口、模擬接口可選)、編制對應(yīng)的程序,實(shí)現(xiàn)主控中心微機(jī)與下位機(jī)遠(yuǎn)距離傳送以及遠(yuǎn)程控制或監(jiān)測功能。</p><p><b> 二.系統(tǒng)功能</b></p><p> 本系統(tǒng)是用來驗(yàn)證進(jìn)入宿舍人員的身份的。用戶從下位機(jī)刷卡,并錄入用戶名和密碼。下位機(jī)分別將用戶名和密碼發(fā)送給主控機(jī),主控機(jī)驗(yàn)證之后,發(fā)送相應(yīng)的反饋信息給下位機(jī)。只有當(dāng)用戶名和密碼
3、都被確認(rèn),用戶身份才合法。合法時(shí)下位機(jī)控制發(fā)光部件逐個(gè)亮燈提示,不合法時(shí)則下位機(jī)控制發(fā)聲部件鳴聲警報(bào)。</p><p><b> 三.系統(tǒng)設(shè)計(jì)</b></p><p> 1. 系統(tǒng)硬件由主控機(jī)(其中一臺(tái)微機(jī))、下位機(jī)(另一臺(tái)位微機(jī))和執(zhí)行部件組成。主控機(jī)與下位機(jī)通過串行通信線連接。</p><p> 2. 執(zhí)行部件:由接口電路等組成,將接
4、收的數(shù)據(jù)送入到下位機(jī)或?qū)⑾挛粰C(jī)輸出的數(shù)據(jù)送到執(zhí)行部件。</p><p> 3. 下位機(jī):與主控機(jī)通信,控制執(zhí)行部件。</p><p> 4.主控機(jī):與所有下位機(jī)進(jìn)行數(shù)據(jù)交換,必要時(shí)需建數(shù)據(jù)庫,進(jìn)行數(shù)據(jù)處理等。</p><p> 5.主控機(jī)程序:串行(RS232/RS485)通信程序,數(shù)據(jù)處理程序等。</p><p> 6.下位機(jī)程序:
5、串行(RS232/RS485)通信程序,執(zhí)行部件控制程序。</p><p> 系統(tǒng)接口框圖見下頁所示:</p><p> 下圖中,8255是用來進(jìn)行下位機(jī)控制部件的接口單元。A口的8個(gè)引腳和控制板上的8個(gè)顯示燈相連,其輸出決定燈的狀態(tài);B口8個(gè)引腳和控制板上的撥碼開關(guān)的8位相連,編碼開關(guān)的狀態(tài)可由B口讀入下位機(jī);C口的PC0,PC1,PC3分別和控制板上的SW1,SW2,S24相連,可
6、由下位機(jī)讀入各開關(guān)的狀態(tài),PC6則和喇叭相連,由PC6輸出方波控制喇叭發(fā)聲。</p><p><b> 四.程序設(shè)計(jì)</b></p><p> 本次課程設(shè)計(jì)的過程中,我主要負(fù)責(zé)下位機(jī)的程序的編寫,以及導(dǎo)線在實(shí)驗(yàn)臺(tái)上的連接這兩部分的程序設(shè)計(jì)工作。</p><p> 系統(tǒng)的模塊框圖由系統(tǒng)設(shè)計(jì)的內(nèi)容可知,即8255芯片以上的部分是本系統(tǒng)的通訊模
7、塊框圖,以下的部分為本程序的功能模塊框圖。</p><p> 系統(tǒng)的程序設(shè)計(jì)是緊密圍繞系統(tǒng)功能進(jìn)行的,程序要實(shí)現(xiàn)的功能就是系統(tǒng)的功能。</p><p><b> 流程框圖如下:</b></p><p> 1.主控機(jī)程序流程圖</p><p> 程序設(shè)計(jì)過程中,為了模擬用戶的刷卡進(jìn)入,讓下位機(jī)去測試控制板上的開關(guān)s
8、w4,其按下表示有用戶刷卡進(jìn)入,這時(shí)就可以發(fā)送插卡信號(hào)給主控機(jī),下圖中“接收用戶插卡信號(hào)”就是指這個(gè)信號(hào)。</p><p> 2.下位機(jī)程序流程圖</p><p> 下位機(jī)部分需要操作控制板,這里要用到控制板上的8位編碼開關(guān),以及開關(guān)sw1,sw2,sw4。按下sw4表示用戶插卡進(jìn)入,然后撥動(dòng)控制板上的編碼開關(guān),設(shè)置用戶名編碼,按下sw1發(fā)送給主控機(jī),若被主控機(jī)確認(rèn)無誤,則撥動(dòng)控制板上
9、的編碼開關(guān)設(shè)置密碼,再按下sw2發(fā)送給主控機(jī),等待主控機(jī)確認(rèn)。</p><p> 正確情況下的燈亮很好控制,只要A口輸出數(shù)據(jù)到燈的引腳,再設(shè)計(jì)一段程序控制燈的閃爍方式即可。喇叭的發(fā)聲要說明的是,此處并不是用8253的out端輸出方波來使之發(fā)聲,而是將C口的PC6交替置位和復(fù)位產(chǎn)生方波,使之發(fā)聲的。</p><p><b> 3.主控機(jī)源程序</b></p&g
10、t;<p> ;每次驗(yàn)證用戶名和密碼之前,都有退出提示,即3秒鐘內(nèi)按任意鍵退出,此時(shí)</p><p><b> ;按任意鍵方可退出</b></p><p> datasegment</p><p> data51 equ 308h ;8251A數(shù)據(jù)口</p><p>
11、 ctr151 equ 309h ;8251A命令/狀態(tài)口</p><p> defuserdb 65h,81h,24h,37h,02ah,54h;依次為各用戶名</p><p> defpwddb 20h,17h,34h,25h,04ch,44h;依次為各用戶對應(yīng)的密碼</p><p> usernodw 6;用戶
12、數(shù)目</p><p> YNdb 0;發(fā)送緩存</p><p> userdb 0;存放接收的用戶名</p><p> pwddb 0;存放接收的密碼</p><p> tdw 0;延時(shí)初值 </p><p> bufbdb 0ah,0dh,'The domi
13、tory system is running...!$'</p><p> bufudb 0ah,0dh,'username(4 characters):$';接收用戶名提示</p><p> bufpdb 0ah,0dh,'password(6 characters):$';接收密碼提示</p><p>
14、bufrdb 0ah,0dh,'You can get in!!$';正確提示</p><p> bufus db 0ah,0dh,'Error username!!$';用戶名錯(cuò)誤提示</p><p> bufpd db 0ah,0dh,'Error password!!$';密碼錯(cuò)誤提示</p>&
15、lt;p> buferr db 0ah,0dh,'Can not identify the card!!!!$';不可識(shí)別的卡</p><p> bufexit db 0ah,0dh,'Press any key within 3 seconds to exit!$'</p><p> dataends</p><p
16、> stacksegment stack</p><p> db 200 dup(0)</p><p> stack ends</p><p> code segment</p><p> assume cs:code,ds:data,ss:stack</p><p> hh
17、macro;回車換行的宏</p><p> mov dl,0ah</p><p><b> mov ah,2</b></p><p><b> int 21h</b></p><p> mov dl,0dh</p><p><b> mo
18、v ah,2</b></p><p><b> int 21h</b></p><p><b> endm</b></p><p> int51 proc near ;8251A初始化子程</p><p> mov dx,ctr151
19、 ;8251A命令口</p><p> mov al,0;空操作 </p><p><b> out dx,al</b></p><p> mov al,40h ;內(nèi)部復(fù)位</p><p><b> out dx,al</b&g
20、t;</p><p> mov al,4Eh ;8251A方式命令</p><p><b> out dx,al</b></p><p> mov al,27h ;8251A工作命令</p><p><b> out dx,al<
21、/b></p><p><b> ret</b></p><p> int51 endp</p><p> delay1 proc ;延時(shí)子程1</p><p><b> push bx</b></p><p><b&g
22、t; mov bx,t</b></p><p> dl1: dec bx</p><p><b> jnz dl1</b></p><p><b> pop bx</b></p><p><b> ret</b></p>&
23、lt;p> delay1 endp </p><p> quit proc ;3秒鐘之內(nèi)按任意鍵退出程序</p><p><b> push cx</b></p><p> lea dx,bufexit</p><p><b> mov ah,9</b></p&
24、gt;<p><b> int 21h</b></p><p> mov cx,05fffh</p><p> qxx:cmp cx,0</p><p><b> je qx</b></p><p> mov ah,1;檢測是否有鍵按下,有則退出</p>
25、;<p><b> int 16h</b></p><p><b> jnz qnext</b></p><p> mov t,0ffffh</p><p> call delay1</p><p><b> dec cx</b></p>
26、<p><b> jmp qxx</b></p><p> qnext: mov ah,4ch</p><p><b> int 21h</b></p><p> qx: pop cx</p><p><b> ret</b></p>&
27、lt;p> quit endp</p><p> send macroa;發(fā)送一個(gè)字符的宏,首先必須將要發(fā)送的字符送入變量YN</p><p> mov dx,ctr151 </p><p> a: in al,dx</p><p> test al,01
28、;發(fā)送準(zhǔn)備好?TXRDY=1? </p><p> jz a ;未準(zhǔn)備好,則等待 </p><p> mov dx,data51 ;已準(zhǔn)備好,則發(fā)送Y給下位機(jī) </p><p> mov al,YN</p><p> out dx,al</p><p>
29、;<b> endm</b></p><p> receive macrob;接收一個(gè)字符的宏,接收到al</p><p> b: mov dx,ctr151 ;檢測接收準(zhǔn)備好沒</p><p> in al,dx</p><p> test al,02
30、 ;接收數(shù)據(jù)準(zhǔn)備好?RXRDY=1? </p><p> jz b ;未準(zhǔn)備好則繼續(xù)檢測</p><p> mov dx,data51;已準(zhǔn)備好,即有數(shù)據(jù)傳送過來,則接收1個(gè)字符 </p><p> in al,dx</p><p><b> endm</b></p>&
31、lt;p> begin: mov ax,data</p><p><b> mov ds,ax</b></p><p> call int51 ;調(diào)用8251A子程序,初始化8251A </p><p> k:call quit;延時(shí)3秒退出 </p><p>
32、<b> hh</b></p><p> lea dx,bufb;系統(tǒng)提示</p><p><b> mov ah,9</b></p><p><b> int 21h</b></p><p> receive o;接收插卡信號(hào)</p>
33、<p> cmp al,'O'</p><p><b> jne error</b></p><p> mov YN,'Y';發(fā)送卡確認(rèn)信息</p><p><b> send yyy</b></p><p> lea dx,bufu
34、;用戶名提示信息</p><p><b> mov ah,9</b></p><p><b> int 21h</b></p><p><b> mov al,0</b></p><p> receive a;接收一個(gè)字符,用戶信息 </p>
35、<p> mov user,al;保存接收的用戶信息</p><p> mov dl,user ;顯示接收的字符 </p><p> mov ah,02h</p><p><b> int 21h</b></p><p> jmp cmpuser</p>
36、<p> error: lea dx,buferr ;無法識(shí)別的卡 </p><p><b> mov ah,9</b></p><p><b> int 21h</b></p><p><b> hh</b></p><p><b&g
37、t; jmp k</b></p><p> over: mov ax,4c00h</p><p><b> int 21h </b></p><p> cmpuser:mov al,user</p><p> lea si,defuser;取用戶名數(shù)組的首地址</p>&l
38、t;p> mov cx,userno;取用戶數(shù)目</p><p> cu:cmp cx,0</p><p><b> je sendnu</b></p><p> cmp al,[si]</p><p> je sy;和某一個(gè)用戶名相等則發(fā)送Y確認(rèn)信號(hào)</p><
39、p><b> inc si</b></p><p><b> dec cx</b></p><p><b> jmp cu</b></p><p> sy:push si;保存該用戶名的地址</p><p> mov YN,'Y'&
40、lt;/p><p><b> send y</b></p><p> lea dx,bufp;密碼提示信息</p><p><b> mov ah,9</b></p><p><b> int 21h</b></p><p><b>
41、 ;接收密碼 </b></p><p> receive pp</p><p> mov pwd,al;保存接收的密碼</p><p><b> pop si</b></p><p><b> mov ax,si</b></p><p> ad
42、d ax,userno;得到該用戶名對應(yīng)的密碼在密碼數(shù)組中的地址</p><p><b> mov si,ax</b></p><p> mov bl,[si]</p><p> cmp pwd,bl;和密碼比較</p><p> jne sendnp;不相等則發(fā)送N,相等則發(fā)送Y</p&g
43、t;<p> mov YN,'Y'</p><p><b> send yy</b></p><p> lea dx,bufr;顯示正確 </p><p><b> mov ah,9</b></p><p><b> int 21h</b&
44、gt;</p><p><b> hh</b></p><p> jmp k;重新開始 </p><p> sendnp:mov YN,'N'</p><p><b> send n</b></p><p> lea dx,bufpd;
45、顯示密碼錯(cuò)誤</p><p><b> mov ah,9</b></p><p><b> int 21h</b></p><p><b> hh</b></p><p> jmp k;重新開始</p><p> sendnu:mov
46、 YN,'N'</p><p><b> send n</b></p><p> lea dx,bufus;顯示用戶名錯(cuò)誤</p><p><b> mov ah,9</b></p><p><b> int 21h</b></p>&
47、lt;p><b> hh</b></p><p> jmp k;重新開始</p><p> code ends</p><p><b> end begin</b></p><p><b> 4.下位機(jī)源程序</b></p><
48、p> ;程序開始時(shí),提示在3秒鐘內(nèi)按任意鍵退出,否則繼續(xù)執(zhí)行。若繼續(xù)執(zhí)行,首</p><p> ;先按sw4表示插卡,再由開;關(guān)狀態(tài)設(shè)置用戶名,按sw1發(fā)送之,顯示提示信息</p><p> ;仍然用開關(guān)狀態(tài)設(shè)置密碼,按sw2發(fā)送之,顯示提示</p><p> ;信息,回程序開始.</p><p> datasegment
49、</p><p> data51 equ 308h ;8251A數(shù)據(jù)口</p><p> ctr151 equ 309h ;8251A命令/狀態(tài)口</p><p> ctr155 equ 303h ;8255命令口</p><p> ctr155a equ
50、300h ;8255數(shù)據(jù)口a</p><p> ctr155b equ 301h ;8255數(shù)據(jù)口b</p><p> undb 0;存放讀入的用戶名</p><p> pddb 0;存放讀入的密碼</p><p> hhdb 0ah,0dh,'$'
51、;;回車換行 </p><p> lightdb 0feh,0fdh,0fbh,0f7h,0efh,0dfh,0bfh,07fh;閃爍燈狀態(tài)</p><p> tdw 0;延時(shí)初值 </p><p> fdb 0 ;計(jì)數(shù)初始值</p><p> jdb 0;計(jì)數(shù)初始值</p>
52、<p> YN db 0</p><p> bufexit db 0ah,0dh,'Press any key within 3 seconds to exit!$'</p><p> buf1db 0ah,0dh,'Press sw4 instand of inserting the card!$'</p><
53、;p> buf2db 0ah,0dh,'Change the state of the switch to set username! Press sw1 to send it!$';提示錄入和發(fā)送用戶名</p><p> buf3db 0ah,0dh,'Change the state of the switch to set password! Press sw2
54、 to send it!$';提示錄入和發(fā)送密碼</p><p> buf4db 0ah,0dh,'The user is not existed or you have the wrong password!$';錯(cuò)誤提示信息</p><p> buf5db 0ah,0dh,'You can get in!!$';成功
55、登錄信息</p><p> dataends</p><p> stack segment stack</p><p> DB 200 DUP(0)</p><p> stack ends</p><p> code segment</p><p> assu
56、me cs:code,ds:data,ss:stack</p><p> int51 proc near ;8251A初始化子程</p><p> mov dx,ctr151 ;8251A命令口</p><p> mov al,0;空操作 </p><p&g
57、t;<b> out dx,al</b></p><p> mov al,40h ;內(nèi)部復(fù)位</p><p><b> out dx,al</b></p><p> mov al,4Eh ;8251A方式命令</p><p>
58、;<b> out dx,al</b></p><p> mov al,27h ;8251A工作命令</p><p><b> out dx,al</b></p><p><b> ret</b></p><p> int51 e
59、ndp</p><p> send macro a;發(fā)送一個(gè)字符的宏,首先必須將要發(fā)送的字符送入變量YN</p><p> mov dx,ctr151 </p><p> a: in al,dx</p><p> test al,01 ;發(fā)送準(zhǔn)備好?TXRDY=1?
60、</p><p> jz a ;未準(zhǔn)備好,則等待 </p><p> mov dx,data51 ;已準(zhǔn)備好,則發(fā)送一個(gè)字符給下位機(jī) </p><p> mov al,YN</p><p> out dx,al</p><p><b> end
61、m</b></p><p> clear macro c;置口c某一位,c為置位控制字 </p><p> mov dx,303h</p><p><b> mov al,c</b></p><p><b> out dx,al</b></p><
62、;p><b> endm</b></p><p> receive macrob;接收一個(gè)字符的宏,接收到al</p><p> b: mov dx,ctr151 ;檢測接收準(zhǔn)備好沒</p><p> in al,dx</p><p> test al,02
63、 ;接收數(shù)據(jù)準(zhǔn)備好?RXRDY=1? </p><p> jz b ;未準(zhǔn)備好則繼續(xù)檢測</p><p> mov dx,data51 ;已準(zhǔn)備好,即有數(shù)據(jù)傳送過來,則接收1個(gè)字符 </p><p> in al,dx</p><p><b> endm&
64、lt;/b></p><p> delay1 proc ;延時(shí)子程1</p><p><b> push bx</b></p><p><b> mov bx,t</b></p><p> dl1: dec bx</p>&l
65、t;p><b> jnz dl1</b></p><p><b> pop bx</b></p><p><b> ret</b></p><p> delay1 endp </p><p> delay2 proc;延時(shí)子程2</p&g
66、t;<p><b> push cx</b></p><p> mov cx,00fffh</p><p> xx:cmp cx,0</p><p><b> je x</b></p><p> mov t,0ffffh</p><p> ca
67、ll delay1</p><p><b> dec cx</b></p><p><b> jmp xx</b></p><p> x: pop cx</p><p><b> ret</b></p><p> delay2 endp
68、</p><p> quit proc ;3秒鐘之內(nèi)按任意鍵退出程序</p><p><b> push cx</b></p><p> lea dx,bufexit</p><p><b> mov ah,9</b></p><p><b>
69、 int 21h</b></p><p> mov cx,07fffh</p><p> qxx:cmp cx,0</p><p><b> je qx</b></p><p> mov ah,1;檢測是否有鍵按下,有則退出</p><p><b>
70、int 16h</b></p><p><b> jnz qnext</b></p><p> mov t,0ffffh</p><p> call delay1</p><p><b> dec cx</b></p><p><b> jmp
71、 qxx</b></p><p> qnext: mov ah,4ch</p><p><b> int 21h</b></p><p> qx: pop cx</p><p><b> ret</b></p><p> quit endp&l
72、t;/p><p> flutter proc ;燈閃爍函數(shù),8個(gè)燈依次亮,循環(huán)3次</p><p> lea di,light</p><p><b> mov f,3</b></p><p> wyyy: cmp f,0</p><p><b> je wy <
73、;/b></p><p><b> mov cx,8</b></p><p> l:cmp cx,0</p><p><b> je wyy</b></p><p> mov al,[di];燈亮</p><p> mov dx,ctr155a&
74、lt;/p><p> out dx,al </p><p> call delay2;延時(shí)2</p><p> mov al,0ffh;燈滅</p><p> mov dx,ctr155a</p><p> out dx,al </p><p><b>
75、inc di</b></p><p><b> dec cx</b></p><p><b> jmp l</b></p><p> wyy: lea di,light </p><p><b> dec f</b></p><p&g
76、t;<b> jmp wyyy</b></p><p><b> wy: ret</b></p><p> flutter endp</p><p> noise proc ;聲音報(bào)警子函數(shù),3次長鳴 </p><p><b> push cx</b
77、></p><p><b> mov f,3</b></p><p> jj:cmp f,0</p><p><b> je ejj</b></p><p> ;產(chǎn)生一定頻率的方波,使喇叭發(fā)聲</p><p> mov cx,00dffh</p&g
78、t;<p> xxkk1:cmp cx,0</p><p><b> je xkk</b></p><p> mov dx,ctr155;pc6置1</p><p> mov al,0dh</p><p><b> out dx,al</b></p>
79、<p> mov t,0ffffh</p><p> call delay1;延時(shí)</p><p> mov dx,ctr155;pc6置0</p><p> mov al,0ch</p><p><b> out dx,al</b></p><p> mo
80、v t,0ffffh</p><p> call delay1;延時(shí)</p><p><b> dec cx</b></p><p> jmp xxkk1</p><p> xkk:call delay2;不產(chǎn)生方波,停止發(fā)聲</p><p><b> d
81、ec f</b></p><p><b> jmp jj</b></p><p> ejj:pop cx</p><p><b> ret</b></p><p> noise endp</p><p> begin: mov ax,data
82、</p><p><b> mov ds,ax</b></p><p> call int51 ;調(diào)用8251A子程序,初始化8251A</p><p> mov dx,ctr155 ;初始化8255A </p><p> mov al,10000011b<
83、;/p><p> out dx,al</p><p> ww:lea dx,hh;回車換行 </p><p><b> mov ah,9</b></p><p><b> int 21h</b></p><p> call quit;延時(shí)退出
84、程序</p><p> lea dx,hh;回車換行 </p><p><b> mov ah,9</b></p><p><b> int 21h</b></p><p> lea dx,buf1;提示按sw4表示插卡</p><p><
85、b> mov ah,9</b></p><p><b> int 21h</b></p><p> ;檢測sw4是否按下</p><p> clear 07h;清sw4狀態(tài)</p><p> wait4:mov dx,302</p><p> in al,d
86、x;sw4按下? pc3=0?</p><p> test al,08h;否,則繼續(xù)檢測</p><p><b> jnz wait4</b></p><p> ;是則發(fā)送卡插入信號(hào)</p><p> mov YN,'O'</p><p><b>
87、send o</b></p><p> mov al,0;接收主控機(jī)反饋信息</p><p><b> receive i</b></p><p> cmp al,'Y';確認(rèn)則繼續(xù),否則重新開始</p><p><b> jne ww</b>&l
88、t;/p><p> lea dx,buf2;提示設(shè)置用戶名并發(fā)送之</p><p><b> mov ah,9</b></p><p><b> int 21h</b></p><p><b> ;檢測sw1狀態(tài)</b></p><p> c
89、lear 01h;清sw1狀態(tài)</p><p> wait1:mov dx,302h ;檢測sw1是否按下</p><p><b> in al,dx</b></p><p> test al,01h;sw1按下? pc0=0?</p><p> jnz wait1
90、;否則繼續(xù)檢測</p><p> ;按下則讀開關(guān)狀態(tài)(口b),得到用戶名</p><p> mov dx,ctr155b ;讀b口</p><p><b> in al,dx</b></p><p> mov un,al;保存用戶名</p><p> mov YN,
91、al;發(fā)送用戶名</p><p><b> send us</b></p><p> jmp receiv</p><p> over: mov ax,4c00h ;程序退出 </p><p><b> int 21h</b></p>&l
92、t;p> ;接收主控機(jī)反饋信息</p><p> receiv: receive y</p><p> cmp al,'Y';接收的字符和'Y'比較</p><p> jne wrong;不合法就提示錯(cuò)誤信息</p><p> lea dx,buf3;合法則提示設(shè)置密碼并發(fā)
93、送之</p><p> mov ah,09h</p><p><b> int 21h</b></p><p> clear 02h;清sw2狀態(tài)</p><p> wait2:mov dx,302h ;檢測sw2是否按下</p><p><b
94、> in al,dx</b></p><p> test al,02h;sw2按下? pc1=0?</p><p> jnz wait2;否則繼續(xù)檢測</p><p> ;按下則讀開關(guān)狀態(tài)(口b),得到密碼</p><p> mov dx,ctr155b ;讀口b</p><
95、;p><b> in al,dx</b></p><p> mov pd,al;保存密碼</p><p> mov YN,al;發(fā)送密碼</p><p><b> send pd</b></p><p> ;接收主控機(jī)反饋回來的信息</p><p
96、> receive yy</p><p> cmp al,'Y';接收的字符和'Y'比較</p><p> jne wrong;不相等就提示錯(cuò)誤信息,相等則提示登錄成功</p><p> lea dx,buf5;提示登錄成功</p><p><b> mov ah,9&
97、lt;/b></p><p><b> int 21h</b></p><p><b> ;此處亮燈提示</b></p><p> call flutter</p><p> jmp ww;準(zhǔn)備第二次刷卡</p><p> wrong:lea dx
98、,buf4;顯示錯(cuò)誤提示信息</p><p><b> mov ah,9</b></p><p><b> int 21h</b></p><p><b> ;此處聲音報(bào)警</b></p><p> call noise </p><p>
99、 jmp ww;準(zhǔn)備第二次刷卡</p><p> code ends</p><p><b> end begin</b></p><p><b> 五.心得體會(huì)</b></p><p> 此次程序設(shè)計(jì)我們小組同心協(xié)力,通過三天多的時(shí)間,終于完成了接口的課程設(shè)計(jì)。通過這個(gè)課程
100、設(shè)計(jì),我真正掌握了8255,8251等芯片的功能和使用方法,以前在課堂上一知半解的知識(shí)通過這次課程設(shè)計(jì)都徹底弄清楚了。通過寫8255,8251等芯片的命令口,可以使得各種芯片工作在不同的狀態(tài),這可以發(fā)揮這些芯片的使用范圍,特別是撥碼開關(guān)的地方,通過撥碼開關(guān)可以設(shè)置8255的PB口的值,而這些值可以通過8251發(fā)送出去,這就是卡號(hào)和車費(fèi)輸入的地方。通過這次課程設(shè)計(jì),我認(rèn)識(shí)到了匯編語言的強(qiáng)大功能,匯編語言是計(jì)算機(jī)能夠提供給用戶使用的最快而又
101、最有效的語言,也是能夠利用計(jì)算機(jī)所有硬件特性并能直接控制硬件的唯一語言。但是,匯編語言作為一種低級語言,有他自身無法克服的缺點(diǎn),他的圖形用戶界面效果,遠(yuǎn)遠(yuǎn)不能和C語言或者C++語言相提并論,最好的方法是匯編語言和C/C++混合編程,高級語言編程方便簡潔,匯編語言能充分發(fā)揮計(jì)算機(jī)硬件特性并且程序運(yùn)行效率高,二者相結(jié)合,效果勝過單獨(dú)一門語言體現(xiàn)出來的效果。</p><p> 我還想提一個(gè)建議,那就是實(shí)驗(yàn)室最好為我們
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)說明書
- 單片機(jī)課程設(shè)計(jì)說明書
- 單片機(jī)原理課程設(shè)計(jì)說明書
- 單片機(jī)課程設(shè)計(jì)說明書——電子秒表
- 智能加濕器單片機(jī)課程設(shè)計(jì)說明書
- 單片機(jī)步進(jìn)電機(jī)課程設(shè)計(jì)說明書
- 單片機(jī)課程設(shè)計(jì)電子秒表設(shè)計(jì)說明書
- 單片機(jī)課程設(shè)計(jì)--電子秒表設(shè)計(jì)說明書
- 單片機(jī)課程設(shè)計(jì)說明書--基于adc0809溫度測量單片機(jī)系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---交通燈設(shè)計(jì)說明書
- 基于單片機(jī)溫度檢測系統(tǒng)說明書課程設(shè)計(jì)
- at89c51單片機(jī)課程設(shè)計(jì)說明書
- led顯示屏單片機(jī)課程設(shè)計(jì)說明書
- 光立方-單片機(jī)技術(shù)課程設(shè)計(jì)說明書
- 單片機(jī)數(shù)字溫度計(jì) 課程設(shè)計(jì)說明書
- 單片機(jī)原理課程設(shè)計(jì)---比賽計(jì)分器設(shè)計(jì)說明書
- 門禁電子密碼鎖單片機(jī)課程設(shè)計(jì)說明書
- 雞雛恒溫孵化器單片機(jī)課程設(shè)計(jì)說明書
- 數(shù)字式秒表-《單片機(jī)技術(shù)》課程設(shè)計(jì)說明書
- 單片機(jī)課程設(shè)計(jì)說明書——紅外線避障小車
評論
0/150
提交評論