找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7369|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

8086+8253A+8255A家庭安全防盜系統(tǒng)Proteus仿真電路圖+程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:704074 發(fā)表于 2020-3-7 15:39 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
一個基于8086芯片設(shè)計的家庭安全防盜系統(tǒng)
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  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        ;使各個警示燈關(guān)閉
  33.         MOV AL,36H        ;計數(shù)器0,只寫計數(shù)值低8位,方式3,二進制計數(shù)
  34.         OUT CW8253,Al
  35.         MOV AL,76H        ;計數(shù)器1,只寫計數(shù)值低8位,方式3,二進制計數(shù)
  36.         OUT CW8253,Al
  37.         MOV Ax,4E20H        ;計數(shù)器0,賦初值4E20H,產(chǎn)生1Hz連續(xù)方波
  38.         OUT T0,AL                ;先寫低
  39.         MOV AL,AH
  40.         OUT        T0,AL                ;再寫高
  41.         MOV AX,2710H        ;計數(shù)器1,賦初值2710H,產(chǎn)生2Hz連續(xù)方波
  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                                ;空操作等待轉(zhuǎn)換

  58. WAIT1:       
  59.         IN AL,PC1               
  60.         AND AL,00000010B        ;讀EOC狀態(tài)
  61.         JZ WAIT1                        ;如果是0則循環(huán)等待,是1則開始讀數(shù)據(jù)
  62.         IN AL,PC1                        ;讀出PC1原有的值,不破壞原有的數(shù)據(jù)
  63.         OR AL,01000000B;        ;修改OE位
  64.         OUT PC1,AL                        ;輸出讀允許信號
  65.     IN AL,PA1                        ;取A口數(shù)據(jù)
  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                        ;判斷是否是最后一次循環(huán),如果是則不左移(八位數(shù)只用左移七次)
  72.         JNA SKIP                        
  73.         ROL AL,1D                        ;小于99H,最后一位不變,直接左移
  74. SKIP:
  75.         MOV DL,AL                        ;保存AL的值
  76.         INC BL                                ;選擇下一路輸出
  77.         LOOP AGAIN                        ;沒有計滿8次則循環(huán)
  78.         CMP DL,0FFH                ;判斷有無報警被觸發(fā)
  79.         JNB NEXT                ;沒有則跳過,有則開始報警
  80.         IN AL,PC1        ;取C口數(shù)據(jù)
  81.         AND AL,01H        ;取PC10
  82.         JNZ NEXT        ;如果PC10等于0(開關(guān)開),則執(zhí)行下面的代碼(報警),否則跳過(不報警)
  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        ;關(guān)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
復(fù)制代碼

所有資料51hei提供下載:
家庭安全防盜系統(tǒng)(有AD轉(zhuǎn)換).zip (105.85 KB, 下載次數(shù): 270)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:773401 發(fā)表于 2020-6-12 21:17 | 只看該作者
     AND AL,0FEH                        ;大于99H,最后一位置0,然后左移
NEXT1:
        CMP CX,01H                        ;判斷是否是最后一次循環(huán),如果是則不左移(八位數(shù)只用左移七次)
        JNA SKIP                        
        ROL AL,1D                        ;小于99H,最后一位不變,直接左移
想問一下樓主這個左移是干嘛的,什么原理
回復(fù)

使用道具 舉報

板凳
ID:88256 發(fā)表于 2020-6-13 00:15 | 只看該作者
匯編既讓我感到親切又讓我頭大
回復(fù)

使用道具 舉報

地板
ID:773401 發(fā)表于 2020-6-13 17:58 | 只看該作者
c111 發(fā)表于 2020-6-12 21:17
AND AL,0FEH                        ;大于99H,最后一位置0,然后左移
NEXT1:
        CMP CX,01H   ...

明白了
回復(fù)

使用道具 舉報

5#
ID:667869 發(fā)表于 2020-6-27 16:36 | 只看該作者
代碼加不進去怎么辦呀?C:\Users\dell\Desktop
回復(fù)

使用道具 舉報

6#
ID:872723 發(fā)表于 2021-1-4 20:27 | 只看該作者
CMP AL,99H                        ;判斷取出的值是否大于3V
        MOV AL,DL                        ;將DL的值,賦給AL
        JB NEXT1
為什么比較完什么操作都沒有,就重新賦值?
回復(fù)

使用道具 舉報

7#
ID:873402 發(fā)表于 2021-1-4 21:19 | 只看該作者
ADC0808右邊是不是還有連線啊
回復(fù)

使用道具 舉報

8#
ID:873451 發(fā)表于 2021-1-6 19:41 來自手機 | 只看該作者
沒有硬件版本的嗎?
回復(fù)

使用道具 舉報

9#
ID:938238 發(fā)表于 2021-6-16 19:49 | 只看該作者
非常有用,謝謝樓主
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表