找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5843|回复: 8
收起左侧

8086+8253A+8255A家庭安全防盗系统Proteus仿真电路图+程序

  [复制链接]
ID:704074 发表于 2020-3-7 15:39 | 显示全部楼层 |阅读模式
一个基于8086芯片设计的家庭安全防盗系统
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png

单片机源程序如下:
  1. ;====================================================================
  2. ; Main.asm file generated by New Project wizard
  3. ;
  4. ; Created:   周四 6月 20 2019
  5. ; Processor: 8086
  6. ; Compiler:  MASM32
  7. ;
  8. ; Before starting simulation set Internal Memory Size
  9. ; in the 8086 model properties to 0x10000
  10. ;====================================================================
  11. CODE        SEGMENT PUBLIC 'CODE'
  12.         ASSUME CS:CODE

  13. START:
  14.         ;Write your code here
  15.         PA1 EQU 10H        ;第一片8255A口
  16.         PB1 EQU 12H        ;第一片8255B口
  17.         PC1 EQU 14H        ;第一片8255C口
  18.         CW18255 EQU 16H        ;第一片8255控制字寄存器

  19.         PA2 EQU 50H ;第二片8255A口
  20.         PB2 EQU 52H        ;第二片8255B口
  21.         PC2 EQU 54H        ;第二片8255C口
  22.         CW28255 EQU 56H        ;第二片8255控制字寄存器
  23.        
  24.         T0 EQU        30H        ;定时器0
  25.         T1 EQU         32H        ;定时器1
  26.         T2 EQU        34H        ;定时器2
  27.         CW8253        EQU 36H ;8253控制寄存器
  28.         MOV AL,91H     ;初始化8255控制字,A组工作方式0,输入。B组工作方式0,输出。C组高4位输出,低4位输入。
  29.         OUT CW18255,AL        ;控制口
  30.         OUT CW28255,AL        ;控制口
  31.         MOV AL,0FFH
  32.         OUT PB2,AL        ;使各个警示灯关闭
  33.         MOV AL,36H        ;计数器0,只写计数值低8位,方式3,二进制计数
  34.         OUT CW8253,Al
  35.         MOV AL,76H        ;计数器1,只写计数值低8位,方式3,二进制计数
  36.         OUT CW8253,Al
  37.         MOV Ax,4E20H        ;计数器0,赋初值4E20H,产生1Hz连续方波
  38.         OUT T0,AL                ;先写低
  39.         MOV AL,AH
  40.         OUT        T0,AL                ;再写高
  41.         MOV AX,2710H        ;计数器1,赋初值2710H,产生2Hz连续方波
  42.         OUT T1,AL                ;先写低
  43.         MOV AL,AH
  44.         OUT T1,AL                ;再写高
  45.         MOV BL,00H
  46.         MOV CX,08H
  47.         MOV DL,0FFH
  48. AGAIN:
  49.         MOV AX,0000H;
  50.         MOV AL,BL
  51.         OUT PB1,AL                ;ADC0808位选
  52.         IN AL,PC1                ;取PC1口的值(保证赋值后不影响PC1原有的值)
  53.         OR AL,00100000B        ;送ALE信号(上升沿)
  54.         OUT PC1,AL;
  55.         AND AL,11011111B;送START信号(下降沿)
  56.         OUT PC1,AL;
  57.         NOP                                ;空操作等待转换

  58. WAIT1:       
  59.         IN AL,PC1               
  60.         AND AL,00000010B        ;读EOC状态
  61.         JZ WAIT1                        ;如果是0则循环等待,是1则开始读数据
  62.         IN AL,PC1                        ;读出PC1原有的值,不破坏原有的数据
  63.         OR AL,01000000B;        ;修改OE位
  64.         OUT PC1,AL                        ;输出读允许信号
  65.     IN AL,PA1                        ;取A口数据
  66.         CMP AL,99H                        ;判断取出的值是否大于3V
  67.         MOV AL,DL                        ;将DL的值,赋给AL
  68.         JB NEXT1
  69.         AND AL,0FEH                        ;大于99H,最后一位置0,然后左移
  70. NEXT1:
  71.         CMP CX,01H                        ;判断是否是最后一次循环,如果是则不左移(八位数只用左移七次)
  72.         JNA SKIP                        
  73.         ROL AL,1D                        ;小于99H,最后一位不变,直接左移
  74. SKIP:
  75.         MOV DL,AL                        ;保存AL的值
  76.         INC BL                                ;选择下一路输出
  77.         LOOP AGAIN                        ;没有计满8次则循环
  78.         CMP DL,0FFH                ;判断有无报警被触发
  79.         JNB NEXT                ;没有则跳过,有则开始报警
  80.         IN AL,PC1        ;取C口数据
  81.         AND AL,01H        ;取PC10
  82.         JNZ NEXT        ;如果PC10等于0(开关开),则执行下面的代码(报警),否则跳过(不报警)
  83.         IN AL,PC1       
  84.         OR AL,00010000B
  85.         OUT PC1,AL        ;开GATE
  86.         MOV AL,DL       
  87.         OUT PB2,AL        ;亮示意灯
  88.         MOV DL,0FFH       
  89.         MOV CX,08H
  90.         JMP AGAIN
  91. NEXT:

  92.         IN AL,PC1       
  93.         AND AL,11101111B
  94.         OUT PC1,AL        ;关GATE
  95.         MOV AL,0FFH;
  96.         OUT PB2,AL        ;亮示意灯
  97.         MOV DL,0FFH       
  98.         MOV CX,08H
  99.         JMP AGAIN
  100. CODE    ENDS
  101.         END START
复制代码

所有资料51hei提供下载:
家庭安全防盗系统(有AD转换).zip (105.85 KB, 下载次数: 268)

评分

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

查看全部评分

回复

使用道具 举报

ID:773401 发表于 2020-6-12 21:17 | 显示全部楼层
     AND AL,0FEH                        ;大于99H,最后一位置0,然后左移
NEXT1:
        CMP CX,01H                        ;判断是否是最后一次循环,如果是则不左移(八位数只用左移七次)
        JNA SKIP                        
        ROL AL,1D                        ;小于99H,最后一位不变,直接左移
想问一下楼主这个左移是干嘛的,什么原理
回复

使用道具 举报

ID:88256 发表于 2020-6-13 00:15 | 显示全部楼层
汇编既让我感到亲切又让我头大
回复

使用道具 举报

ID:773401 发表于 2020-6-13 17:58 | 显示全部楼层
c111 发表于 2020-6-12 21:17
AND AL,0FEH                        ;大于99H,最后一位置0,然后左移
NEXT1:
        CMP CX,01H   ...

明白了
回复

使用道具 举报

ID:667869 发表于 2020-6-27 16:36 | 显示全部楼层
代码加不进去怎么办呀?C:\Users\dell\Desktop
回复

使用道具 举报

ID:872723 发表于 2021-1-4 20:27 | 显示全部楼层
CMP AL,99H                        ;判断取出的值是否大于3V
        MOV AL,DL                        ;将DL的值,赋给AL
        JB NEXT1
为什么比较完什么操作都没有,就重新赋值?
回复

使用道具 举报

ID:873402 发表于 2021-1-4 21:19 | 显示全部楼层
ADC0808右边是不是还有连线啊
回复

使用道具 举报

ID:873451 发表于 2021-1-6 19:41 来自手机 | 显示全部楼层
没有硬件版本的吗?
回复

使用道具 举报

ID:938238 发表于 2021-6-16 19:49 | 显示全部楼层
非常有用,谢谢楼主
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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