一个基于8086芯片设计的家庭安全防盗系统
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- ;====================================================================
- ; Main.asm file generated by New Project wizard
- ;
- ; Created: 周四 6月 20 2019
- ; Processor: 8086
- ; Compiler: MASM32
- ;
- ; Before starting simulation set Internal Memory Size
- ; in the 8086 model properties to 0x10000
- ;====================================================================
- CODE SEGMENT PUBLIC 'CODE'
- ASSUME CS:CODE
- START:
- ;Write your code here
- PA1 EQU 10H ;第一片8255A口
- PB1 EQU 12H ;第一片8255B口
- PC1 EQU 14H ;第一片8255C口
- CW18255 EQU 16H ;第一片8255控制字寄存器
- PA2 EQU 50H ;第二片8255A口
- PB2 EQU 52H ;第二片8255B口
- PC2 EQU 54H ;第二片8255C口
- CW28255 EQU 56H ;第二片8255控制字寄存器
-
- T0 EQU 30H ;定时器0
- T1 EQU 32H ;定时器1
- T2 EQU 34H ;定时器2
- CW8253 EQU 36H ;8253控制寄存器
- MOV AL,91H ;初始化8255控制字,A组工作方式0,输入。B组工作方式0,输出。C组高4位输出,低4位输入。
- OUT CW18255,AL ;控制口
- OUT CW28255,AL ;控制口
- MOV AL,0FFH
- OUT PB2,AL ;使各个警示灯关闭
- MOV AL,36H ;计数器0,只写计数值低8位,方式3,二进制计数
- OUT CW8253,Al
- MOV AL,76H ;计数器1,只写计数值低8位,方式3,二进制计数
- OUT CW8253,Al
- MOV Ax,4E20H ;计数器0,赋初值4E20H,产生1Hz连续方波
- OUT T0,AL ;先写低
- MOV AL,AH
- OUT T0,AL ;再写高
- MOV AX,2710H ;计数器1,赋初值2710H,产生2Hz连续方波
- OUT T1,AL ;先写低
- MOV AL,AH
- OUT T1,AL ;再写高
- MOV BL,00H
- MOV CX,08H
- MOV DL,0FFH
- AGAIN:
- MOV AX,0000H;
- MOV AL,BL
- OUT PB1,AL ;ADC0808位选
- IN AL,PC1 ;取PC1口的值(保证赋值后不影响PC1原有的值)
- OR AL,00100000B ;送ALE信号(上升沿)
- OUT PC1,AL;
- AND AL,11011111B;送START信号(下降沿)
- OUT PC1,AL;
- NOP ;空操作等待转换
- WAIT1:
- IN AL,PC1
- AND AL,00000010B ;读EOC状态
- JZ WAIT1 ;如果是0则循环等待,是1则开始读数据
- IN AL,PC1 ;读出PC1原有的值,不破坏原有的数据
- OR AL,01000000B; ;修改OE位
- OUT PC1,AL ;输出读允许信号
- IN AL,PA1 ;取A口数据
- CMP AL,99H ;判断取出的值是否大于3V
- MOV AL,DL ;将DL的值,赋给AL
- JB NEXT1
- AND AL,0FEH ;大于99H,最后一位置0,然后左移
- NEXT1:
- CMP CX,01H ;判断是否是最后一次循环,如果是则不左移(八位数只用左移七次)
- JNA SKIP
- ROL AL,1D ;小于99H,最后一位不变,直接左移
- SKIP:
- MOV DL,AL ;保存AL的值
- INC BL ;选择下一路输出
- LOOP AGAIN ;没有计满8次则循环
- CMP DL,0FFH ;判断有无报警被触发
- JNB NEXT ;没有则跳过,有则开始报警
- IN AL,PC1 ;取C口数据
- AND AL,01H ;取PC10
- JNZ NEXT ;如果PC10等于0(开关开),则执行下面的代码(报警),否则跳过(不报警)
- IN AL,PC1
- OR AL,00010000B
- OUT PC1,AL ;开GATE
- MOV AL,DL
- OUT PB2,AL ;亮示意灯
- MOV DL,0FFH
- MOV CX,08H
- JMP AGAIN
- NEXT:
- IN AL,PC1
- AND AL,11101111B
- OUT PC1,AL ;关GATE
- MOV AL,0FFH;
- OUT PB2,AL ;亮示意灯
- MOV DL,0FFH
- MOV CX,08H
- JMP AGAIN
- CODE ENDS
- END START
复制代码
所有资料51hei提供下载:
家庭安全防盗系统(有AD转换).zip
(105.85 KB, 下载次数: 270)
|