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

📄 time_relay.src

📁 一个时间继电器程序,是用三星单片机+汇编语言写的.
💻 SRC
📖 第 1 页 / 共 3 页
字号:
        JP  T,TIME 
;****************3s  FLAG****************
KEY_ADD_EXIT_1
        TM   P2,#00000100B
        JR   Z,KEY_ADD_EXIT_3S
        LD   T_3S_FLAG,#0AAH
        JP   T,TIME 
KEY_ADD_EXIT_3S
        CP   T_100MS_FLAG,#55H
        JR   NE,KEY_ADD_EXIT_3S
        LD   T_100MS_FLAG,#0AAH
        DEC  T_3S_TEMP
        JR   NZ,KEY_ADD_EXIT_1
        LD   T_3S_FLAG,#55H
        JP   T,TIME 
;********************        
KEY_DEC
        CP  KEY_ENTER,#01H
        JP  ULT,KEY_DEC_ADD 
        CP  KEY_MOV_FLAG,#03H
        JP  UGE,KEY_BW_DEC         ;代表百位标志 
        CP  KEY_MOV_FLAG,#02H    ;代表十位标志 
        JP  EQ,KEY_SW_DEC
        CP  KEY_MOV_FLAG,#01H      ;代表个位标志 
        JP  ULT,KEY_DEC1
        JP  EQ,KEY_GW_DEC
        ;JP  T,KEY_DEC_EXIT         
KEY_DEC1
        SUB KEY_DP,#01H
        JR  C,KEY_DEC2
        JP  KEY_DEC_EXIT
KEY_DEC2
        LD  KEY_DP,#09H
KEY_GW_DEC        
        SUB KEY_GW,#01H
        JR  C,KEY_DEC3
        JP  KEY_DEC_EXIT
KEY_DEC3
        LD  KEY_GW,#05H
KEY_SW_DEC
        SUB KEY_SW,#01H
        JP  C,KEY_DEC4
        JP  KEY_DEC_EXIT
KEY_DEC4
        LD  KEY_SW,#09H
KEY_BW_DEC
        SUB KEY_BW,#01H
        JR  C,KEY_DEC5
        JP  KEY_DEC_EXIT
KEY_DEC5 
        CLR  KEY_DP
        CLR  KEY_GW
        CLR  KEY_SW
        CLR  KEY_BW
KEY_DEC_EXIT
        LD  T_300MS_TEMP,#10
        LD  T_3S_TEMP,#10
        CP  T_3S_FLAG,#55H
        JR  NE,KEY_DEC_EXIT_1
;****************300ms FLAG****************
KEY_DEC_EXIT_0
        TM   P2,#00000010B
        JR  Z,KEY_DEC_EXIT_300MS
        LD  T_3S_FLAG,#0AAH
        JP  T,TIME   
KEY_DEC_EXIT_300MS
        CP  T_10MS_FLAG,#55H
        JR  NE,KEY_DEC_EXIT_300MS
        LD  T_10MS_FLAG,#0AAH
        DEC T_300MS_TEMP
        JR  NZ,KEY_DEC_EXIT_0
        JP  T,TIME  
;****************3s  FLAG****************
KEY_DEC_EXIT_1
        TM   P2,#00000010B
        JR   Z,KEY_DEC_EXIT_3S
        LD   T_3S_FLAG,#0AAH
        JP   T,TIME 
KEY_DEC_EXIT_3S
        CP   T_100MS_FLAG,#55H
        JR   NE,KEY_DEC_EXIT_3S
        LD   T_100MS_FLAG,#0AAH
        DEC  T_3S_TEMP
        JR   NZ,KEY_DEC_EXIT_1
        LD   T_3S_FLAG,#55H
        JP   T,TIME 
;******************加减同时按下进入复位状态************
KEY_ADD_DEC 
        TM   P2,#00000010B
        JP   NZ,TIME
        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_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
        JP   T,KEY_ADD_DEC_EXIT
KEY_DEC_ADD 
        TM   P2,#00000100B
        JP   NZ,TIME
        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_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    
KEY_ADD_DEC_EXIT 
        TM   P2,#00000100B
        JP   Z,KEY_ADD_DEC_EXIT
        TM   P2,#00000010B
        JP   Z,KEY_ADD_DEC_EXIT 
        JP   T,TIME   
;****************移位*******************
KEY_MOV
        CP   KEY_ENTER,#00H
        JP   EQ,KEY_MOV_EXIT      ;不动作退出 
KEY_MOV_1
        INC   KEY_MOV_FLAG       ;代表加位标志 
        CP    KEY_MOV_FLAG,#04H
        JP    ULT,KEY_MOV_EXIT
        CLR   KEY_MOV_FLAG
KEY_MOV_EXIT 
        TM   P2,#00000001B
        JR   Z,KEY_MOV_EXIT       
        JP   T,TIME
;****************EXIT*******************
KEY_EXIT
        JP  T,TIME
;*************************数码管显示程序**************************
DISPLAY3
        CP   DIS_CP1,#0AH
        JR   NE,DISPLAY1
        LD   R3,#2AH    ;DIS_BUF_DP
        LD   DISPLAY_CNT,#2AH
DISPLAY1
        DEC  DIS_CP1
        LD   R3,DISPLAY_CNT
        LD   CNT,#08H
        LD   R4,#00H
        LD   R5,@R3
        INC  DISPLAY_CNT
        LDC  R0,#LED_TABLE[RR4]
      ;  LD   P2CONL,#10100110B	; P2.0–P2.6 push-pull output P2。0推挽式输出 
        AND  P0,#11110111B      ;关掉数码管 
        OR   P2,#00001000B      ;关发光二极管 
NEXT1        
        RLC  R0
        OR   P0,#00010000B         ;发送数据 
        JR   C,NEXT2
        AND  P0,#11101111B
NEXT2
        NOP
        NOP
        AND  P0,#11011111B         ;发送时钟 
        NOP
        NOP
        OR   P0,#00100000B
        DEC  CNT
        JR   NZ,NEXT1
        cp   DIS_CP1,#6  ;8
        jp   eq,DIS1
        cp   DIS_CP1,#7  ;7
        jp   eq,DIS2
        cp   DIS_CP1,#8  ;6
        jp   eq,DIS3
        CP   DIS_CP1,#9   ;5
        Jp   eq,DIS4
        CP   DIS_CP1,#1
        JP   EQ,KEY_LED1
        CP   DIS_CP1,#2
        JP   EQ,KEY_DIS1
        CP   DIS_CP1,#3
        JP   EQ,KEY_DIS2
        CP   DIS_CP1,#4
        JP   EQ,KEY_DIS3
        CP   DIS_CP1,#5
        JP   EQ,KEY_DIS4
DIS1
        AND  P0,#11111000B    ;Y0为低电平 
        OR     P0,#00001000B          ;开数码管 
        RET
DIS2 
        AND  P0,#11111001B
        OR   P0,#00001001B    ;Y1为低电平 
        ;OR   P0,#00001000B      ;开数码管 
        RET
DIS3
        AND  P0,#11111010B
        OR   P0,#00001010B     ;Y2为低电平 
        ;OR   P0,#00001000B      ;开数码管 
        RET
DIS4
        AND  P0,#11111011B
        OR   P0,#00001011B    ;Y3为低电平 
       ; OR   P0,#00001000B     ;开数码管 
        RET
KEY_DIS1
        AND  P0,#11111100B
        OR   P0,#00001100B    ;Y4为低电平 
       ; OR   P0,#00001000B      ;开数码管         
        RET
KEY_DIS2
        AND  P0,#11111101B
        OR   P0,#00001101B    ;Y5为低电平 
        ;OR   P0,#00001000B      ;开数码管 
        RET
KEY_DIS3
        AND  P0,#11111110B
        OR   P0,#00001110B    ;Y6为低电平 
        ;OR   P0,#00001000B      ;开数码管 
        RET
KEY_DIS4
        OR   P0,#00001111B     ;Y7为低电平       
       ; OR   P0,#00001000B      ;开数码管 
        RET
KEY_LED1
        AND   P2,#11110111B
        LD   DISPLAY_CNT,#2AH
        LD   DIS_CP1,#0AH
        RET                    
;****************************I2CSTAR********************************** 
;本程序实现在虚拟I2C总线上发送起始位。
;入口参数:无
;出口参数:无 
I2CSTAR
        LD     P0CONH,#10001010B    ;P0输出
        LD     P2CONH,#01001010B    ;P2输出 
        OR     P2,#01000000B        ;SDA置位 
        OR     P0,#10000000B        ;SCL置位 
        NOP
        NOP
        NOP
        AND    P2,#10111111B         ;SDA清零        
        NOP
        NOP 
        NOP
        AND    P0,#01111111B        ;SCL清零 
        RET
;****************************I2CSTOP********************************** 
;本程序实现在虚拟I2C总线上发送结束位。
;入口参数:无
;出口参数:无 
I2CSTOP
        AND    P2,#10111111B         ;SDA清零 
        ;LD     P0CONH,#10101011B    ;P0输出
        LD     P2CONH,#01011010B    ;P2输出 
        NOP   
        OR     P0,#10000000B        ;SCL置位 
        NOP
        NOP
        NOP
        OR     P2,#01000000B        ;SDA置位 
        RET
;*******************************MACK***********************************
;本程序实现在虚拟I2C总线上发送应答位。
;入口参数:无 
;出口参数:无
MACK  
        AND    P2,#10111111B         ;SDA清零 
        LD     P0CONH,#10001010B    ;P0输出
        LD     P2CONH,#01001010B    ;P2输出 
        OR     P0,#10000000B        ;SCL置位 
        NOP
        NOP
        NOP
        AND    P0,#01111111B        ;SCL清零  
        OR     P2,#01000000B        ;SDA置位 
        RET
;**************************MNACK*****************************************
;本程序实现在虚拟I2C总线上发送非应答位。
;入口参数:无 
;出口参数:无  
MANCK
        OR     P2,#01000000B        ;SDA置位 
        LD     P0CONH,#10001010B    ;P0输出
        LD     P2CONH,#01001010B    ;P2输出 
        OR     P0,#10000000B        ;SCL置位 
        NOP
        NOP
        NOP
        AND    P0,#01111111B        ;SCL清零  
        AND    P2,#10111111B         ;SDA清零 
        RET
;****************************CHECK************************************* 
 ;本程序实现在虚拟I2C总线上检测应答位。
;入口参数:无 
;出口参数:无 
CHECK
        LD     P2CONH,#01011010B    ;P2输出 
        OR     P2,#01000000B        ;SDA置位 
        NOP
        NOP
        OR     P0,#10000000B        ;SCL置位 
        LD     P2CONH,#0001010B    ;P2高电平输入 
        SCF
        TM     P2,#01000000B         ;检测SDA是否为高电平
        JR     NZ,CHECK1
        RCF
CHECK1
        AND    P0,#01111111B        ;SCL清零  
        LD     P2CONH,#01011010B    ;P2输出 
        RET
;***************************WRBYT**************************************
;本程序实现向虚拟I2C总线上发送1字节数据 
;入口参数:数据在TXBUF
;出口参数:无
WRBYT
        LD     BCOUNT,#08H
        LD     P2CONH,#01001010B    ;P2高电平输出 
WLP
        RLC    TXBUF
        JP     C,WR1
        AND    P2,#10111111B         ;SDA清零 
       ; AND    TXBUF,#11111110B
        OR     P0,#10000000B        ;SCL置位 
        NOP
        NOP
        NOP
        AND    P0,#01111111B        ;SCL清零 
        JP     DONE
WR1
        OR     P2,#01000000B        ;SDA置位  
       ; OR     TXBUF,#00000001B
        OR     P0,#10000000B        ;SCL置位  
        NOP
        NOP
        NOP
        AND    P0,#01111111B        ;SCL清零  
        AND    P2,#10111111B         ;SDA清零 
DONE
        DEC    BCOUNT
        JP     NZ,WLP
        RET
;****************************RDBYT***********************************
;本程序实现向虚拟I2C总线上接收1字节数据 
;入口参数:无
;出口参数:数据在RXBUF
RBYT
        LD     BCOUNT,#08H
        LD     P2CONH,#00001010B    ;P2高电平输入 
RLP
        OR     P0,#10000000B        ;SCL置位 
        SCF
        TM     P2,#01000000B         ;检测SDA是否为高电平
        JP     NZ,RLP1
        RCF
RLP1
        RLC    RXBUF
        AND    P0,#01111111B        ;SCL清零 
        DEC    BCOUNT
        JP     NZ,RLP
        RET
LED_TABLE:
        DB 0C0H,0F9H,0A4H,0B0H
        DB 99H,92H,82H,0F8H
        DB 80H,90H
        DB 40H,79H,24H,30H
        DB 19H,12H,02H,78H
        DB 00H,10H
        DB 92H  ;s  14H 
        DB 86H  ;E
        DB 87H  ;t 
        DB  0FFH     ;17H
        DB 0FEH  ;11111110b
        DB 0FDH  ;11111101B
        DB 0FBH  ;11111011B  1AH
        DB 0F7H  ;显示_ 1bh
;***************************中断程序**********************************	      
INT_9454:	
        and     t0con,#11111110b
        OR      T0CON,#00001000B
        PUSH	FLAGS
        PUSH    R0
        PUSH    R3
        PUSH    R4
        PUSH    R5
        PUSH    CNT  
                            
int_s:
                DEC    T_1MS_TEMP
                JP     NZ,int_end
                LD     T_1MS_TEMP,#02
                LD     T_1MS_FLAG,#55H
                CALL    DISPLAY3
INT_S_1
                dec	T_2MS_TEMP
		jp	NZ,int_end
                ld	T_2MS_TEMP,#2
                LD      T_2MS_FLAG,#55H
                dec     t_10ms_tmp
                jp      NZ,int_end
;int_1:
                ld      t_10ms_tmp,#5
                LD      T_10MS_FLAG,#55H
                DEC     T_100MS_TEMP
                JP      NZ,int_end                
                LD      T_100MS_TEMP,#10
                LD      T_100MS_FLAG,#55H
                DEC     T_500MS_TEMP
                JP      NZ,int_end                
                LD      T_500MS_TEMP,#5
                LD      T_500MS_FLAG,#55H
                LD      T_500MS_FLAG1,#55H
                DEC     T_1S_TEMP
                JP      NZ,int_end                
                LD      T_1S_TEMP,#2
                LD      T_1S_FLAG,#55H
                LD      T_1S_FLAG1,#55H
                DEC     T_5S_TEMP
                JP      NZ,int_end
                LD      T_5S_TEMP,#5
                LD      T_5S_FLAG,#55H         
int_end:
                POP    CNT
                POP    R5
                POP    R4
                POP    R3
                POP    R0
                POP    FLAGS
                IRET
                END      
                      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -