📄 init_sys.asm
字号:
;************************************************************
;文档类型: 原代码
;项目编号:
;文档编号:
;修订版本: v1.0
;生成日期: 2004.12.2
;文档作者: li
;审 核:
;************************************************************
;相关文档: 系统初始化
;文档编号 说明
;************************************************************
;修订版本:
;修订版本:
;************************************************************
$INCLUDE (RAML128.INC)
$INCLUDE (RAMH128.INC)
$INCLUDE (IO.INC)
$INCLUDE (PL3200.INC)
$INCLUDE (CONST.INC)
CODE_REG SEGMENT CODE
RSEG CODE_REG
PUBLIC INIT_SYS
PUBLIC INIT_SYS_REF
;************************************************************
INIT_SYS:
MOV WDI,#0A1H
NOP
NOP
SETB HW_TX
SETB HW_RX
CLR PSW.3
CLR PSW.4
MOV CKCON,#00111000B ;看门狗周期832MS,外部RAM时钟周期4.
MOV P0,#0FFH
mov P1,#0ffh
mov P2,#0ffh
mov P3,#11110011B
;SFR 初始化
MOV IP,#00000010B ;t0 is high
MOV EIP,#0
;*****************************************************
MOV PCON,#01000000B ;串口0和串口1波特率均加倍
MOV TMOD,#21H ;T0工作于方式1,t1工作于方式2(HW)
MOV TMOD1,#02H ;T2工作于方式2(RS485)
MOV TH2,#BAUD1200_H ;设置BTL.1200BPS,RS485
MOV TL2,#BAUD1200_L
MOV TH1,#BAUD1200_H ;设置BTL.1200BPS,HW
MOV TL1,#BAUD1200_L
MOV TH0,#BASETIM0_H ;设置定时器,5ms
MOV TL0,#BASETIM0_L
CLR ALU_MOD ;设置成8位运算模式
MOV IR_CNT1,#1FH ;红外通讯使用38K频率
MOV EXT_ADR,#0FEH
MOV EXT_DAT,#6
MOV PMU_ADR,#0FFH
MOV PMU_DAT,#0FFH
MOV PMU_ADR,#0FCH;电能计量控制
CLR PMU_DAT.7 ;关闭电能计量
NOP
SETB PMU_DAT.7 ;打开电能计量
CLR PMU_DAT.0
; MOV PMU_ADR,#0FDH;电能计量增益
; MOV PMU_DAT,#IAGC_CFG
; MOV PMU_ADR,#13H;有功门限H
; MOV PMU_DAT,#GATE_H
; MOV PMU_ADR,#12H;有功门限L
; MOV PMU_DAT,#GATE_L
; MOV PMU_ADR,#17H;无功门限H
; MOV PMU_DAT,#GATE_H
; MOV PMU_ADR,#16H;无功门限L
; MOV PMU_DAT,#GATE_L
MOV PMU_ADR,#0FFH
MOV PMU_DAT,#0AAH
MOV TCON,#01010001B ;#01010000B; SETB IT0
MOV SCON,#0D0h ;HW
MOV TCON1,#00010001B ;启动485定时器T2,沿触发
MOV SCON1,#50h ;10位异步收发模式,接收使能
MOV IE,#11010010B ;
MOV EIE,#00000000B ;不允许INT2中断
CLR ES1 ;不允许扩展串口中断
CLR ZJ_TX_BIT
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;系统运行重复初始化
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INIT_SYS_REF:
MOV WDI,#0A1H
SETB HW_TX
SETB HW_RX
CLR PSW.3
CLR PSW.4
SETB WP
MOV EXT_ADR,#0FFH ;增加对时钟部分写保护的冗余
MOV EXT_DAT,#0H ;05.9.8 liheng
MOV IP,#00000010B ;t0 is high
MOV EIP,#0
MOV PCON,#11000000B
MOV TMOD,#21H ;t1工作于方式2,T0工作于方式1
MOV TMOD1,#02H ;T2工作于方式2
MOV TH1,#BAUD1200_H ;设置BTL.1200BPS
MOV A,SCON
ANL A,#11010000B ;模式3,8位数据位,HW
XRL A,#11010000B ;模式3,8位数据位,HW
JZ REF_0
ORL SCON,#11010000B ;模式3,8位数据位,HW
REF_0:
MOV PMU_ADR,#0FDH ;增益
MOV A,PMU_DAT ;对计量部分的设置进行冗余处理
CJNE A,#IAGC_CFG,R_SET_PMU
; MOV PMU_ADR,#12H
; MOV A,PMU_DAT
; CJNE A,#GATE_L,R_SET_PMU
; MOV PMU_ADR,#13H
; MOV A,PMU_DAT
; CJNE A,#GATE_H,R_SET_PMU
; MOV PMU_ADR,#16H
; MOV A,PMU_DAT
; CJNE A,#GATE_L,R_SET_PMU
; MOV PMU_ADR,#17H
; MOV A,PMU_DAT
; CJNE A,#GATE_H,R_SET_PMU
MOV PMU_ADR,#0FCH ;使能计量
MOV A,PMU_DAT
ANL A,#81H
CJNE A,#80H,R_SET_PMU
JMP PMU_SET_OK
R_SET_PMU: MOV PMU_ADR,#0FFH
MOV PMU_DAT,#0FFH
MOV PMU_ADR,#0FCH
SETB PMU_DAT.7
CLR PMU_DAT.0
; MOV PMU_ADR,#12H
; MOV PMU_DAT,#GATE_L
; MOV PMU_ADR,#13H
; MOV PMU_DAT,#GATE_H
; MOV PMU_ADR,#16H
; MOV PMU_DAT,#GATE_L
; MOV PMU_ADR,#17H
; MOV PMU_DAT,#GATE_H
MOV PMU_ADR,#0FDH
MOV PMU_DAT,#IAGC_CFG
MOV PMU_ADR,#0FFH
MOV PMU_DAT,#0AAH
PMU_SET_OK:
REF_1:
MOV IR_CNT1,#1FH ;红外通讯使用38K频率
MOV EXT_ADR,#0FEH
MOV EXT_DAT,#6
MOV A,IE
ANL A,#10000010B
XRL A,#10000010B
JZ REF_2
ORL IE,#10000010B
REF_2:
JB TR0,REF1
SETB TR0
REF1: JB IT2,REF2
SETB IT2
REF2: JB TR1,REF3
SETB TR1
REF3:
MOV EIE,#00000000B ;不允许INT2中断
NOP
NOP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -