📄 time_relay.src
字号:
;****************************************
;porgram: 大德思时间继电器 *
;mcu: sm9454 *
;date: 2007.5.18 *
;****************************************
.include "s3c9454.reg"
sys_zt equ 00h
ADJUST equ 01h ;保存状态
KEY_DATA equ 02h
KEY_OLD equ 03h
KEY_ENTER equ 04h
KEY_LONG_TEMP equ 05h
T_1MS_TEMP EQU 06H
T_1MS_FLAG equ 07h
T_2MS_TEMP equ 08h ;2ms
T_2MS_FLAG EQU 09H
t_10ms_tmp equ 0Ah ;10ms
T_10MS_FLAG equ 0BH
T_12MS_TEMP EQU 0CH
T_100MS_TEMP equ 0Dh ;100ms
T_100MS_FLAG equ 0Eh ;100ms 标志
T_300MS_TEMP EQU 0FH
T_500MS_TEMP equ 10h
T_500MS_FLAG equ 11h ;500ms 标志
T_1S_TEMP EQU 12H
T_1S_FLAG EQU 13H
T_3S_TEMP EQU 14H
T_3S_FLAG EQU 15H
T_5S_TEMP EQU 16H
T_5S_FLAG EQU 17H
T_1MIN_TEMP EQU 18H
timer_tmp3 equ 19h ;定时时间十位
time_1min equ 1Ah ;1min 存储器
time_6min equ 1Bh ;6min 存储器
KEY_TIME equ 1Ch
ram_save1 equ 1Dh ;当3个存储器全位55h时不清除ram
ram_save2 equ 1Eh
ram_save3 equ 1Fh
KEY_BUF equ 20h
dis_led equ 21h ;led显示控制
KEY_IN_IN equ 22h ;保压时间
test_tmp equ 23h
RLT_TEMP equ 24h
DIS_CP1 equ 25h ;显示切换 0:1位 1:2位 2:3位 3:4位
DIS_DP equ 26h
DIS_GW equ 27h
DIS_SW equ 28h
DIS_BW equ 29h
DIS_BUF_DP equ 2Ah
DIS_BUF_GW equ 2Bh
DIS_BUF_SW equ 2Ch
DIS_BUF_BW equ 2Dh
KEY_DIS_DP EQU 2EH
KEY_DIS_GW EQU 2FH
KEY_DIS_SW EQU 30H
KEY_DIS_BW EQU 31H
KEY_LED equ 32h
KEY_DP_TIME_POSITIVE EQU 33H
KEY_GW_TIME_POSITIVE EQU 34H
KEY_SW_TIME_POSITIVE EQU 35H
KEY_BW_TIME_POSITIVE EQU 36H
KEY_DP_TIME_MINUS EQU 37H
KEY_GW_TIME_MINUS EQU 38H
KEY_SW_TIME_MINUS EQU 39H
KEY_BW_TIME_MINUS EQU 3AH
KEY_DP_TIME_STOP EQU 3BH
KEY_GW_TIME_STOP EQU 3CH
KEY_SW_TIME_STOP EQU 3DH
KEY_BW_TIME_STOP EQU 3EH
SOU1_TEMP equ 3Fh
SOUH1_TEMP equ 40h
SADR equ 41h
SADRH equ 42h
DADR equ 43h
CNT equ 44H
SOU equ 45H
SOUH equ 46H
RLT equ 47H
RLTH equ 48H
TEMP1 equ 49H
TEMP2 equ 4AH
TEMP3 equ 4BH
TEMP4 equ 4CH
TXBUF EQU SOU
RXBUF EQU SOUH
BCOUNT EQU CNT
;*************************flag******************************
KEY_IN equ 4Dh
display_in equ 4Eh
DISPLAY_CNT equ 4Fh
KEY_LONG_EN equ 50h ;长按键确认 55h
ad_s equ 51h ;启动ad
display_new equ 52h ;显示刷新
;FLASH_FLAG equ 53h ;闪烁标志
flash_cpl equ 54h ;闪烁切换
flash_del equ 55h ;闪烁时间
sys2_ready equ 56h
KEY_TIME_SET EQU 57H
KEY_TIME_COMPARE EQU 58H
DIS_DP_TEMP EQU 59H
DIS_GW_TEMP EQU 5AH
DIS_SW_TEMP EQU 5BH
DIS_BW_TEMP EQU 5CH
KEY_DP_TEMP EQU 5DH
KEY_GW_TEMP EQU 5EH
KEY_SW_TEMP EQU 5FH
KEY_BW_TEMP EQU 60H
KEY_LED_TEMP EQU 61H
KEY_DP1 EQU 62H
KEY_GW1 EQU 63H
KEY_SW1 EQU 64H
KEY_BW1 EQU 65H
KEY_MOV_FLAG EQU 66H
T_500MS_FLAG1 EQU 67H
T_1S_FLAG1 EQU 68H
KEY_DP EQU 69H
KEY_GW EQU 6AH
KEY_SW EQU 6BH
KEY_BW EQU 6CH
;***********************************************************
org 0000h
VECTOR 00h,INT_9454
org 03ch
db 00h
db 00h
db 0E4h
db 00h
org 0100h
RESET
DI ; disable interrupt
ld P0CONL,#10101010B ; P0.0–P0.7 push-pull output
ld P2CONH ,#01001010B
AND P0,#00000000B ;关掉数码管
LD P2,#00001000B ;关发光二极管
ld BTCON ,#10100011B ; Watch-dog disable
;{
ld R0 ,#0
ld R1 ,#0
DELAY:
;延时
nop
nop
nop
nop
inc R0
cp R0 ,#200
JP ULE ,DELAY
clr R0
inc R1
cp R1 ,#10
JP ULE ,DELAY
MAIN
LD P0PND,#00H
ld CLKCON ,#10011000B ; Select non-divided CPU clock
ld SP,#0C0H ; Stack pointer must be set
ld P0CONH ,#10001010B
ld P0CONL,#10101010B ; P0.0–P0.7 push-pull output
LD P0,#0000111B
;LD P0CONL,#01010101B
ld P1CON ,#00001010B ; P1.0–P1.1 push-pull output
ld P2CONH ,#01001010B
ld P2CONL ,#10010101B ; P2.0–P2.6 push-pull output
OR P1,#00000100B
AND P0,#11110111B ;关掉数码管
LD P2,#00001000B ;关发光二极管
;--------------<< Timer 0 settings >>
;ld T0DATA ,#125 ; CPU at 4 MHz,period(1/f)=250nS
;ld T0CON ,#10001010B ; fOSC/8, Timer 0 interrupt enable interrupt interval = 250uS
;ld P0PND ,#00000010B
clr_ram:
ld r0,#0
clr_ram1:
clr @r0
inc r0
cp r0,#0c0h
jp nz,clr_ram1
; LD AD_IN,#20H
LD DIS_CP1,#0AH
LD DISPLAY_CNT,#18H
ld T_1MS_TEMP,#2
LD T_1MIN_TEMP,#60
ld T_2MS_TEMP,#2
ld t_10ms_tmp,#5
ld T_100MS_TEMP,#10
LD T_500MS_TEMP,#5
LD T_1S_TEMP,#2
LD T_5S_TEMP,#5
CLR KEY_ENTER
LD T_1MS_FLAG,#55H
LD KEY_TIME_SET,#01H
;*******************************接收I2C********************************
CALL I2CSTAR
LD TXBUF,#10100000B
CALL WRBYT
CALL CHECK
JP C,TIME
LD TXBUF,#00000001B
CALL WRBYT
CALL CHECK
CALL I2CSTAR
LD TXBUF,#10100001B
CALL WRBYT
CALL CHECK
JP C,TIME
LD R0,#0CH
RXD_STAR
CALL RBYT
RXD_DATA
CP R0,#0CH
JP NE,RXD_KEY_GW
LD KEY_DP_TIME_POSITIVE,RXBUF
RXD_KEY_GW
CP R0,#0BH
JP NE,RXD_KEY_SW
LD KEY_GW_TIME_POSITIVE,RXBUF
RXD_KEY_SW
CP R0,#0AH
JP NE,RXD_KEY_BW
LD KEY_SW_TIME_POSITIVE,RXBUF
RXD_KEY_BW
CP R0,#09H
JP NE,RXD_KEY_DP_TIME
LD KEY_BW_TIME_POSITIVE,RXBUF
RXD_KEY_DP_TIME
CP R0,#08H
JP NE,RXD_KEY_GW_TIME
LD KEY_DP_TIME_MINUS,RXBUF
RXD_KEY_GW_TIME
CP R0,#07H
JP NE,RXD_KEY_SW_TIME
LD KEY_GW_TIME_MINUS,RXBUF
RXD_KEY_SW_TIME
CP R0,#06H
JP NE,RXD_KEY_BW_TIME
LD KEY_SW_TIME_MINUS,RXBUF
RXD_KEY_BW_TIME
CP R0,#05H
JP NE,RXD_KEY_DP_STOP
LD KEY_BW_TIME_MINUS,RXBUF
RXD_KEY_DP_STOP
CP R0,#04H
JP NE,RXD_KEY_GW_STOP
LD KEY_DP_TIME_STOP,RXBUF
RXD_KEY_GW_STOP
CP R0,#03H
JP NE,RXD_KEY_SW_STOP
LD KEY_GW_TIME_STOP,RXBUF
RXD_KEY_SW_STOP
CP R0,#02H
JP NE,RXD_KEY_BW_STOP
LD KEY_SW_TIME_STOP,RXBUF
RXD_KEY_BW_STOP
CP R0,#01H
JP NE,RXD_SLAVE_ACK
LD KEY_BW_TIME_STOP,RXBUF
RXD_SLAVE_ACK
CALL MACK
DEC R0
CP R0,#00H
JP NE,RXD_STAR
CALL MANCK
CALL I2CSTOP
CP KEY_DP_TIME_POSITIVE,#20H
JP ULT,TIME_POSITIVE_CLR1
CLR KEY_DP_TIME_POSITIVE
TIME_POSITIVE_CLR1
CP KEY_GW_TIME_POSITIVE,#20H
JP ULT,TIME_POSITIVE_CLR2
CLR KEY_GW_TIME_POSITIVE
TIME_POSITIVE_CLR2
CP KEY_SW_TIME_POSITIVE,#20H
JP ULT,TIME_POSITIVE_CLR3
CLR KEY_SW_TIME_POSITIVE
TIME_POSITIVE_CLR3
CP KEY_BW_TIME_POSITIVE,#20H
JP ULT,TIME_POSITIVE_CLR4
CLR KEY_BW_TIME_POSITIVE
TIME_POSITIVE_CLR4
CP KEY_DP_TIME_MINUS,#20H
JP ULT,TIME_MINUS_CLR1
CLR KEY_DP_TIME_MINUS
TIME_MINUS_CLR1
CP KEY_GW_TIME_MINUS,#20H
JP ULT,TIME_MINUS_CLR2
CLR KEY_GW_TIME_MINUS
TIME_MINUS_CLR2
CP KEY_SW_TIME_MINUS,#20H
JP ULT,TIME_MINUS_CLR3
CLR KEY_SW_TIME_MINUS
TIME_MINUS_CLR3
CP KEY_BW_TIME_MINUS,#20H
JP ULT,TIME_MINUS_CLR4
CLR KEY_BW_TIME_MINUS
TIME_MINUS_CLR4
CP KEY_DP_TIME_STOP,#20H
JP ULT,TIME_STOP_CLR1
CLR KEY_DP_TIME_STOP
TIME_STOP_CLR1
CP KEY_GW_TIME_STOP,#20H
JP ULT,TIME_STOP_CLR2
CLR KEY_GW_TIME_STOP
TIME_STOP_CLR2
CP KEY_SW_TIME_STOP,#20H
JP ULT,TIME_STOP_CLR3
CLR KEY_SW_TIME_STOP
TIME_STOP_CLR3
CP KEY_BW_TIME_STOP,#20H
JP ULT,TIME_STOP_CLR4
CLR KEY_BW_TIME_STOP
TIME_STOP_CLR4
LD KEY_DP1,KEY_DP_TIME_POSITIVE
LD KEY_GW1,KEY_GW_TIME_POSITIVE
LD KEY_SW1,KEY_SW_TIME_POSITIVE
LD KEY_BW1,KEY_BW_TIME_POSITIVE
LD KEY_DP,KEY_DP_TIME_POSITIVE
LD KEY_GW,KEY_GW_TIME_POSITIVE
LD KEY_SW,KEY_SW_TIME_POSITIVE
LD KEY_BW,KEY_BW_TIME_POSITIVE
LD DIS_DP,KEY_DP_TIME_POSITIVE
LD DIS_GW,KEY_GW_TIME_POSITIVE
LD DIS_SW,KEY_SW_TIME_POSITIVE
LD DIS_BW,KEY_BW_TIME_POSITIVE
LD KEY_TIME_COMPARE,#01H ;下一个信号是停止
;**************T0定时******************
ld t0data,#245
ld t0con,#10000010b
EI
LD KEY_LED_TEMP,#18H ;点亮停止灯
JP TIME
;****************************发送I2C**********************************
I2COPEN
CALL I2CSTAR
LD TXBUF,#10100000B
CALL WRBYT
CALL CHECK
JP C,TIME
LD R0,#0DH
SEND_ADDRESS
CP R0,#0DH
JP NE,SEND_KEY_DP_SET
LD TXBUF,#01H
SEND_KEY_DP_SET
CP R0,#0CH
JP NE,SEND_KEY_GW_SET
LD TXBUF,KEY_DP_TIME_POSITIVE
SEND_KEY_GW_SET
CP R0,#0BH
JP NE,SEND_KEY_SW_SET
LD TXBUF,KEY_GW_TIME_POSITIVE
SEND_KEY_SW_SET
CP R0,#0AH
JP NE,SEND_KEY_BW_SET
LD TXBUF,KEY_SW_TIME_POSITIVE
SEND_KEY_BW_SET
CP R0,#09H
JP NE,SEND_KEY_DP_TIME
LD TXBUF,KEY_BW_TIME_POSITIVE
SEND_KEY_DP_TIME
CP R0,#08H
JP NE,SEND_KEY_GW_TIME
LD TXBUF,KEY_DP_TIME_MINUS
SEND_KEY_GW_TIME
CP R0,#07H
JP NE,SEND_KEY_SW_TIME
LD TXBUF,KEY_GW_TIME_MINUS
SEND_KEY_SW_TIME
CP R0,#06H
JP NE,SEND_KEY_BW_TIME
LD TXBUF,KEY_SW_TIME_MINUS
SEND_KEY_BW_TIME
CP R0,#05H
JP NE,SEND_KEY_DP_STOP
LD TXBUF,KEY_BW_TIME_MINUS
SEND_KEY_DP_STOP
CP R0,#04H
JP NE,SEND_KEY_GW_STOP
LD TXBUF,KEY_DP_TIME_STOP
SEND_KEY_GW_STOP
CP R0,#03H
JP NE,SEND_KEY_SW_STOP
LD TXBUF,KEY_GW_TIME_STOP
SEND_KEY_SW_STOP
CP R0,#02H
JP NE,SEND_KEY_BW_STOP
LD TXBUF,KEY_SW_TIME_STOP
SEND_KEY_BW_STOP
CP R0,#01H
JP NE,SEND_STAR
LD TXBUF,KEY_BW_TIME_STOP
SEND_STAR
CALL WRBYT
CALL CHECK
JP C,TIME
DEC R0
JP NZ,SEND_ADDRESS
CALL I2CSTOP
;************************时间计时********************************
TIME
TM P0,#01000000B
JP NZ,TIME2
AND P2,#11001111B ;正转、反转继电器关掉
JP T,TIME_EXIT
TIME2
CP KEY_TIME_COMPARE,#01H
JP NE,TIME2_2
OR P2,#00010000B ;正转继电器吸合
JP T,TIME2_1
TIME2_2
CP KEY_TIME_COMPARE,#02H
JP NE,TIME2_3
AND P2,#11001111B ;正转、反转继电器关掉
JP T,TIME2_1
TIME2_3
CP KEY_TIME_COMPARE,#03H
JP NE,TIME2_4
OR P2,#00100000B ;反转继电器吸合
JP T,TIME2_1
TIME2_4
AND P2,#11001111B ;正转、反转继电器关掉
TIME2_1
CP T_1S_FLAG,#55H
JP NE,TIME_SUB
; LD FLASH_FLAG,#0AAH;灭掉时钟点
SUB DIS_DP,#01H
JP NC,TIME_EXIT1
ADD DIS_DP,#0AH
SUB DIS_GW,#01H
JP NC,TIME_EXIT1
ADD DIS_GW,#06H
SUB DIS_SW,#01H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -