找回密码
 立即注册

QQ登录

只需一步,快速开始

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

8086+8253A可调时钟Proteus仿真程序

[复制链接]
跳转到指定楼层
楼主
8086可调时钟仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. .MODEL        SMALL
  2. .8086
  3. .stack
  4. .code
  5. .startup
  6. NMI_init: push es        ;NMI不可屏蔽中断向量表初始化
  7.       xor ax, ax
  8.       mov es, ax
  9.       mov al, 02h
  10.       xor ah, ah
  11.       shl ax, 1
  12.       shl ax, 1
  13.       mov si, ax
  14.       mov ax, offset NMI_service
  15.       mov es:[si], ax
  16.       inc si
  17.       inc si
  18.       mov bx, cs
  19.       mov es:[si], bx
  20.       pop es
  21.       ;定时/计数器初始化
  22.       mov al,00110111b   ;T0 16位 mode3 bcd
  23.       mov dx,0406h       ;控制口地址
  24.       out dx,al
  25.       mov dx,0400h       ;T0地址
  26.       mov ax,0100h       ;100KHz 100分频 1KHz   
  27.       out dx,al
  28.       mov al,ah          ;高字节
  29.       out dx,al  
  30.       mov al,10110101b   ;T2 16位 mode2 bcd
  31.       mov dx,0406h
  32.       out dx,al
  33.       mov dx,0404h
  34.       mov ax,1000h       ;1KHz 1000分频 1Hz   
  35.       out dx,al
  36.       mov al,ah          ;高字节
  37.       out dx,al
  38. loop0:                  ;主任务
  39.       call key
  40.       call disp      
  41.       jmp loop0   
  42.                              
  43. NMI_service:             ;中断服务程序
  44.       push ax  
  45.       mov al,sec
  46.       add al,1
  47.       daa     
  48.       mov sec,al  
  49.       cmp sec,60h
  50.       jb  exit
  51.       mov sec,0
  52.       mov al,min
  53.       add al,1
  54.       daa     
  55.       mov min,al  
  56.       cmp min,60h
  57.       jb  exit
  58.       mov min,0
  59.       mov al,hou
  60.       add al,1
  61.       daa     
  62.       mov hou,al  
  63.       cmp hou,12h
  64.       jb  exit
  65.       mov hou,0                    
  66. exit: pop ax
  67.       iret
  68. disp  proc  near
  69.       mov al,0ffh           ;不显示         
  70.       mov dx,0201h
  71.       out dx,al
  72.       mov bl,sec
  73.       and bx,000fh
  74.       mov si,bx      
  75.       mov al,situation[si]  ;段码     
  76.       mov dx,0200h
  77.       out dx,al      
  78.       mov al,0feh           ;秒个位         
  79.       mov dx,0201h
  80.       out dx,al
  81.       call delay
  82.       mov al,0ffh           ;不显示        
  83.       mov dx,0201h  
  84.       out dx,al
  85.       mov bl,sec
  86.       and bx,00f0h
  87.       mov cl,4         
  88.       shr bx,cl            
  89.       mov si,bx
  90.       mov al,situation[si]  ;段码     
  91.       mov dx,0200h
  92.       out dx,al      
  93.       mov al,0fdh           ;秒十位      
  94.       mov dx,0201h
  95.       out dx,al
  96.       call delay
  97.       mov al,0ffh           ;不显示         
  98.       mov dx,0201h
  99.       out dx,al      
  100.       mov al,40h            ;段码     
  101.       mov dx,0200h
  102.       out dx,al      
  103.       mov al,0fbh           ;秒个位         
  104.       mov dx,0201h
  105.       out dx,al
  106.       call delay
  107.       mov al,0ffh           ;不显示         
  108.       mov dx,0201h
  109.       out dx,al
  110.       mov bl,min
  111.       and bx,000fh
  112.       mov si,bx      
  113.       mov al,situation[si]  ;段码     
  114.       mov dx,0200h
  115.       out dx,al      
  116.       mov al,0f7h           ;分个位         
  117.       mov dx,0201h
  118.       out dx,al
  119.       call delay
  120.       mov al,0ffh           ;不显示        
  121.       mov dx,0201h  
  122.       out dx,al
  123.       mov bl,min
  124.       and bx,00f0h
  125.       mov cl,4         
  126.       shr bx,cl            
  127.       mov si,bx
  128.       mov al,situation[si]  ;段码     
  129.       mov dx,0200h
  130.       out dx,al      
  131.       mov al,0efh           ;分十位      
  132.       mov dx,0201h
  133.       out dx,al
  134.       call delay
  135.       mov al,0ffh           ;不显示         
  136.       mov dx,0201h
  137.       out dx,al      
  138.       mov al,40h            ;段码     
  139.       mov dx,0200h
  140.       out dx,al      
  141.       mov al,0dfh           ;秒个位         
  142.       mov dx,0201h
  143.       out dx,al
  144.       call delay
  145.       mov al,0ffh           ;不显示         
  146.       mov dx,0201h
  147.       out dx,al
  148.       mov bl,hou
  149.       and bx,000fh
  150.       mov si,bx      
  151.       mov al,situation[si]  ;段码     
  152.       mov dx,0200h
  153.       out dx,al      
  154.       mov al,0bfh           ;时个位         
  155.       mov dx,0201h
  156.       out dx,al
  157.       call delay
  158.       mov al,0ffh           ;不显示        
  159.       mov dx,0201h  
  160.       out dx,al
  161.       mov bl,hou
  162.       and bx,00f0h
  163.       mov cl,4         
  164.       shr bx,cl            
  165.       mov si,bx
  166.       mov al,situation[si]  ;段码     
  167.       mov dx,0200h
  168.       out dx,al      
  169.       mov al,07fh           ;时十位      
  170.       mov dx,0201h
  171.       out dx,al
  172.       call delay
  173.       ret
  174. disp    endp

  175. key     proc near
  176.         mov dx,0600h
  177.         in  al,dx
  178.         test al,01h   
  179.         jnz  nexthou      
  180.         call disp           ;消抖
  181.         call disp
  182.         call disp      
  183.         mov dx,0600h
  184.         in  al,dx
  185.         test al,01h
  186.         jnz  nexthou
  187.         mov al,min
  188.         add al,1            ;分调整
  189.         daa
  190.         mov min,al
  191.         cmp min,60H
  192.         jb  nexthou
  193.         mov min,0
  194. nexthou: mov dx,0600h
  195.         in  al,dx
  196.         test al,02h
  197.         jnz  exitkey      
  198.         call disp            ;消抖
  199.         call disp
  200.         call disp      
  201.         mov dx,0600h
  202.         in  al,dx
  203.         test al,02h
  204.         jnz  exitkey
  205.         mov al,hou
  206.         add al,1         
  207.         daa                  ;时调整
  208.         mov hou,al   
  209.         cmp hou,12H
  210.         jb  nexthou
  211.         mov hou,0
  212. exitkey:ret
  213. key     endp
  214.       
  215. delay   proc  near
  216.         push bx
  217.         push cx
  218.             mov  bx,1
  219.    lp1:   mov cx,469
  220.    lp2:   loop lp2
  221.             dec bx
  222.             jnz lp1
  223.         pop  cx
  224.         pop  bx
  225.             ret
  226. delay      endp  

  227. .data
  228. sec         db 00h
  229. min         db 00h
  230. hou         db 11h
  231. situation   db 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40h ;共阴   
  232. sit_end=$        
  233. END
复制代码

所有资料51hei提供下载:
_8253A_可调时钟.rar (60.62 KB, 下载次数: 81)


评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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