找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4146|回复: 1
打印 上一主题 下一主题
收起左侧

Proteus仿真8086CPU 八人抢答器程序设计

[复制链接]
跳转到指定楼层
楼主
这是最近几天做的,利用proteus仿真软件,做的八人抢答器~
附图片,代码。和整个工程

最后说一下,我用的proteus 8.6版本
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


8086源程序如下:
  1. ;====================================================================
  2. ; Main.asm file generated by New Project wizard
  3. ;
  4. ; Created:   周三 十一月 7 2018
  5. ; Processor: 8086
  6. ; Compiler:  MASM32
  7. ; Before starting simulation set Internal Memory Size
  8. ; in the 8086 model properties to 0x10000
  9. ;====================================================================

  10. DATA  SEGMENT
  11.         
  12.         ;U1
  13.         IOCON         EQU 8006H          ;设置com
  14.         IOA      EQU 8000H          ;设置A端口
  15.         IOB      EQU 8002H          ;设置B端口
  16.         IOC      EQU 8004H            ;设置C端口
  17.         
  18.         ;U2
  19.         IOCON2         EQU 9006H          ;设置com
  20.         IOA2     EQU 9000H          ;设置A端口
  21.         IOB2     EQU 9002H          ;设置B端口
  22.         IOC2     EQU 9004H            ;设置C端口
  23.         
  24.         X0      DB  0FEH
  25.         X1      DB  0FDH
  26.         X2      DB  0FBH
  27.         X3      DB  0F7H
  28.         
  29.         X4      DB  0EFH
  30.         X5      DB  0DFH
  31.         X6      DB  0BFH
  32.         X7      DB  07FH
  33.         
  34.         DISPLAY DB  6FH, 7FH, 07H, 7DH, 6DH, 66H, 4FH, 5BH, 06H
  35.         DATA    ENDS
  36.         CODE    SEGMENT
  37.         ASSUME  CS:CODE,DS:DATA
  38.         
  39.         
  40. START:  MOV     BX,OFFSET DISPLAY  ;把DISPLAY的有效地址送到BX

  41.         MOV        AL,80H             ;设置8255(1)的工作方式:方式0
  42.         MOV        DX,IOCON
  43.         OUT        DX,AL
  44.         
  45.         MOV        AL,80H             ;设置8255(2)的工作方式:方式0
  46.         MOV        DX,IOCON2
  47.         OUT        DX,AL
  48.         
  49.         
  50.         MOV        DX,IOC             ;按键保持高电平状态   
  51.         MOV        AL,0FFH                  
  52.         OUT        DX,AL
  53.         
  54.         MOV        DX,IOC2            ;按键保持高电平状态   
  55.         MOV        AL,0FFH                  
  56.         OUT        DX,AL
  57.         
  58.         MOV        DX,IOA2           
  59.         MOV        AL,0FFH                  
  60.         OUT        DX,AL
  61.         
  62.         MOV        AL,0FFH            ;设置LED灯初始保持关闭状态
  63.         MOV        DX,IOB
  64.         OUT        DX,AL
  65.         
  66.         MOV     CX,9                ;设置重复次数

  67. BEGIN:  MOV     DX,IOC2             ;获取IOC2的状态
  68.         IN      AL,DX               ;把IOC2的状态传送到累加器AX(AL)
  69.         CMP     AL,X0               ;主持人按下启动
  70.         JE      TIMER
  71.         JMP     BEGIN
  72.         
  73. TIMER:        
  74.         MOV        AL,0FEH        
  75.         MOV        DX,IOA2                    
  76.         OUT        DX,AL
  77.         
  78.         MOV     DX,IOC             ;获取IOC的状态
  79.         IN      AL,DX              ;把IOC的状态传送到累加器AX(AL)
  80.         
  81.         CMP     AL,X0              ;比较两个数的大小 LED0
  82.         JE      LED0
  83.         CMP     AL,X1              ;比较两个数的大小 LED1
  84.         JE      LED1
  85.         CMP     AL,X2              ;比较两个数的大小 LED2
  86.         JE      LED2
  87.         CMP     AL,X3              ;比较两个数的大小 LED3
  88.         JE      LED3
  89.         CMP     AL,X4              ;比较两个数的大小 LED4
  90.         JE      LED4
  91.         CMP     AL,X5              ;比较两个数的大小 LED5
  92.         JE      LED5
  93.         CMP     AL,X6              ;比较两个数的大小 LED6
  94.         JE      LED6
  95.         CMP     AL,X7              ;比较两个数的大小 LED7
  96.         JE      LED7
  97.         
  98.         MOV        DX,IOA  
  99.         MOV     AL,[BX]            ;取一个数据送到AL
  100.         OUT        DX,AL              ;IO输出对应断码
  101.         INC     BX                 ;修改地址指针
  102.         DEC     CX                 ;循环次数减1
  103.         JZ      LED                ;CX=0跳转LED
  104.         CALL        DELAY1             ;延时一段时间
  105.         
  106.         JMP        TIMER

  107. LED0:   MOV        AL,X0        
  108.         MOV        DX,IOB                     
  109.         OUT        DX,AL
  110.         
  111.         MOV        AL,0FDH        
  112.         MOV        DX,IOA2                    
  113.         OUT        DX,AL
  114.         
  115.         JMP        STOP
  116. LED1:   MOV        AL,X1        
  117.         MOV        DX,IOB                     
  118.         OUT        DX,AL
  119.         
  120.         MOV        AL,0FDH        
  121.         MOV        DX,IOA2                    
  122.         OUT        DX,AL
  123.         
  124.         JMP        STOP
  125. LED2:   MOV        AL,X2        
  126.         MOV        DX,IOB                     
  127.         OUT        DX,AL
  128.         
  129.         MOV        AL,0FDH        
  130.         MOV        DX,IOA2                    
  131.         OUT        DX,AL
  132.         
  133.         JMP        STOP               
  134. LED3:   MOV        AL,X3        
  135.         MOV        DX,IOB                     
  136.         OUT        DX,AL
  137.         
  138.         MOV        AL,0FDH        
  139.         MOV        DX,IOA2                    
  140.         OUT        DX,AL
  141.         
  142.         JMP        STOP
  143. LED4:   MOV        AL,X4        
  144.         MOV        DX,IOB                     
  145.         OUT        DX,AL
  146.         
  147.         MOV        AL,0FDH        
  148.         MOV        DX,IOA2                    
  149.         OUT        DX,AL
  150.         
  151.         JMP        STOP
  152. LED5:   MOV        AL,X5        
  153.         MOV        DX,IOB                     
  154.         OUT        DX,AL
  155.         
  156.         MOV        AL,0FDH        
  157.         MOV        DX,IOA2                    
  158.         OUT        DX,AL
  159.         
  160.         JMP        STOP
  161. LED6:   MOV        AL,X6        
  162.         MOV        DX,IOB                     
  163.         OUT        DX,AL
  164.         
  165.         MOV        AL,0FDH        
  166.         MOV        DX,IOA2                    
  167.         OUT        DX,AL
  168.         
  169.         JMP        STOP               
  170. LED7:   MOV        AL,X7        
  171.         MOV        DX,IOB                     
  172.         OUT        DX,AL
  173.         
  174.         MOV        AL,0FDH        
  175.         MOV        DX,IOA2                    
  176.         OUT        DX,AL
  177.         
  178.         JMP        STOP        
  179.         
  180. STOP:   MOV        DX,IOA  
  181.         MOV     AL,[BX]             ;取一个数据送到AL
  182.         OUT        DX,AL               ;IO输出对应断码
  183.         
  184.         MOV     DX,IOC2            
  185.         IN      AL,DX            
  186.         CMP     AL,X1
  187.         JE        START
  188.         
  189.         JMP     STOP
  190.         
  191. LED:    MOV        AL,0F0H            ;如果没人抢答,四个LED闪烁
  192.         MOV        DX,IOB
  193.         OUT        DX,AL
  194.         CALL        DELAY2
  195.         MOV        AL,0FFH            
  196.         MOV        DX,IOB
  197.         OUT        DX,AL
  198.         
  199.         CALL        DELAY2
  200.         MOV        AL,0F0H            
  201.         MOV        DX,IOB
  202.         OUT        DX,AL
  203.         CALL        DELAY2
  204.         MOV        AL,0FFH            
  205.         MOV        DX,IOB
  206.         OUT        DX,AL
  207.         
  208.         CALL        DELAY2
  209.         MOV        AL,0F0H            
  210.         MOV        DX,IOB
  211.         OUT        DX,AL
  212.         CALL        DELAY2
  213.         MOV        AL,0FFH            
  214.         MOV        DX,IOB
  215.         OUT        DX,AL
  216.         CALL        DELAY2
  217.         
  218.         MOV     BX,OFFSET DISPLAY   ;把DISPLAY的有效地址送到BX
  219.         MOV     CX,9                ;设置重复次数
  220.         JMP     TIMER               
  221.         
  222. DELAY1:        
  223.         PUSH        AX
  224.         PUSH        CX
  225.         MOV        CX,0004H
  226. DELY2:        
  227.         CALL        DELAY2
  228.         LOOP        DELY2
  229.         POP        CX
  230.         POP        AX
  231.         RET
  232. DELAY2:        
  233.         PUSH        CX
  234.         MOV        CX,0f000H
  235.         ;--------------------------------------;
  236.         MOV     DX,IOC             ;获取IOC的状态
  237.         IN      AL,DX              ;把IOC的状态传送到累加器AX(AL)
  238.         
  239.         CMP     AL,X0              ;比较两个数的大小 LED0
  240.         JE      LED0
  241.         CMP     AL,X1              ;比较两个数的大小 LED1
  242.         JE      LED1
  243.         CMP     AL,X2              ;比较两个数的大小 LED2
  244.         JE      LED2
  245.         CMP     AL,X3              ;比较两个数的大小 LED3
  246.         JE      LED3
  247.         CMP     AL,X4              ;比较两个数的大小 LED4
  248.         JE      LED4
  249.         CMP     AL,X5              ;比较两个数的大小 LED5
  250.         JE      LED5
  251.         CMP     AL,X6              ;比较两个数的大小 LED6
  252.         JE      LED6
  253.         CMP     AL,X7              ;比较两个数的大小 LED7
  254.         JE      LED7
  255.         ;--------------------------------------;
  256. DELA1:        
  257.         LOOP        DELA1
  258.         POP        CX
  259.         RET
  260.         
  261. ENDLESS:
  262.         JMP     ENDLESS
  263. CODE    ENDS
  264.         END START
复制代码

所有资料51hei提供下载:
八人抢答器.rar (81.07 KB, 下载次数: 122)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:789456 发表于 2020-6-25 13:54 | 只看该作者
除了黑币还有别的方法看到你的工程文件吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表