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

📄 set1.asm

📁 请认真阅读您的文件包然后写出其具体功能(至少要20个字)。尽量不要让站长把时间都花费在为您修正说明上。压缩包解压时不能有密码。系统会自动删除debug和release目录
💻 ASM
字号:



;This programe is used to control
   ;the temperature.
   ;You can set the temperature from
   ; 20'C to 60'C step 5'C freely.
   ;and the LED will indicate the
   ;variable of the temperature.

       SMG0  EQU  40H
       SMG1  EQU  41H
       SMG2  EQU  42H
       SMG3  EQU  43H
       SMG4  EQU  44H
       TEMP  EQU  60H
       FLAG  EQU  01H
       GOOD  EQU  61H
       ZANCL EQU  45H
       ZANCH EQU  46H
       RONG  EQU  47H


        ORG   0000H
        AJMP  START
        ORG   0100H
START:  MOV   SMG0,#10H    ;INITIALIZE THE DISP
        MOV   SMG1,#10H
        MOV   SMG2,#10H
        MOV   SMG3,#02H
        MOV   SMG4,#00H
        LCALL DIS
        LCALL BCDB
        LCALL ZBCX

MAIN:   MOV   R1,#00H
        LCALL PJSF
        JNZ   MAIN
        LCALL JPAN
        CJNE  R1,#4FH,MAIN
        CJNE  A,#0EH,NEXT
        AJMP  KEYUP
NEXT:   CJNE  A,#0DH,NEXT1
        AJMP  KEYDOWN
NEXT1:  CJNE  A,#0BH,RESET
        AJMP  QUEDING
RESET:  CJNE  A,#07H,error
        ljmp  start
ERROR:  AJMP  ERR
;********************************************

KEYUP:  MOV   R1,SMG3         ;rise the temperature
        CJNE  R1,#06H,NEXT3
        AJMP  MAIN
NEXT3:  MOV   A,SMG4
        CJNE  A,#05H,NEXT2
        MOV   SMG4,#00H
        MOV   R1,SMG3
        INC   R1
        MOV   SMG3,R1
        SJMP  XYG
 NEXT2: MOV   SMG4,#05H
 XYG:   lcall dis
        LCALL BCDB
        LCALL ZBCX
        ;LCALL DIS
        AJMP  MAIN
;--------------------------------------------
KEYDOWN:MOV   A,SMG4        ;drop the temperature
        CJNE  A,#00H,NEXT4
        MOV   A,SMG3
        CJNE  A,#02H,NEXT5
        AJMP  MAIN
NEXT5:  MOV   SMG4,#05H
        MOV   R1,SMG3
        DEC   R1
        MOV   SMG3,R1
        SJMP  XYG
NEXT4:  MOV   SMG4,#00H
        SJMP  XYG
;+++++++++++++++++++++++++++++++++++++++++++++
QUEDING:CLR   FLAG         ;confirm key
        SETB   P3.4
MAIN1:  MOV   SMG0,#10H
        MOV   SMG1,#10H
        MOV   SMG2,#10H
        MOV   SMG3,#10H
        MOV   SMG4,#10H
        SETB  P3.3
        LCALL DIS


        MOV   A,P1        ;decide if reset key
        ANL   A,#0FH
        CJNE  A,#0FH,LOP
        AJMP  lop1
LOP:    MOV   48H,A
        LCALL YS1S
        MOV   A,P1
        anl   a,#0fh
        CJNE  A,#0FH,lop2
        ajmp  lop1
LOP2:   CJNE  A,48H, LOP1
        CJNE  A,#07H,LOP1
        AJMP  START
LOP1:   MOV  DPTR,#0FEF3H    ;start A/D
        MOVX  @DPTR,A
        NOP
