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

📄 jidainqi.asm

📁 含有注释的继电器控制程序
💻 ASM
字号:
CLSECOND  DATA 5DH;定义时钟中间两个点闪动
CLOCK5 DATA 5EH ;定义小时高位
CLOCK  DATA 5FH ;定义小时低位
CLOCK0 DATA 60H ;定义分钟高位
CLOCK1 DATA 61H  ; 定义分钟低位
CLOCK2 DATA 62H ; 定义秒钟高位
CLOCK3 DATA 63H ;定义秒钟低位
CLOCK4 DATA 64H ;值每100进位给秒

CLOCK6 DATA 65H ; --以下四个空间是为了把小时和分钟送给修改部分--
CLOCK7 DATA 66H 
CLOCK8 DATA 67H
CLOCK9 DATA 68H
        DATA1 DATA 70H;显示温度个位
        DATA2 DATA 71H ;显示温度十位
        DATA3 DATA 72H ;显示温度百位
        DATA4 DATA 73H  ;--以下三个空间是用于设定温度使蜂鸣器工作--
        DATA5 DATA 74H ; 十
        DATA6 DATA 75H ;个
        DATA7 DATA 76H ;---以下三个空间用于蜂鸣器---
        DATA8 DATA 77H ; 十
        DATA9 DATA 78H;  百
       
        ORG 0000H
LJMP MAIN1
ORG 000BH
LJMP DVT0
        ORG 0100H
MAIN1   :
;-------内存清零------

CLRRAM:  MOV   R0 , #2
         MOV   R1 , #7EH
         MOV   A  , #0
CLRRAM1: MOV   @R0, A
         INC   R0
         DJNZ  R1 , CLRRAM1
         MOV SP,#32H

DISPLAY_P:MOV P2,#0F7H ;显示P.
         MOV A,#0CH
         MOV DPTR,#0EFFFH
         MOVX @DPTR,A
         LCALL DELAY
         JNB P1.0,TEMDISPL;按p1。0跳转,开始显示温度
         AJMP DISPLAY_P
MAIN:    JNB P1.1,CHANGE0
         SJMP TEMDISP
CHANGE0:LCALL CHANGE
TEMDISPL:JNB P1.0,$;等待按键放开
MOV TMOD,#01H;定时器T0为定时10ms
MOV TH0,#0DCH
MOV TL0,#09H
SETB ET0;设置中断
SETB EA
SETB TR0
SJMP TEMDISP
TIMETOTEM:JNB P1.0,$
TEMDISP:JNB P1.0,TIME_DISPLAY1 ;p1.0按下跳转显示时间






;-----信号输入-----

ADC0804 : MOV R2,#80H
          MOV R5,#00H
          MOV R1,#DATA1
ADC08041:JNB P1.1,CHANGE0
         CLR C
          MOV DPTR,#0FFFFH
MOVX @DPTR,A
JB P3.2,$
MOVX A,@DPTR
MOV DPTR,#7FFFH
MOVX A,@DPTR
ADD A,@R1
MOV @R1,A
JNC NEXT
INC R5
JNB P1.0,TIME_DISPLAY1
NEXT:DJNZ R2,ADC08041
MOV A,R5
MOV B,#100
DIV AB         ; 取百位数 余数在B寄存器
MOV DATA3,A   ;把百位存入百位寄存器DISPBUF
MOV A,B         ;余数再送A
MOV B,#10       ;余数除10商为十位数
DIV AB           ; 除法,余数在寄存器B
MOV DATA2,A    ;A是十位数存第二位显示寄存器
MOV DATA1,B     ; B是个位数存第三位显示寄存器

SJMP DISP
TIME_DISPLAY1:LJMP TIME_DISPLAY ;中转指令
DISP0:JNB P1.0,$
      MOV DATA1,DATA6
      MOV DATA2,DATA5
      MOV DATA3,DATA4
      MOV DATA7,DATA6
      MOV DATA8,DATA5
      MOV DATA9,DATA4

;----显示温度程序-----

DISP:   MOV R4,#0FFH ;延时数字显示时间
DISP1:  MOV R1,#DATA3  ;置数据存储区首地址
        MOV R2,#0FEH        ;置选通数码管位
        MOV R3,#03H ;显示位数
DISP2: JNB P1.1,CHANGE0
        MOV P2,R2
        MOV A,@R1
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV DPTR,#0EFFFH;LS377地址
        MOVX @DPTR,A
        LCALL DELAY
        DEC R1
        MOV A,R2
        RL A
        MOV R2,A
        JNB P1.0,TIME_DISPLAY_0
        DJNZ R3,DISP2

        MOV P2,#0D7H ;显示摄氏度
        MOV A,#0C6H
        MOV DPTR,#0EFFFH
        MOVX @DPTR,A
        LCALL DELAY

        DJNZ R4,DISP1
;------蜂鸣器-------
        MOV A,DATA9
        CLR C
        SUBB A,DATA3
        JC SOUND
        MOV A,DATA8
        SUBB A,DATA2
        JC SOUND
        MOV A,DATA7
        SUBB A,DATA1
        JC SOUND
        SETB P1.7
        SETB P1.4
        AJMP MAIN
CHANG_12:LJMP CHANGE0        
        
SOUND  :CLR P1.7
        CLR P1.4;制冷

        AJMP MAIN

TIME_DISPLAY_0:LJMP TIME_DISPLAY
;-----设定显示值-----
CHANGE: JNB P1.1,$
        MOV DATA6,DATA1
        MOV DATA5,DATA2
        MOV DATA4,DATA3
CHANGE2:MOV R1,#DATA4
        MOV R2,#0FEH

TEMSET :MOV P2,R2
        MOV A,@R1
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV DPTR,#0EFFFH
        MOVX @DPTR,A
        LCALL DELAY

        JNB P1.0,DISP_000


        JNB P1.2,ADD1
        JNB P1.3,SUB1
        JB P1.1,TEMSET
        JNB P1.1,$

        INC R1
        MOV A,R2
        RL A
        MOV R2,A
        CJNE R2,#0F7H,CHANGE1
        SJMP CHANGE2
DISP_000:LJMP DISP0       
CHANGE1:AJMP TEMSET
ADD1   :JNB P1.2,$
        INC @R1
        CJNE @R1,#0AH,ADD11
        MOV @R1,#00H
ADD11  :AJMP TEMSET
SUB1   :JNB P1.3,$
        DEC @R1
        CJNE @R1,#0FFH,SUB11
        MOV @R1,#09H
SUB11  :AJMP TEMSET

TEMDISP1:LJMP TEMDISP



;----时间显示程序-----
;------秒钟的跳动中断---------
TIME_DISPLAY:JNB P1.0,$
TIMEDISP:   MOV R4,#0FH ;延时数字显示时间
TIMEDISP1:  MOV R1,#CLOCK5  ;置数据存储区首地址
        MOV R2,#0FEH        ;置选通数码管位
        MOV R3,#04H ;显示位数
TIMEDISP2:JNB P1.1,CHANGETIME
         JNB P1.0,TIME_TO_TEM
        MOV P2,R2
        MOV A,@R1
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV DPTR,#0EFFFH;LS377地址
        MOVX @DPTR,A
        LCALL DELAY
        INC R1
        MOV A,R2
        RL A
        MOV R2,A
        DJNZ R3,TIMEDISP2
        JB P3.0,AA
        CLR P2.6
        LCALL DELAY_1 ;为了使灯亮点,可以适当加长延迟时间
 AA:    DJNZ R4,TIMEDISP1



      JNB P1.1,CHANGETIME
        SJMP TIMEDISP
TIMEDISP0:JNB P1.0,$
        MOV CLOCK5, CLOCK6
        MOV CLOCK, CLOCK7
        MOV CLOCK0, CLOCK8
        MOV CLOCK1, CLOCK9
        SETB EA
        MOV CLOCK2,#00H
        MOV CLOCK3,#00H
        MOV CLOCK4,#00H
 TIME_DISP:   MOV R4,#0FFH ;延时数字显示时间
TIME_DISP1:  MOV R1,#CLOCK5  ;置数据存储区首地址
        MOV R2,#0FEH        ;置选通数码管位
        MOV R3,#04H ;显示位数
TIME_DISP2:JNB P1.0,TIME_TO_TEM
         MOV P2,R2
        MOV A,@R1
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV DPTR,#0EFFFH;LS377地址
        MOVX @DPTR,A
        LCALL DELAY
        INC R1
        MOV A,R2
        RL A
        MOV R2,A
        DJNZ R3,TIME_DISP2
        CLR P2.6
        LCALL DELAY
        JNB P1.1,CHANGETIME
        DJNZ R4,TIME_DISP1
         SJMP TIMEDISP
TIME_TO_TEM:LJMP TIMETOTEM
;-----时间设置----
CHANGETIME: CLR EA
        JNB P1.1,$
        MOV CLOCK6, CLOCK5
        MOV CLOCK7, CLOCK
        MOV CLOCK8, CLOCK0
        MOV CLOCK9, CLOCK1
CHANGETIME2:MOV R0,#CLOCK6
        MOV R1,#0FEH
TIMESET :MOV P2,R1
        MOV A,@R0
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV DPTR,#0EFFFH
        MOVX @DPTR,A
        LCALL DELAY
        JNB P1.0,TIMEDISP0
        JNB P1.2,ADDTIME1
        JNB P1.3,SUBTIME1
        JB P1.1,TIMESET
        JNB P1.1,$
        INC R0
        MOV A,R1
        RL A
        MOV R1,A
        CJNE R1,#0EFH,CHANGETIME1
        SJMP CHANGETIME2
CHANGETIME1:AJMP TIMESET
;------加1-----
ADDTIME1   :JNB P1.2,$
            CJNE R1,#0FEH,NEXT1
            INC @R0
            CJNE @R0,#03H,FIRST
            MOV @R0,#00H
            SJMP FIRST
FIRST     : CJNE @R0,#02H,ADDTIME11
           MOV A,CLOCK7
           CLR C
           SUBB A,#03H
           JC ADDTIME11
           MOV CLOCK7,#03H
           SJMP ADDTIME11
NEXT1     :CJNE R1,#0FDH,NEXT2
           MOV A,CLOCK6
           CJNE A,#02H,SECOND
           INC @R0
           CJNE @R0,#04H,ADDTIME11
           MOV @R0,#00H
           SJMP ADDTIME11
SECOND    : INC @R0
            CJNE @R0,#0AH,ADDTIME11
            MOV @R0,#00H
            SJMP ADDTIME11
NEXT2     :CJNE R1,#0FBH,NEXT3
           INC @R0
           CJNE @R0,#06H,ADDTIME11
           MOV @R0,#00
           SJMP ADDTIME11
NEXT3     : INC @R0
           CJNE @R0,#0AH,ADDTIME11
           MOV @R0,#00
ADDTIME11  :AJMP TIMESET
;--------减1--------
SUBTIME1  :JNB P1.3,$
            CJNE R1,#0FEH,NEXT_1
            DEC @R0
            CJNE @R0,#0FFH,FIRSTS
            MOV @R0,#02H
            MOV A,CLOCK7
            CLR C
            SUBB A,#03H
            JC SUBTIME11
            MOV CLOCK7,#03H
FIRSTS    : SJMP SUBTIME11
NEXT_1    :CJNE R1,#0FDH,NEXT_2
           MOV A,CLOCK6
           CJNE A,#02H,SECOND_S
           MOV A,#03H
           CLR C
           SUBB A,@R0
           JNC SECOND_S1
           MOV @R0,#03H
           SJMP SUBTIME11
SECOND_S1:DEC @R0
           CJNE @R0,#0FFH,SUBTIME11
           MOV @R0,#03H
           SJMP SUBTIME11
SECOND_S  :DEC @R0
           CJNE @R0,#0FFH,SUBTIME11
           MOV @R0,#09H
           SJMP SUBTIME11
NEXT_2     :CJNE R1,#0FBH,NEXT_3
           DEC @R0
           CJNE @R0,#0FFH,SUBTIME11
           MOV @R0,#05H
           SJMP SUBTIME11
NEXT_3     : DEC @R0
           CJNE @R0,#0FFH,SUBTIME11
           MOV @R0,#09H
SUBTIME11  :AJMP TIMESET
DVT0:
MOV TH0,#0DCH
MOV TL0,#09H

MOV R0,#CLOCK4
INC @R0
CJNE @R0,#64H,CHUZHI
MOV @R0,#00H
DEC R0
INC @R0
CJNE @R0,#0AH,CHUZHI
MOV @R0,#00H
DEC R0
INC @R0
CJNE @R0,#06H,CHUZHI
MOV @R0,#00H
DEC R0
INC @R0
CJNE @R0,#0AH,CHUZHI
MOV @R0,#00H
DEC R0
INC @R0
CJNE @R0,#06H,CHUZHI
MOV @R0,#00H
MOV A,CLOCK5
CJNE A,#02,CHUZHI1
DEC R0
INC @R0
CJNE @R0,#04, CHUZHI
SJMP CHUZHI2
CHUZHI1:MOV @R0,#00H
DEC R0
INC @R0
CJNE @R0,#0AH,CHUZHI
CHUZHI2:MOV @R0,#00H
DEC R0
INC @R0
CJNE @R0,#03H,CHUZHI
MOV @R0,#00H
CHUZHI:MOV R0,#CLSECOND
INC @R0
CJNE @R0,#32H,BB
MOV @R0,#00H
CPL P3.0

BB:RETI
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;------延时子程序-------
DELAY   :MOV R7,#50H   ;1μs
DELAY1  :MOV R6,#10H  ;1μs
         DJNZ R6,$    ;2μs
         DJNZ R7,DELAY1 ;2μs
         RET
DELAY_1:MOV R7,#35H
DELAY_11:MOV R6,#10H
         DJNZ R6,$
         DJNZ R7,DELAY_11
         RET
END




⌨️ 快捷键说明

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