⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcu.asm

📁 ds1302 汇编源代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
 ;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 + -