宿舍安全系統(tǒng)單片機(jī)課程設(shè)計(jì)說明書_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論