|
一個基于8086芯片設(shè)計的家庭安全防盜系統(tǒng)
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (62.66 KB, 下載次數(shù): 96)
下載附件
2020-3-8 23:27 上傳
單片機源程序如下:
- ;====================================================================
- ; 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 ;使各個警示燈關(guān)閉
- MOV AL,36H ;計數(shù)器0,只寫計數(shù)值低8位,方式3,二進制計數(shù)
- OUT CW8253,Al
- MOV AL,76H ;計數(shù)器1,只寫計數(shù)值低8位,方式3,二進制計數(shù)
- OUT CW8253,Al
- MOV Ax,4E20H ;計數(shù)器0,賦初值4E20H,產(chǎn)生1Hz連續(xù)方波
- OUT T0,AL ;先寫低
- MOV AL,AH
- OUT T0,AL ;再寫高
- MOV AX,2710H ;計數(shù)器1,賦初值2710H,產(chǎn)生2Hz連續(xù)方波
- 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 ;空操作等待轉(zhuǎn)換
- WAIT1:
- IN AL,PC1
- AND AL,00000010B ;讀EOC狀態(tài)
- JZ WAIT1 ;如果是0則循環(huán)等待,是1則開始讀數(shù)據(jù)
- IN AL,PC1 ;讀出PC1原有的值,不破壞原有的數(shù)據(jù)
- OR AL,01000000B; ;修改OE位
- OUT PC1,AL ;輸出讀允許信號
- IN AL,PA1 ;取A口數(shù)據(jù)
- CMP AL,99H ;判斷取出的值是否大于3V
- MOV AL,DL ;將DL的值,賦給AL
- JB NEXT1
- AND AL,0FEH ;大于99H,最后一位置0,然后左移
- NEXT1:
- CMP CX,01H ;判斷是否是最后一次循環(huán),如果是則不左移(八位數(shù)只用左移七次)
- JNA SKIP
- ROL AL,1D ;小于99H,最后一位不變,直接左移
- SKIP:
- MOV DL,AL ;保存AL的值
- INC BL ;選擇下一路輸出
- LOOP AGAIN ;沒有計滿8次則循環(huán)
- CMP DL,0FFH ;判斷有無報警被觸發(fā)
- JNB NEXT ;沒有則跳過,有則開始報警
- IN AL,PC1 ;取C口數(shù)據(jù)
- AND AL,01H ;取PC10
- JNZ NEXT ;如果PC10等于0(開關(guān)開),則執(zhí)行下面的代碼(報警),否則跳過(不報警)
- 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 ;關(guān)GATE
- MOV AL,0FFH;
- OUT PB2,AL ;亮示意燈
- MOV DL,0FFH
- MOV CX,08H
- JMP AGAIN
- CODE ENDS
- END START
復(fù)制代碼
所有資料51hei提供下載:
家庭安全防盜系統(tǒng)(有AD轉(zhuǎn)換).zip
(105.85 KB, 下載次數(shù): 270)
2020-3-7 15:39 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|