|
這是最近幾天做的,利用proteus仿真軟件,做的八人搶答器~
附圖片,代碼。和整個工程
最后說一下,我用的proteus 8.6版本
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
B@LQLY~PLM1X3QLU2O(%PVY.png (50.94 KB, 下載次數(shù): 55)
下載附件
原理圖部分
2020-4-25 09:23 上傳
L[908F15EDECT8K8)P]1W3N.png (24.44 KB, 下載次數(shù): 53)
下載附件
代碼截取部分
2020-4-25 09:24 上傳
8086源程序如下:
- ;====================================================================
- ; Main.asm file generated by New Project wizard
- ;
- ; Created: 周三 十一月 7 2018
- ; Processor: 8086
- ; Compiler: MASM32
- ; Before starting simulation set Internal Memory Size
- ; in the 8086 model properties to 0x10000
- ;====================================================================
- DATA SEGMENT
-
- ;U1
- IOCON EQU 8006H ;設(shè)置com
- IOA EQU 8000H ;設(shè)置A端口
- IOB EQU 8002H ;設(shè)置B端口
- IOC EQU 8004H ;設(shè)置C端口
-
- ;U2
- IOCON2 EQU 9006H ;設(shè)置com
- IOA2 EQU 9000H ;設(shè)置A端口
- IOB2 EQU 9002H ;設(shè)置B端口
- IOC2 EQU 9004H ;設(shè)置C端口
-
- X0 DB 0FEH
- X1 DB 0FDH
- X2 DB 0FBH
- X3 DB 0F7H
-
- X4 DB 0EFH
- X5 DB 0DFH
- X6 DB 0BFH
- X7 DB 07FH
-
- DISPLAY DB 6FH, 7FH, 07H, 7DH, 6DH, 66H, 4FH, 5BH, 06H
- DATA ENDS
- CODE SEGMENT
- ASSUME CS:CODE,DS:DATA
-
-
- START: MOV BX,OFFSET DISPLAY ;把DISPLAY的有效地址送到BX
- MOV AL,80H ;設(shè)置8255(1)的工作方式:方式0
- MOV DX,IOCON
- OUT DX,AL
-
- MOV AL,80H ;設(shè)置8255(2)的工作方式:方式0
- MOV DX,IOCON2
- OUT DX,AL
-
-
- MOV DX,IOC ;按鍵保持高電平狀態(tài)
- MOV AL,0FFH
- OUT DX,AL
-
- MOV DX,IOC2 ;按鍵保持高電平狀態(tài)
- MOV AL,0FFH
- OUT DX,AL
-
- MOV DX,IOA2
- MOV AL,0FFH
- OUT DX,AL
-
- MOV AL,0FFH ;設(shè)置LED燈初始保持關(guān)閉狀態(tài)
- MOV DX,IOB
- OUT DX,AL
-
- MOV CX,9 ;設(shè)置重復(fù)次數(shù)
- BEGIN: MOV DX,IOC2 ;獲取IOC2的狀態(tài)
- IN AL,DX ;把IOC2的狀態(tài)傳送到累加器AX(AL)
- CMP AL,X0 ;主持人按下啟動
- JE TIMER
- JMP BEGIN
-
- TIMER:
- MOV AL,0FEH
- MOV DX,IOA2
- OUT DX,AL
-
- MOV DX,IOC ;獲取IOC的狀態(tài)
- IN AL,DX ;把IOC的狀態(tài)傳送到累加器AX(AL)
-
- CMP AL,X0 ;比較兩個數(shù)的大小 LED0
- JE LED0
- CMP AL,X1 ;比較兩個數(shù)的大小 LED1
- JE LED1
- CMP AL,X2 ;比較兩個數(shù)的大小 LED2
- JE LED2
- CMP AL,X3 ;比較兩個數(shù)的大小 LED3
- JE LED3
- CMP AL,X4 ;比較兩個數(shù)的大小 LED4
- JE LED4
- CMP AL,X5 ;比較兩個數(shù)的大小 LED5
- JE LED5
- CMP AL,X6 ;比較兩個數(shù)的大小 LED6
- JE LED6
- CMP AL,X7 ;比較兩個數(shù)的大小 LED7
- JE LED7
-
- MOV DX,IOA
- MOV AL,[BX] ;取一個數(shù)據(jù)送到AL
- OUT DX,AL ;IO輸出對應(yīng)斷碼
- INC BX ;修改地址指針
- DEC CX ;循環(huán)次數(shù)減1
- JZ LED ;CX=0跳轉(zhuǎn)LED
- CALL DELAY1 ;延時一段時間
-
- JMP TIMER
- LED0: MOV AL,X0
- MOV DX,IOB
- OUT DX,AL
-
- MOV AL,0FDH
- MOV DX,IOA2
- OUT DX,AL
-
- JMP STOP
- LED1: MOV AL,X1
- MOV DX,IOB
- OUT DX,AL
-
- MOV AL,0FDH
- MOV DX,IOA2
- OUT DX,AL
-
- JMP STOP
- LED2: MOV AL,X2
- MOV DX,IOB
- OUT DX,AL
-
- MOV AL,0FDH
- MOV DX,IOA2
- OUT DX,AL
-
- JMP STOP
- LED3: MOV AL,X3
- MOV DX,IOB
- OUT DX,AL
-
- MOV AL,0FDH
- MOV DX,IOA2
- OUT DX,AL
-
- JMP STOP
- LED4: MOV AL,X4
- MOV DX,IOB
- OUT DX,AL
-
- MOV AL,0FDH
- MOV DX,IOA2
- OUT DX,AL
-
- JMP STOP
- LED5: MOV AL,X5
- MOV DX,IOB
- OUT DX,AL
-
- MOV AL,0FDH
- MOV DX,IOA2
- OUT DX,AL
-
- JMP STOP
- LED6: MOV AL,X6
- MOV DX,IOB
- OUT DX,AL
-
- MOV AL,0FDH
- MOV DX,IOA2
- OUT DX,AL
-
- JMP STOP
- LED7: MOV AL,X7
- MOV DX,IOB
- OUT DX,AL
-
- MOV AL,0FDH
- MOV DX,IOA2
- OUT DX,AL
-
- JMP STOP
-
- STOP: MOV DX,IOA
- MOV AL,[BX] ;取一個數(shù)據(jù)送到AL
- OUT DX,AL ;IO輸出對應(yīng)斷碼
-
- MOV DX,IOC2
- IN AL,DX
- CMP AL,X1
- JE START
-
- JMP STOP
-
- LED: MOV AL,0F0H ;如果沒人搶答,四個LED閃爍
- MOV DX,IOB
- OUT DX,AL
- CALL DELAY2
- MOV AL,0FFH
- MOV DX,IOB
- OUT DX,AL
-
- CALL DELAY2
- MOV AL,0F0H
- MOV DX,IOB
- OUT DX,AL
- CALL DELAY2
- MOV AL,0FFH
- MOV DX,IOB
- OUT DX,AL
-
- CALL DELAY2
- MOV AL,0F0H
- MOV DX,IOB
- OUT DX,AL
- CALL DELAY2
- MOV AL,0FFH
- MOV DX,IOB
- OUT DX,AL
- CALL DELAY2
-
- MOV BX,OFFSET DISPLAY ;把DISPLAY的有效地址送到BX
- MOV CX,9 ;設(shè)置重復(fù)次數(shù)
- JMP TIMER
-
- DELAY1:
- PUSH AX
- PUSH CX
- MOV CX,0004H
- DELY2:
- CALL DELAY2
- LOOP DELY2
- POP CX
- POP AX
- RET
- DELAY2:
- PUSH CX
- MOV CX,0f000H
- ;--------------------------------------;
- MOV DX,IOC ;獲取IOC的狀態(tài)
- IN AL,DX ;把IOC的狀態(tài)傳送到累加器AX(AL)
-
- CMP AL,X0 ;比較兩個數(shù)的大小 LED0
- JE LED0
- CMP AL,X1 ;比較兩個數(shù)的大小 LED1
- JE LED1
- CMP AL,X2 ;比較兩個數(shù)的大小 LED2
- JE LED2
- CMP AL,X3 ;比較兩個數(shù)的大小 LED3
- JE LED3
- CMP AL,X4 ;比較兩個數(shù)的大小 LED4
- JE LED4
- CMP AL,X5 ;比較兩個數(shù)的大小 LED5
- JE LED5
- CMP AL,X6 ;比較兩個數(shù)的大小 LED6
- JE LED6
- CMP AL,X7 ;比較兩個數(shù)的大小 LED7
- JE LED7
- ;--------------------------------------;
- DELA1:
- LOOP DELA1
- POP CX
- RET
-
- ENDLESS:
- JMP ENDLESS
- CODE ENDS
- END START
復(fù)制代碼
51hei.png (8.2 KB, 下載次數(shù): 60)
下載附件
2020-4-25 15:56 上傳
所有資料51hei提供下載:
八人搶答器.rar
(81.07 KB, 下載次數(shù): 122)
2020-4-25 09:26 上傳
點(diǎn)擊文件名下載附件
整個文件 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|