📄 mcu.asm
字号:
;2008年1月22日改受限服务及年
;2008年8月12日 改报警及时间
DOGk BIT P1.7
tx_en bit p3.2
MC_EN BIT P3.5
LED2 BIT P1.6
mtx BIT P2.0
mrx BIT P2.1
;******DS1302********************
LED3CLK BIT P1.2 ;DS1302 clk
LED4IO BIT P1.3 ;i/o
RST BIT P1.4 ;rst
SECOND EQU 72H
;72H 秒
;73h 分
;74h 时
;75h 日
;76h 月
;78h 年
;********************************************
DUANXIAN BIT P3.6
p_k bit p2.7
BOJING BIT P3.7
;24c02 定义
rd_en bit p3.4
;3fh
buffer equ 26h;首地址
cnt equ 70;字节
SCL BIT p1.0 ; serial clock
SDA BIT p1.1 ; serial data
FADDR data 0a0h ; fixed address for AT24Cxx EEPROMs
ADDR DATA 1dH
WDT_CONTR DATA 0E1H
;1eh 24c02
;****************key********************
fun bit p2.5
up bit p2.4
down bit p2.3
qr bit p2.2
;*******************************************************
; 20 21 22 23 24 25 通讯
; 26 机器号
; 27 侦测器数量
; 28 29 侦测时间
; 2A 2B 2C 2D 命令
; 2E 2F 公共
; 30 31 31 33 34 35 1 记录
; 36 37 38 39 3A 3B 2 记录
; 3C 3D 3E 3F 40 41 3 记录
; 42 43 44 45 46 47 4 记录
; 48 49 4A 4B 4C 4D 5 记录
; 4E 4F 50 51 52 53 6 记录
; 54 55 56 57 58 59 7 记录
; 5A 5B 5C 5D 5E 5F 8 记录
; 60 61 62 63 64 65 9 记录
; 66 67 68 69 6A 6B 10 记录
; 6c 6d 6e 7f 70 71
;1ch
;dis 7ah
; KEY 1FH
;
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP COMM
ORG 0060H
MOV WDT_CONTR,#34H; Load initial value看门狗定时器控制寄存器初始化
reti
ORG 0100H
MAIN: MOV SP ,#0A0H
MOV A ,#0ffH
MOV P1 ,A
MOV P2 ,A
MOV P3, A
MOV P0,A
clr p_k
CLR 28h
CLR 29h
clr 2ah
clr 2bh
CLR EA
setb rd_en
RD24C04: CLR DOGK
NOP
SETB DOGK
MOV WDT_CONTR,#34H ;喂狗,
JNB RD_EN ,RD24C04
clr rd_en
LCALL READ_24C02
SETB RD_EN
NOP
; lcall write_24c02
mov a ,2ah
cjne a ,#05h,mainonA
mov a ,2bh
cjne a ,#06h,mainonA
mov a ,2ch
cjne a ,#07h,mainonA
mov a ,2dh
cjne a ,#12h,mainonA
mov 7ah ,#0bbh ;服务受限
LCALL DIS
MOV 20H,#7FH ;关侦测器
MOV 21H ,#00H
MOV 22H ,#0CCH
MOV 23H ,#0DH
LCALL TX1
LCALL YS1S
LCALL TX1
LCALL YS1S
MOV 20H,#7FH
MOV 21H ,#00H ;关屏蔽器
MOV 22H ,#0EEH
MOV 23H ,#0DH
LCALL TX1
LCALL YS1S
LCALL TX1
mov r0 ,#2
loopmain:
lcall ys2s
djnz r0 ,loopmain
ljmp RD24C04
MAINONA: LJMP MAINON
mainon: setb sda
setb scl
setb rd_en
MOV TMOD ,#20H ;T1=CNT(1),T0=TIME(100US)
MOV TH1 ,#0FDH
MOV TL1 ,#0FDH
MOV SCON ,#50H
MOV PCON ,#00H
SETB TR1
SETB ES
clr EA
clr tx_en
lcall R_1302
MOV 24H ,#55H
mov 7ah ,#99h
LCALL DIS
clr tx_en
mov 24h ,#55h
MOV 20H,#7FH ;关屏蔽器
MOV 21H ,#00H
MOV 22H ,#0eeH
MOV 23H ,#0DH
LCALL TX1
LCALL YS1S
LCALL TX1
LCALL YS1S
MOV 20H,#7FH ;开侦测器
MOV 21H ,#00H
MOV 22H ,#0ddH
MOV 23H ,#0DH
LCALL TX1
LCALL YS1S
LCALL TX1
lcall ys3s
clr led2
lcall ys3s
setb led2
MOV 20H,#7FH ;侦测器 清零
MOV 21H ,#00H
MOV 22H ,#0AdH
MOV 23H ,#0DH
LCALL TX1
LCALL YS1S
LCALL TX1
CLR ea
clr tx_en
mov 24h ,#00h
start: CLR DOGK
NOP
SETB DOGK
MOV WDT_CONTR,#34H ;喂狗,
MOV A ,26H
MOV 7fh ,A
;**************巡检******************************************************
XUJC:
LCALL KEY
clr led2
CLR EA
CLR DOGK
NOP
SETB DOGK
MOV WDT_CONTR,#34H ;喂狗,
setb mrx
MOV A ,7fh
ADD A ,#01H
MOV 7fh ,A
mov 21h ,a
mov 20h,#7fh
MOV 22H ,#03H
MOV 23H ,#0DH
LCALL TX1
setb led2
nop
CLR 29h
CLR 28h
setb 2ah
setb ea
setb es
mov 24h ,#00h
mov 1fh ,#55h
TIMEY: MOV R7 ,#01H
TS1: MOV R5 ,#29H
TS2: MOV R6 ,#0FFH
TS3: CLR DOGk
NOP
SETB DOGk
jb 29h ,TIMEOUTu
mov a ,1fh
cjne a ,#54h ,ts9
timeoutu: ljmp timeout
ts9: DJNZ R6 ,TS3
DJNZ R5 ,TS2
DJNZ R7 ,TS1
;*************2ci*******************
CLR EA
CLR DOGK
NOP
SETB DOGK
MOV WDT_CONTR,#34H ;喂狗,
MOV A ,7fh
mov 21h ,a
mov 20h,#7fh
MOV 22H ,#03H
MOV 23H ,#0DH
LCALL TX1
CLR 29h
CLR 28h
setb 2ah
setb ea
mov 24h ,#00h
mov 1fh ,#55h
TIMEYy: MOV R7 ,#01H
TS1y: MOV R5 ,#1fH
TS2y: MOV R6 ,#0FFH
TS3y: CLR DOGk
NOP
SETB DOGk
MOV WDT_CONTR,#34H ;喂狗,
jb 29h ,TIMEOUT
mov a ,1fh
cjne a ,#54h ,ts9y
ljmp timeout
ts9y: DJNZ R6 ,TS3y
DJNZ R5 ,TS2y
DJNZ R7 ,TS1y
TIL1y: CLR DOGK
NOP
SETB DOGK
MOV WDT_CONTR,#34H ;喂狗,
JNB RD_EN ,TIL1y
CLR RD_EN
LCALL READ_24C02
setb sda
setb scl
MOV A, 7fh
MOV 2EH ,A
MOV 2FH,#05H
lcall write_24c02
lcall ys5ms
setb sda
setb scl
SETB RD_EN
CLR DUANXIAN
setb p_k
clr mrx
mov a ,7fh
mov 21h,a
mov 7ah ,#0aah
lcall R_1302
nop
lcall dis
clr duanxian
lcall ys1s
MOV WDT_CONTR,#34H ;喂狗,
lcall ys3s
clr p_k
LJMP XUNJ
TIMEOUT:
JB 29h , BAOJING
LJMP XUNJ
;*************报警***************************************8
BAOJING: clr led2
clr ea
clr es
CLR DOGK
NOP
SETB DOGK
MOV WDT_CONTR,#34H ;喂狗,
lcall r_1302
JNB RD_EN ,BAOJING
CLR RD_EN
LCALL READ_24C02
setb sda
setb scl
MOV A, 21H
MOV 2EH ,A
MOV A, 22H
CLR C
Rrc A
JC GSM
RrC A
JC PHS
RrC A
JC DCS
RrC A
JC CDMA
GSM: MOV 2FH,#03H
LJMP XUNJIANEN
PHS: MOV 2FH,#04H
LJMP XUNJIANEN
DCS: MOV 2FH,#02H
LJMP XUNJIANEN
CDMA: MOV 2FH,#01H
LJMP XUNJIANEN
XUNJIANEN:
LCALL R_1302
mov a ,21h
mov 71h ,a
mov a ,72h
mov 70h ,a
mov a ,73h
mov 6fh ,a
mov a ,74h
mov 6eh ,a
mov a ,75h
mov 6dh ,a
mov a ,76h
LCALL IDTB
mov b ,a
mov a ,78h
swap a
orl a ,b
MOV 6CH ,A
mov r0 ,#30h
mov r1,#36h
mov r2 ,#60
ccloop:
mov a ,@r1
mov @r0 ,a
inc r0
inc r1
djnz r2 ,ccloop
nop
lcall write_24c02
lcall ys5ms
setb sda
setb scl
SETB RD_EN
setb duanxian
CLR BOJING
mov 7ah ,#00h
lcall dis
MOV WDT_CONTR,#34H ;喂狗,
MOV 20H,#7FH
MOV 21H ,#00H
MOV 22H ,#0CCH
MOV 23H ,#0DH
LCALL TX1
LCALL YS1S
LCALL TX1
LCALL YS1S
setb p_k
MOV 20H,#7FH
MOV 21H ,#00H
MOV 22H ,#0FFH
MOV 23H ,#0DH
LCALL TX1
LCALL YS1S
LCALL TX1
LCALL YS1S
MOV WDT_CONTR,#34H ;喂狗,
clr ea
CLR BOJING
LCALL TIMEEee ;;;;;;;;;TIME 延时
clr tx_en
mov 24h ,#55h
MOV 20H,#7FH
MOV 21H ,#00H
MOV 22H ,#0eeH
MOV 23H ,#0DH
LCALL TX1
LCALL YS1S
LCALL TX1
LCALL YS1S
setb BOJING
clr p_k
lcall ys3s
LJMP MAIN
;**********************************************************
XUNJ: JNB MC_EN ,MINL
lcall ys5ms
JNB MC_EN ,MINL
MOV A ,7fh
MOV B ,A
MOV A ,27H
CLR C
SUBB A ,B
JZ XUJCEND
lcall ys5ms
MOV A ,7fh
MOV B ,A
MOV A ,27H
CLR C
SUBB A, B
JC GUI
LJMP XUJC
GUI:
MOV 7fh ,#00H
LJMP XUJC
XUJCEND: setb duanxian
setb bojing
CLR DOGK
NOP
SETB DOGK
lcall key
lcall r_1302
mov 7ah,#99h
lcall dis
LJMP START
;*********命令*******************************************************************
MINL: clr ea
clr bojing
clr duanxian
ONOFf: CLR DOGK
NOP
SETB DOGK
MOV WDT_CONTR,#34H ;喂狗,
JNB RD_EN ,ONOFF
CLR RD_EN
LCALL READ_24C02
setb sda
setb scl
MOV A, 2AH
;******年月日*************
cjne a ,#13h , settime
lcall r_1302
mov a ,2bh
mov 78h ,a
mov a ,2ch
mov 76h ,a
mov a ,2dh
mov 75h ,a
LCALL SET1302
ljmp minlout
settime:cjne a ,#14h , setfuwu
lcall r_1302
mov a ,2bh
mov 74h ,a
mov a ,2ch
mov 73h ,a
mov a ,2dh
mov 72h ,#00h
LCALL SET1302
ljmp minlout
setfuwu:cjne a ,#05h , MINLOUT
mov a ,2bh
cjne a ,#06h,MINLOUT
mov a ,2ch
cjne a ,#07h,MINLOUT
mov a ,2dh
cjne a ,#12h,MINLOUT
ljmp $
MINLOUT: SETB MC_EN
setb bojing
setb duanxian
setb rd_en
mov a ,26h
mov 7fh,a
mov 21h ,a
MOV WDT_CONTR,#34H ;喂狗,
LJMP XUJC
;************************
DIS: clr mrx ;dis
mov a ,21h
mov 71h ,a
mov a ,72h
mov 70h ,a
mov a ,73h
mov 6fh ,a
mov a ,74h
mov 6eh ,a
mov a ,75h
mov 6dh ,a
mov a ,76h
LCALL IDTB
mov b ,a
mov a ,78h
swap a
orl a ,b
mov 6ch ,a
clr ea
clr es
mov a ,74h
mov b ,a
mov 74h,#0dh
mov a ,7ah
mov 72h ,a
mov a ,26h
mov 73h ,a
clr mtx
DIS_KEY: MOV A ,#7fh
LCALL TXDATA
LCALL DEL833
mov r0 ,#6ch
mov r2 ,#9
disloop:
mov a ,@r0
inc r0
LCALL TXDATA
LCALL DEL833
djnz r2 ,disloop
MOV A ,#7fh
LCALL TXDATA
setb mrx
LCALL DEL833
; ********************************888bd2
MOV R7 ,#01H
disy1: MOV R5 ,#0FFH
disy2: MOV R6 ,#0FFH
disy3: CLR DOGk
NOP
SETB DOGk
MOV WDT_CONTR,#34H ;喂狗,
jnb mrx , disf
DJNZ R6 ,disy3
DJNZ R5 ,disy2
DJNZ R7 ,disy1
lcall R_1302
ljmp dis
disf:
dish:
LCALL DEL833
mov a ,b
mov 74h ,a
RET
;*********发送**************************
txdata:
CLR C
MOV MTX ,C
LCALL DEL833
MOV R3 ,#8
REP: RRC A
MOV MTX ,C
LCALL DEL833
DJNZ R3,REP
SETB C
MOV MTX ,C
LCALL DEL833
RET
DEL833:
MOV r1 ,#93
MS11: DJNZ r1 ,MS11
RET
;***********************
TIMEEee:
mov a ,28h
mov r1 ,a
cjne a ,#00h ,timeeee2
ljmp rrrte
timeeee2:
mov r2 ,#60
timeeee1:
mov 20h,#7fh
mov 22h ,#56
mov 23h ,#0dh
lcall dis
lcall ys3s
djnz r2 ,timeeee1
djnz r1 ,timeeee2
rrrte: mov a ,29h
mov r2 ,a
timeeee1a:
lcall ys3s
djnz r2 ,timeeee1a
RET
;*********发送**************************
TX1: setb tx_en
clr led2
LCALL YS5MS
clr ea
; setb ti
MOV R2 ,#04H
MOV R0 ,#20H
RII7:MOV A ,@R0
MOV SBUF ,A
RII8:JNB TI ,RII8
CLR TI
INC R0
MOV R3 ,#0AH
RII9:NOP
NOP
NOP
DJNZ R3 ,RII9
DJNZ R2 ,RII7
clr tx_en
setb led2
; setb ea
RET
;********format***********
format: clr ea
mov 20h,#7fh
MOV 22H ,#03H
MOV 23H ,#0DH
mov a ,#00H
mov 24h ,#55h
forloop: inc a
mov 21h ,a
mov 2fh ,a
LCALL TX1
lcall ys1s
lcall tx1
mov a ,2fh
mov b ,a
mov a,27h
clr c
subb a ,b
jC forout
mov a,2fh
ljmp forloop
forout:mov 24h ,#00h
ret
;****************************************
key: jb fun , keyout
lcall ys5ms
jb fun ,keyout
mov 1fh ,#100
mov 7Bh ,#00h
lcall read_24c02
MOV 1FH ,#100
mov a ,66h
LCALL IBTDA ;1
mov a ,67h
mov 75h ,a
mov a ,68h
mov 74h ,a
mov a ,69h
mov 73h ,a
mov a ,6ah
mov 72h ,a
mov a ,6bh
mov 21h ,a
MOV WDT_CONTR,#34H ;喂狗,
MOV 7AH ,#01H
lcall dis
keya:
jb up ,keyb
lcall ys5ms
jb up ,keyb
ljmp key_up
keyb:
jb down ,keyc
lcall ys5ms
jb down ,keyc
ljmp key_down
keyc:
jb qr ,keyd
lcall ys5ms
jb qr ,keyd
ljmp key_qr
keyd:
lcall ys1s
mov a ,1fh
dec a
mov 1fh ,a
cjne a ,#00h, keya
MOV A ,26H
INC A
MOV 21H,A
ljmp keyout
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -