找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 610|回复: 0
收起左侧

8086设计-可控时间间隔且可变换闪烁方式的流水灯仿真程序

[复制链接]
ID:1084920 发表于 2023-11-5 23:10 | 显示全部楼层 |阅读模式
有关于一个8086的程序设计

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.gif

仿真

仿真


  1. sseg segment                    ;2023年11月5日       编辑人;YX
  2.         dw 200 dup (?)
  3. sseg ends
  4. dseg segment
  5.         num      dw 0;初始化数字变量为0
  6. ;3种不同的灯光变幻组合
  7. data1 db 0FEh,0FCh,0F8h,0F0h,0E0h,0C0h,80h,00h,00h
  8. data2 db 00h,00h,0FFh,00h,0FFh,00h,0FFh,00h,80h,0C0h,0E0h,0F0h,0F8h,0FCh,0FEh,0FFh
  9. data3 db 7Eh,3Ch,18h,00h,0FFh,00h,0FFh,00h,0FFh,00h,18h,3Ch,7Eh,0FFh
  10. dseg ends
  11. cseg segment para public 'code'
  12.         assume ss:sseg,cs:cseg,ds:dseg
  13. start:
  14.                 mov ax,dseg
  15.                 mov ds,ax
  16.                 mov dx,0206h        ;取8255的控制端口的地址
  17.                 mov al,82h                ;初始化8255的A口为输出模式,B口为输入模式
  18.                 out dx,al
  19. exut:
  20.                 mov num,0h
  21.                 mov dx,0200h        ;取8255的端口A的地址
  22.                 mov aL,0FFh                ;使8255的 PAO-PA7全为1
  23.                 out dx,al                ;使所有的灯LED全灭
  24. begin:
  25.                 call ledflash        ;调用灯光变幻过程
  26.                 mov num,0
  27.                 ret
  28. ledflash proc                ;检测开关闭合,以便确定哪种闪烁方式
  29.                 mov dx,0202h        ;取8255的端口B的地址
  30.                 in        al,dx                ;检测B口输入信号
  31. choice1:
  32.                 cmp al,0f7h
  33.                 jne choice2
  34.                 mov si,offset data1                ;置第一种灯光变幻组合
  35.                 jmp set
  36. choice2:
  37.                 cmp al,0efh
  38.                 jne choice3
  39.                 mov si,offset data2                ;置第二种灯光变幻组合
  40.                 jmp set
  41. choice3:
  42.                 cmp al,0dfh
  43.                 jne speed1
  44.                 mov si,offset data3                ;置第三种灯光变幻组合
  45.                 jmp set
  46. speed1:                                                ;检测加速按键并设置cx的值
  47.                 cmp al,0fdh
  48.                 jne speed2        
  49.                 mov cx,000fh                        ;设置较小的cx
  50.                 jmp here
  51. speed2:                                                ;检测减速按键并设置cx的值
  52.                 cmp al,0fbh
  53.                 jne choice4               
  54.                 mov cx,05ffh                        ;设置较大的cx
  55.                 jmp here
  56. choice4:                        ;每盏灯亮完检测开关,如果停止开关没有按下跳到choice5,如果停止开关按下灯全灭
  57.                 cmp al,0bfh
  58.                 jne choice5
  59.                 jmp exit
  60. choice5:                        ;检测num是否为0,若为0扫描开关,若不为0继续执行
  61.                 cmp num,0h
  62.                 jne set
  63.                 jmp ledflash
  64. set:
  65.                 mov cx,005fh                        ;设置初始cx
  66.                 jmp here
  67. here:
  68.                 mov bx,num
  69.                 mov al,[si+bx]
  70.                 mov dx,0200h                ;取8255的端口A的地址
  71.                 out dx,al                        ;输出加电数据到端口A
  72.                 inc num                                ;改变数字变量的值
  73.                 cmp num,09h
  74.                 je exit
  75. dl4:        mov bx,00ffh
  76. dl3:         dec bx
  77.                 jnz dl3
  78.                 dec cx
  79.                 jnz dl4
  80.                 jmp ledflash
  81. exit:
  82.                 mov num,0
  83.                 ret
  84. ledflash endp
  85. cseg    ends
  86.                 end start
复制代码

仿真程序: 8086设计--可控时间间隔且可变换闪烁方式的流水灯.zip (135.8 KB, 下载次数: 7)

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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