久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4994|回復: 2
打印 上一主題 下一主題
收起左側

微機原理實驗 8060匯編語言 Proteus仿真電路

[復制鏈接]
跳轉到指定樓層
樓主
原創的西電微機原理實驗 包括匯編源文件和對應的Proteus仿真電路 可以直接在電腦上運行仿真 完成的功能與要求在實驗板上完成的功能一樣


  1. ;各種地址
  2. nCS5                EQU        0DE28H
  3. PA8255                EQU        nCS5+0
  4. PB8255                EQU        nCS5+2
  5. PC8255                EQU        nCS5+4
  6. CTL8255                EQU nCS5+6
  7. DISPBUFF        EQU 3000H
  8. ;按鍵抖動時間        
  9. KeyShock        EQU        06FFFH

  10.         
  11. DATAS SEGMENT
  12.     ;此處輸入數據段代碼
  13.         ;數碼管段碼                0        1        2        3        4        5        6        7        8        9        A        B        C        D        E        F               
  14.         SegCode                DB        3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

  15.         ;矩陣鍵盤按鍵碼        0        1        2        3        4        5        6        7        8        9        A        B        C        D        E        F
  16.         KeyCode                DB        11H,21H,41H,81H,12H,22H,42H,82H,14H,24H,44H,84H,18H,28H,48H,88H
  17. DATAS ENDS

  18. STACKS SEGMENT
  19.     ;此處輸入堆棧段代碼
  20. STACKS ENDS

  21. CODES SEGMENT
  22.     ASSUME CS:CODES,DS:DATAS,SS:STACKS
  23. START:
  24.     MOV AX,DATAS
  25.     MOV DS,AX
  26.     ;將8086控制總線拉到確定電平
  27.     MOV DX,00H
  28.     OUT DX,AL
  29.     IN        AL,DX
  30.     ;此處輸入代碼段代碼
  31.    
  32.     ;初始化數碼管顯示緩沖區
  33. InitBuff:
  34.         MOV SI,DISPBUFF
  35.         MOV CX,4
  36. Loop1:
  37.         MOV [SI],CL
  38.         INC SI
  39.         LOOP Loop1
  40.         

  41.         
  42.         
  43.     ;主函數...
  44.     MOV DI,03H
  45.    
  46. Loop3:
  47.     CALL Disp
  48.     CALL MatrixKeyboard
  49.     JMP Loop3
  50.    
  51. ;矩陣鍵盤掃描子函數
  52. MatrixKeyboard PROC
  53. Begin:
  54.     ;初始化8255控制字
  55.     MOV DX,nCS5 + 6
  56.     MOV AL,10001000B        ;PC高4位作鍵盤掃描列信號,PC低4位作鍵盤掃描行信號
  57.     OUT DX,AL
  58.    
  59. Scan:
  60.         ;PC口
  61.         MOV DX,nCS5 + 4                ;PC行掃描給出全低電平
  62.         MOV AL,00H
  63.         OUT DX,AL
  64. WaitKey:   
  65.     IN        AL,DX                        ;讀出PC列掃描電平
  66.     AND        AL,0F0H                        ;去除低4位,保留高4位
  67.     CMP AL,0F0H                        ;將得到的列電平和F0H比較,如果相等說明列線全高,沒有按鍵按下
  68.     JZ        ExtiKeyboard        ;如果沒有按鍵按下,直接返回
  69.    
  70.     MOV CX,KeyShock                ;如果有按鍵按下,先延時一會,去抖動
  71.     LOOP $
  72.         ;開始正反向掃描
  73.         IN        AL,DX                        ;讀取列值
  74.         AND        AL,0F0H
  75.         CMP        AL,0F0H
  76.         JZ        ExtiKeyboard        ;如果再次讀到的結果是高電平,表明前次按下是抖動,不予理會        
  77.         MOV        CL,AL                        ;如果確實有按鍵按下則記錄列地址
  78.         
  79.         MOV DX,nCS5 + 6                ;重新設置控制字
  80.         MOV AL,10000001B        ;PC行列翻轉,高4位做鍵盤掃描行信號,低4為作鍵盤掃描行信號
  81.         OUT        DX,AL
  82.         
  83.         MOV DX,nCS5 + 4                ;PC行掃描給出全低電平
  84.         MOV AL,00H
  85.         OUT DX,AL
  86.         
  87.         IN        AL,DX
  88.         AND        AL,0FH                        ;取低4位
  89.         OR        AL,CL                        ;將正向和反向的合成按鍵碼
  90.         
  91.         MOV BX,OFFSET KeyCode
  92.         MOV SI,00H
  93.         NOT AL                                ;AL取反,完全只是為了計算按鍵碼方便
  94.         
  95. ScanKey:
  96.         CMP        AL,[BX][SI]                ;將讀到的鍵碼和鍵碼表比較
  97.         JE        FindKey                        ;如果相等(找到),調到找到處理部分
  98.         INC SI                                ;如果不相等,再跟下一個比較
  99.         CMP        SI,10H
  100.         JZ        Begin                        ;找到第16個還沒找到表示按鍵非法,重新從頭開始掃描
  101.         JMP        ScanKey                        ;與鍵碼表中下一個鍵碼比較

  102. FindKey:
  103.         CALL PutBuff
  104.         ;MOV BX,DISPBUFF
  105.         ;MOV [BX],SI
  106. ExtiKeyboard:
  107.         RET

  108. MatrixKeyboard ENDP

  109. PutBuff PROC
  110.         
  111.         MOV BX,DISPBUFF
  112.         ADD BX,DI
  113.         
  114.         MOV AX,SI
  115.         MOV [BX],AL
  116.         DEC        DI
  117.         JNC Finish
  118.         MOV DI,03H
  119. Finish:
  120.         RET
  121. PutBUff ENDP
  122.    
  123. ;數碼管顯示子函數
  124. Disp PROC
  125.         MOV SI,DISPBUFF
  126.         MOV CL,0FEH
  127.         
  128. Loop2:
  129.         MOV AL,CL
  130.         MOV DX,PB8255                ;位選
  131.         OUT DX,AL
  132.         
  133.         MOV BX,OFFSET SegCode
  134.         MOV AX,0
  135.         MOV AL,[SI]
  136.         ADD BX,AX
  137.         MOV AL,[BX]
  138.         MOV DX,PA8255
  139.         OUT DX,AL
  140.         
  141.         CALL DelayMs
  142.         CALL ClearDig
  143.         
  144.         CMP CL,0F7H                        ;判斷有沒有一遍掃完
  145.         JZ ExitDisp
  146.         
  147.         INC SI
  148.         ROL CL,1
  149.         
  150.         JMP        Loop2
  151.         
  152. ExitDisp:
  153.         RET
  154. DISP ENDP

  155. ;清除數碼管顯示子函數
  156. ClearDig PROC
  157.         MOV DX,PA8255
  158.         MOV AL,00H
  159.         OUT DX,AL
  160.         RET
  161. ClearDig ENDP

  162. ;延時子函數
  163. DelayMs        PROC
  164.                 PUSH AX                        ;保護原先的寄存器內容
  165.                 PUSH BX
  166.                
  167.                 MOV AX,00FFH
  168.         L2:        MOV BX,000FH
  169.         L3:        DEC BX
  170.                 JNZ L3
  171.                 DEC AX
  172.                 JNZ L2
  173.                
  174.                 POP BX                        ;恢復原先的寄存器內容,注意這里的彈棧順序
  175.                 POP AX
  176.                
  177.                 RET
  178. DelayMs        ENDP   
  179.    
  180.     ;收尾工作
  181.     JMP $
  182.     MOV AH,4CH
  183.     INT 21H
  184. CODES ENDS
  185.     END START

