📄 mt8888.asm
字号:
switch bit p3.3 ;提机高电平有效
IRQCP BIT p3.2 ;int0
;--------------------------------------------
;发送寄存器,接收寄存器地址:0000H
;控制寄存器、状态寄存器地址:0100H
;CS-----P2.1
;RS0----P2.0
;p1.0--p1.3为输入,p1.4--p1.7为输出
;--------------------------------------------
org 0000h
ljmp start
org 0100h
start: clr switch ;断开电话线
mov dptr,#0100h ;初始化MT8888
movx a,@dptr
nop
mov a,#00h
movx @dptr,a ;写CRA
movx @dptr,a ;写CRA
mov a,#08h ;允许写CRB
movx @dptr,a ;写CRA
mov a,#00h
movx @dptr,a ;写CRB
nop
movx a,@dptr
;--------------
mov sp,#60h
mov p1,#0ffh ;设置p1口为输入口
nop
main: lcall sensor
mov r4,#160
lcall guaji ;拨号10秒后挂机
clr switch ;完毕反回
ljmp main
;=======================================================
;报警信号检测子程序 total:4 way 判断P1口是否有报警信号
;=======================================================
sensor: jnb p1.0,sen1
lcall sen_del ;调防误报延时子程序10ms
jnb p1.0,sen1
lcall yanwu ;p1.0为‘1’烟雾警
sen1: jnb p1.1,sen2
lcall sen_del ;调防误报延时子程序10ms
jnb p1.1,sen2
lcall fangdao ;p1.1为‘1’盗警
sen2: jnb p1.2,sen3
lcall sen_del ;调防误报延时子程序10ms
jnb p1.2,sen3
lcall meiqi ;p1.1为‘1’煤气警
sen3: jnb p1.3,senback
lcall sen_del ;调防误报延时子程序10ms
jnb p1.3,senback
lcall other1
senback:ret
;============================
;防误报延时子程序10ms
;============================
sen_del:mov r7,#40
sen_dl1:mov r6,#250
sen_dl0:djnz r6,sen_dl0
djnz r7,sen_dl1
ret
;============================
;各类报警处理子程序
;============================
yanwu: lcall yw30h
mov r0,#30h ;电话号码存储单元起始地址
mov r1,#11 ;total11bit
lcall dail
ret
fangdao:nop
lcall fd40h
ret
meiqi: nop
lcall mq50h
ret
other1: nop
ret
;===================================
;拨号子程序
;发送寄存器,接收寄存器地址:0000H
;控制寄存器、状态寄存器地址:0100H
;input:r0 电话号码存储单元起始地址
; r1 电话号码位数
;===================================
dail: push acc
setb switch ;接通电话线高电平有效
mov r4,#20
lcall guaji ;1秒后拨号
mov dptr,#0100h
mov a,#0dh ;写8888 CRA
movx @dptr,a
mov a,#02h
movx @dptr,a ;写8888 CRB
dailop: mov dptr,#0000h
mov a,@r0
movx @dptr,a
mov dptr,#0100h
dailop1:movx a,@dptr ;读状态寄存器
jnb acc.1,dailop1
;jb p3.2,dailop1
lcall dal_del
lcall dal_del
;lcall dal_del
inc r0
djnz r1,dailop ;拨号完毕?
pop acc
ret
;============================
;拨号延时子程序200ms(待用)
;============================
dal_del:mov R5,#10
dal_dl2:mov r7,#200
dal_dl1:mov r6,#100
dal_dl0:djnz r6,sen_dl0
djnz r7,sen_dl1
djnz r5,dal_dl2
ret
;============================
guaji: nop
gjlop: lcall dal_del
djnz r4,gjlop
ret
;============================
;第一个号码
;============================
yw30h: mov 30h,#1
mov 31h,#3
mov 32h,#6
mov 33h,#5
mov 34h,#8
mov 35h,#0ah
mov 36h,#6
mov 37h,#4
mov 38h,#3
mov 39h,#5
mov 3ah,#6
ret
;============================
;第二个号码
;============================
fd40h: mov 40h,#8
mov 41h,#9
mov 42h,#9
mov 43h,#3
mov 44h,#2
mov 45h,#6
mov 46h,#4
mov 47h,#5
ret
;============================
;第三个号码
;============================
mq50h: mov 50h,#1
mov 51h,#3
mov 52h,#6
mov 53h,#5
mov 54h,#8
mov 55h,#0
mov 56h,#6
mov 57h,#4
mov 58h,#3
mov 59h,#5
mov 5ah,#6
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -