我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1921|回复: 8

[技术文章] STC12C2052的外部报警采集程序

[复制链接]

该用户从未签到

3

主题

0

回帖

0

积分

一级逆天

积分
0

终身成就奖

发表于 2019-5-26 16:16:09 | 显示全部楼层 |阅读模式
    JC_ADDRH    EQU    0FEH        ;模块地址高
    JC_ADDRL    EQU    01H        ;模块地址低
    WDT_CONTR    EQU    0E1H           ;定义看门狗
    SET1        BIT    P3.2
    SET2        BIT    P3.3
    OUTS        BIT    P3.5
;-------中断向量表
    ORG 0000H   
    NOP
    SJMP BEGIN    ;转主程序
    ORG 0003H    ;外部中断0
    RETI
    ORG 000BH    ;定时器0
    AJMP    TIME0   
    ORG 0013H    ;外部中断1
    RETI
    ORG 001BH    ;定时器1
    RETI
    ORG 0023H    ;串行口
    AJMP    INTS_S
    ORG 002BH    ;定时器2/ADC/SPI
    RETI
    ORG 0033H    CA/LVD/外部中断2
    RETI
    ORG 003BH    ;外部中断3
    RETI
;-------中断向量表结束
    ORG     0040H
BEGIN:    MOV     SP,#5FH        ;系统初始化
    MOV     IE,#0H
    MOV     20H,#00H         ;清标志位
    MOV     21H,#00H         ;清标志位
    CLR     OUTS
    SETB    SET1
    SETB    SET2
MAIN:    MOV     28H,#0FFH       ;1--8号传感有被击发保存数据
    MOV     29H,#0FFH    ;9--16号传感有被击发保存数据
    MOV     2AH,#0FFH    ;17--24号传感有被击发保存数据
    MOV     2BH,#0FFH    ;25--32号传感有被击发保存数据
    MOV     25H,#JC_ADDRH
    MOV     26H,#JC_ADDRL   
;-------准备接受探点开启,关毕命令比较字串
    MOV    30H,#0FEH    ;CMT001A的协议格式
    MOV    31H,#0FEH    ;CMT001A的协议格式
    MOV    32H,#0FEH    ;CMT001A的协议格式
    MOV    33H,#68H    ;CMT001A的协议格式
    MOV    34H,#11H
    MOV    35H,25H   
    MOV    36H,26H
    MOV    37H,#00H   
    MOV    38H,#00H
    MOV    39H,#0FFH   
    MOV    3AH,#0FFH
    MOV    3BH,#16H
;准备接受命令比较字串结束
;准备写开启,关毕命令发送字串
    MOV    3CH,#0FEH    ;CMT001A的协议格式
    MOV    3DH,#0FEH    ;CMT001A的协议格式
    MOV    3EH,#0FEH    ;CMT001A的协议格式
    MOV    3FH,#11H    ;本模块可用命令
     MOV    40H,25H   
    MOV    41H,26H
    MOV    42H,#00H   
    MOV    43H,#00H
    MOV    44H,#0FFH
    MOV    45H,#0FFH   
    MOV    46H,#16H      ;命令结束符
;-------准备写地址发送字串结束
;-------准备接受读报警命令比较字串
    MOV    47H,#0FEH    ;CMT001A的协议格式
    MOV    48H,#0FEH    ;CMT001A的协议格式
    MOV    49H,#0FEH    ;CMT001A的协议格式
        MOV    4AH,#68H    ;CMT001A的协议格式
    MOV    4BH,#22H    ;本模块可用命令
     MOV    4CH,25H   
    MOV    4DH,26H
    MOV    4EH,#16H        ;命令结束符
;准备写读报警命令比较字串
    MOV    50H,#0FEH    ;CMT001A的协议格式
    MOV    51H,#0FEH    ;CMT001A的协议格式
    MOV    52H,#0FEH    ;CMT001A的协议格式
    MOV    53H,#22H
    MOV    54H,25H   
    MOV    55H,26H
    MOV    56H,#00H   
    MOV    57H,#00H
    MOV    58H,#00H
        MOV    59H,#00H   
    MOV    5AH,#0FFH
    MOV    5BH,#0FFH
    MOV    5CH,#0FFH
        MOV    5DH,#0FFH
    MOV    5EH,#16H
;-----准备写读报警命令比较字串结束
;     MOV    AUXR,#40H    ;设定定时器1为1T方式定时器0为12T方式
    MOV    TMOD,#21H    ;设定定时器1为方式2(八位自动重装)设定时器0方式1(16位定时器)
    MOV    TH1,#0FAH    ;设置4800b/s的波特率
    MOV    TL1,#0FAH
    MOV    SCON,#50H    ;设定串行口为8位UART接收
    CLR    PT0        ;将定时器0中断设为低优先级
    SETB    PS        S=1将串行中断设为高优先级
    MOV    IE,#92H        ;开中断总允许,串行中断,定时器0中断
    SETB    TR1        ;起动定时器1

    MOV     23H,#04H         
    MOV     24H,#0E8H

    MOV    R0,#47H        ;设定接受数据的比较单元
    MOV    R2,#04H        ;接受数据比较长度
    MOV    TH0,#094H    ;设置定时器0定时30mS
    MOV    TL0,#00H
    SETB    TR0        ;起动定时器0
    MOV    WDT_CONTR,#3BH    ;启动看门狗
;-------读安防模块开始







R_DATE: CLR    EA
    CLR    SET1
    MOV    28H,P0
    MOV    29H,P2
    SETB    SET1
    CLR    SET2
    MOV    2AH,P0
    MOV    2BH,P2
    SETB    SET2
    SETB    EA   
    MOV    A,2CH
    CJNE    A,28H,NOTEQU
    CJNE    A,29H,NOTEQU
    CJNE    A,2AH,NOTEQU
    CJNE    A,2BH,NOTEQU
    DJNZ    2DH,SLP
    MOV    2DH,#10H
STORAGE:MOV    A,28H
    MOV    56H,A
    CPL    A
    MOV    5AH,A

    MOV    A,29H
    MOV    57H,A
    CPL    A
    MOV    5BH,A

    MOV    A,2AH
    MOV    58H,A
    CPL    A
    MOV    5CH,A

    MOV    A,2BH
    MOV    59H,A
    CPL    A
    MOV    5DH,A
    SJMP    SLP

NOTEQU:    DJNZ    27H,SLP
    MOV    27H,#03H
    SJMP    STORAGE
SLP:    MOV    PCON,#01H    ;使得芯片睡眠,由中断唤醒
    MOV    WDT_CONTR,#3BH    ;喂狗
    JNB    04H,SLP        ;非定时器0中断唤醒转读数据
    CLR    04H            
    LJMP    R_DATE            
    SJMP    SLP        ;继续睡眠

;串行中断子程序
INTS_S: PUSH    ACC
    JBC     TI,SEND
    CLR     RI
    JB      01H,CD_ADD1    ;转写安防数据接收与判断子程序
    JB      03H,R_DATA1    ;转读安防模块接收
    JB      02H,C_ADD1    ;转写安防模块地址判断接收
    JBC     00H,R_DATA
S_ALL:    MOV    A,@R0
    CJNE    A,SBUF,T_EXIT    ;比较接受命令字串
    INC    R0
    DJNZ    R2,T_CONT    ;比较结束是否继续
    SETB    00H        ;置CMBUS正确标志
T_CONT:    POP     ACC
    RETI
SEND:   DJNZ    R3,W_CONT
    SETB    REN        ;开串行接收
    SJMP    T_EXIT
W_CONT:    INC    R1
    MOV    A,@R1
    MOV    SBUF,A
    POP     ACC
    RETI
;------判断为何种命令
R_DATA:    MOV    A,SBUF
    CJNE   A,#22H,CW_ADD    ;非读命令跳至写命令命令判断
    SETB   03H        ;设置读地址标志位
    MOV    R0,#4CH
    MOV    R2,#03H   
    POP    ACC
    RETI
CW_ADD: CJNE   A,#11H,T_EXIT
        SETB   02H
        MOV    R0,#35H
        MOV    R2,#02H
    POP    ACC
        RETI
;-------判断结束
T_EXIT: MOV    20H,#00H            ;清所有标志
    MOV    R0,#47H
    MOV    R2,#04H
    POP    ACC
    RETI
;-----接收检查读安防模块命令
R_DATA1:MOV    A,@R0
    CJNE   A,SBUF,T_EXIT
    INC    R0
    DJNZ   R2,R_EXIT
    CLR    03H
        CLR    REN        ;停串行接收
    MOV    R1,#50H
    MOV    R3,#13H
    CLR    TR0
    MOV    TH0,#0CAH    ;设置定时器0定时15MS
    MOV    TL0,#00H
    SETB   TR0        ;起动定时器0
    MOV    20H,#00H            ;清所有标志
    SETB   07H        ;置发送标志
R_EXIT: POP    ACC
    RETI
;-----接收检查写安防模块命令
C_ADD1: MOV    A,@R0
    CJNE   A,SBUF,T_EXIT
    INC    R0
    DJNZ   R2,C_EXIT
    CLR    02H
    SETB   01H
    MOV    R0,#37H
    MOV    R2,#05H
C_EXIT: POP    ACC
    RETI


CD_ADD1:MOV    A,SBUF
    MOV    @R0,A
    INC    R0
    DJNZ   R2,CD_EXIT
           CLR    01H
    MOV    A,37H              ;检查数据是否正确
    CPL    A
    CJNE   A,39H,T_EXIT
    MOV    44H,A
    CPL    A
    MOV    42H,A
    MOV    A,38H
    CPL    A
    CJNE   A,3AH,T_EXIT
    MOV    45H,A
    CPL    A
    MOV    43H,A
    MOV    A,3BH
    CJNE   A,#16H,T_EXIT
    CLR     REN
    SJMP   W_SAFE               ;转向执行程序段
CD_EXITOP     ACC
    RETI
;---执行程序段
W_SAFE:   
;-------输出模块
    MOV    A,39H
    MOV    P0,A
    MOV     A,3AH
    MOV    P2,A
    SETB    OUTS
;-------输出模块结束
    CLR    TR0
    MOV    TH0,#0CAH    ;设置定时器0定时15mS
    MOV    TL0,#00H
    SETB    TR0        ;起动定时器0
    CLR     OUTS
;-------串行发送子程序
    MOV    R1,#3CH        ;发送数据的起始地址
    MOV    R3,#13H        ;发送数据的长度
    CLR     TR0
    MOV     TH0,#0CAH    ;设置定时器0定时15MS
    MOV     TL0,#00H
    SETB    TR0        ;起动定时器0
    MOV     20H,#00H        ;清所有标志
    SETB    07H        ;置发送标志
    POP     ACC
    RETI

;-------定时器0中断子程序
TIME0:    JNB    07H,CTC_E    ;发送标志为0转下
    CLR    07H        ;清发送标志
    MOV    A,@R1        ;发送数据
    MOV    SBUF,A
CTC_E:    SETB    04H
    MOV    TH0,#094H    ;设置定时器0定时30MS
    MOV    TL0,#00H
    SETB    TR0        ;起动定时器0
    RETI
;-------定时器0中断子程序结束
END
回复

使用道具 举报

该用户从未签到

8

主题

470

回帖

0

积分

PADS-190603高级班

积分
0

终身成就奖

发表于 2019-5-26 16:31:32 | 显示全部楼层
回复

使用道具 举报

  • TA的每日心情
    开心
    2024-9-7 09:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    0

    主题

    4981

    回帖

    3456

    积分

    二级逆天

    积分
    3456

    终身成就奖社区居民优秀斑竹奖

    QQ
    发表于 2019-5-26 17:42:32 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-7-12 18:48
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    2

    主题

    858

    回帖

    839

    积分

    二级逆天

    积分
    839

    终身成就奖优秀斑竹奖

    QQ
    发表于 2019-5-26 22:54:18 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-29 20:33
  • 签到天数: 1 天

    [LV.1]初来乍到

    48

    主题

    6492

    回帖

    7755

    积分

    二级逆天

    积分
    7755

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2019-5-27 08:05:14 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-6-14 16:03
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    0

    主题

    1万

    回帖

    7618

    积分

    二级逆天

    积分
    7618

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2019-5-27 11:26:53 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    29

    主题

    1427

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖特殊贡献奖原创先锋奖

    发表于 2023-2-12 08:49:35 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    4 小时前
  • 签到天数: 76 天

    [LV.6]常住居民II

    0

    主题

    1430

    回帖

    3111

    积分

    二级逆天

    积分
    3111

    社区居民终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2023-2-13 08:52:32 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-8-16 08:57
  • 签到天数: 35 天

    [LV.5]常住居民I

    6

    主题

    1万

    回帖

    2万

    积分

    三级逆天

    积分
    20494

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2023-2-13 08:57:02 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    论坛开启做任务可以
    额外奖励金币快速赚
    积分升级了


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    平平安安
    TOP
    快速回复 返回顶部 返回列表