復制代碼



微機原理實驗.rar

413.35 KB, 下載次數: 53, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:210353 發表于 2017-6-12 10:37 | 只看該作者
正好是我需要的
回復

使用道具 舉報

板凳
ID:313328 發表于 2018-5-23 10:58 | 只看該作者
又學習了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 老司机免费视频 | 亚洲精品不卡 | 国产精品福利网 | 中日av | 国产一级影片 | 国产一区二区自拍 | 久久久青草婷婷精品综合日韩 | 久久网一区二区 | 全免费a级毛片免费看视频免费下 | 羞羞的视频免费在线观看 | 欧美一级二级视频 | 中文字幕 亚洲一区 | 深夜福利影院 | 国产无人区一区二区三区 | 日日夜夜免费精品视频 | 精品视频久久久久久 | 一级黄色片免费 | 国产黄色av网站 | 日韩视频在线一区二区 | 欧美性久久久 | 精品久久久久香蕉网 | av网站在线看 | 成人福利视频网站 | 精品久久精品 | 成人午夜视频在线观看 | 日韩和的一区二区 | 天天操天天射综合网 | 99re热精品视频 | 日韩一区中文字幕 | 国产日韩免费观看 | 成人性视频免费网站 | 成人欧美一区二区三区黑人孕妇 | 国产综合久久久 | 玖玖综合网| 久久久久无码国产精品一区 | 国产乱码精品1区2区3区 | 91精品国产综合久久精品 | 日日夜夜精品视频 | 国产精品国产精品国产专区不卡 | 亚洲高清在线 | 国产精品久久久久久妇女6080 |