HERE:   JB  P3.3,HERE
        MOV  DPTR,#0FEF3H    ;read the result of A/D
        MOVX  A,@DPTR
        MOV B,A
        ANL A,#0FH
        MOV SMG4,A
        MOV A,B
        SWAP A
        ANL A,#0FH
        MOV R4,A
        MOV SMG3,A

        MOV SMG0,#10H
        MOV SMG1,#10H
        MOV SMG2,#10H
        LCALL DIS
        LCALL delay
        MOV  A,R4
        SWAP  A
        ORL  A,SMG4
        JB   FLAG,OK
        CJNE A,ZANCH,XYH

XYH:    JC   QUEDING
        SETB FLAG
        CLR  P3.4
 hh:     AJMP MAIN1
OK:     CJNE A,ZANCL,OK1
OK1:    JNC  hh
        ljmp QUEDING
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

ZBCX:   MOV   A,RONG        ;
        SUBB  A,#20
        MOV  B,#05H
        DIV  AB
        RL   A
        MOV  R2,A
        MOV  DPTR,#QTAB
        MOVC A,@A+DPTR
        MOV  ZANCL,A
        MOV  A,R2
        INC  A
        MOVC A,@A+DPTR
        MOV  ZANCH,A
        RET

 QTAB:  DB 40H,45H,4aH,4fH,50H,55H
        DB 5aH,5fH,60H,65H,6aH,6fH
        DB 70H,75H,7aH,7fH,80h,82h
 ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 BCDB:  MOV  A,SMG3
        MOV  B,#0AH
        MUL  AB
        ADD  A,SMG4
        MOV  RONG,A
        RET
 ;||||||||||||||||||||||||||||||||||||||||
JPAN:  MOV       A,P1         ;key sub_programe
       ANL       A,#0FH
       CJNE      A,#0FH,JX
       AJMP      JPAN

JX:    MOV       4FH,A
       LCALL     YS1S
       MOV       A,P1
       ANL       A,#0FH
       CJNE      A,#0FH,YJAX
       AJMP      JPAN


YJAX:  CJNE      A,4FH,JPAN
       MOV       R1,#4FH
       RET
;###########################################
DIS:   MOV    R0,#SMG0      ;display sub_programe
       MOV    R1,#TEMP
       MOV    R2,#5
DP10:  MOV    DPTR,#SEG
       MOV    A,@R0
       MOVC   A,@A+DPTR
       MOV    @R1,A
       INC    R0
       INC    R1
       DJNZ   R2,DP10
       MOV    R0,#TEMP
       MOV    R1,#5
DP12:  MOV    R2,#8
       MOV    A,@R0
DP13:  CLR    C
       NOP
       NOP
       RLC    A
       MOV    P3.0,C
       MOV    P3.0,C
       NOP
       NOP

       CLR    P3.1
       CLR    P3.1
       NOP
       NOP
       SETB   P3.1
       SETB   P3.1
       DJNZ   R2,DP13
       INC    R0
       DJNZ   R1,DP12
       RET

SEG:  DB  3FH,06H,5BH,4FH,66H,6DH,7DH
      DB  07H,7FH,6FH,77H,7CH,39H,5EH
      DB  79H,71H,00H,79H,50H,5CH
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

YS1S:   MOV      R7,#40H        ;delay sub_programe
YS0:    MOV      R6,#0FFH
YS1:    DJNZ     R6,YS1
        DJNZ     R7,YS0
        RET
DELAY:  MOV R7,#0
DLY:    MOV R6,#0
AA1:    DJNZ R6,AA1
        DJNZ R7,DLY
        RET



PJSF:  MOV      A,P1
       CPL      A
       ANL      A,#0FH
       RET


ERR:   MOV      SMG0,#11H
       MOV      SMG1,#12H
       MOV      SMG2,#12H
       MOV      SMG3,#13H
       MOV      SMG4,#12H
       LCALL    DIS
ERR1:  MOV      R1,#00H
       LCALL    PJSF
       JNZ      ERR1
       lcall    jpan
       cjne     R1,#4fh,err1
       cjne     a,#07h,err1
       ljmp      start

       END

⌨️ 快捷键说明

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