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

📄 main.asm

📁 这是一段温度传感器电路仿真原理图
💻 ASM
📖 第 1 页 / 共 3 页
字号:
         MOV    A,@R1
         MOV    R2,#8
     TOO:CLR    SCLK
         RRC    A
         MOV    IO_DATA,C
         NOP
         SETB   SCLK
         DJNZ   R2,TOO
         RET


GET_KEYDATA3:
           CLR     TR1
           MOV     TIME_COUNTER,#0
           CALL    KEY_SCANF
           MOV     P1,#0C3H
       KPt:MOV     A,P3
           JNB     ACC.2,KPt
           MOV     A,KEY_DATA
           XRL     A,#2
           JZ      MOVE_LIFTw
           MOV     A,KEY_DATA
           XRL     A,#3
           JZ      MOVE_RIGHTw
           MOV     A,KEY_DATA
           XRL     A,#4
           JZ      INC_1w
           MOV     A,KEY_DATA
           XRL     A,#5
           JZ      DEC_1w
           MOV     A,KEY_DATA
           XRL     A,#6
           JZ      ENTERw
           RET

MOVE_RIGHTW:
           CALL    RIGHT
           JMP     BACK2
MOVE_LIFTW:
           CALL    LIFT
           JMP     BACK2
INC_1W:
           CALL    INCD
           JMP     BACK2
DEC_1W:
           CALL    DECD
           JMP     BACK2
ENTERW:

           CALL    RD_WORK_TIME
           CALL    WR_WORK_TIME_TO_DSRAM

           mov     A,#LCD_SETVISIBLE
	   call    wrcmd

           POP  ACC
           POP  ACC
           JMP  GO_START
RIGHT:
           mov     dptr,#LCD_BUSY_RD
	   movx    A,@dptr
           CLR     ACC.7
           MOV     AC_ADD,A
           XRL     A,#05
           JZ      GO_6
           MOV     A,AC_ADD
           XRL     A,#06
           JZ      GO_8
           MOV     A,AC_ADD
           XRL     A,#08
           JZ      GO_9
           MOV     A,AC_ADD
           XRL     A,#9
           JZ      GO_13
           MOV     A,AC_ADD
           XRL     A,#13
           JZ      GO_14
           MOV     A,AC_ADD
           XRL     A,#14
           JZ      GO_16
           MOV     A,AC_ADD
           XRL     A,#16
           JZ      GO_17
           MOV     A,AC_ADD
           XRL     A,#17
           JZ      GO_69
           MOV     A,AC_ADD
           XRL     A,#69
           JZ      GO_70
           MOV     A,AC_ADD
           XRL     A,#70
           JZ      GO_72
           MOV     A,AC_ADD
           XRL     A,#72
           JZ      GO_73
           MOV     A,AC_ADD
           XRL     A,#73
           JZ      GO_77
           MOV     A,AC_ADD
           XRL     A,#77
           JZ      GO_78
           MOV     A,AC_ADD
           XRL     A,#78
           JZ      GO_80
           MOV     A,AC_ADD
           XRL     A,#80
           JZ      GO_81
           MOV     A,AC_ADD
           XRL     A,#81
           JZ      GO_5
GO_5:
           MOV  A,#LCD_SETDDADDR+5
           CALL WRCMD
           RET
GO_6:
           MOV  A,#LCD_SETDDADDR+6
           CALL WRCMD
           RET
GO_8:
           MOV  A,#LCD_SETDDADDR+8
           CALL WRCMD
           RET
GO_9:
           MOV  A,#LCD_SETDDADDR+9
           CALL WRCMD
           RET
GO_13:
           MOV  A,#LCD_SETDDADDR+13
           CALL WRCMD
           RET
GO_14:
           MOV  A,#LCD_SETDDADDR+14
           CALL WRCMD
           RET
GO_16:
           MOV  A,#LCD_SETDDADDR+16
           CALL WRCMD
           RET
GO_17:
           MOV  A,#LCD_SETDDADDR+17
           CALL WRCMD
           RET
GO_69:
           MOV  A,#LCD_SETDDADDR+69
           CALL WRCMD
           RET
GO_70:
           MOV  A,#LCD_SETDDADDR+70
           CALL WRCMD
           RET
GO_72:
           MOV  A,#LCD_SETDDADDR+72
           CALL WRCMD
           RET
GO_73:
           MOV  A,#LCD_SETDDADDR+73
           CALL WRCMD
           RET
GO_77:
           MOV  A,#LCD_SETDDADDR+77
           CALL WRCMD
           RET
GO_78:
           MOV  A,#LCD_SETDDADDR+78
           CALL WRCMD
           RET
GO_80:
           MOV  A,#LCD_SETDDADDR+80
           CALL WRCMD
           RET
GO_81:
           MOV  A,#LCD_SETDDADDR+81
           CALL WRCMD
           RET
LIFT:
           mov     dptr,#LCD_BUSY_RD
	   movx    A,@dptr
           CLR     ACC.7
           MOV     AC_ADD,A
           XRL     A,#05
           JZ      GO_81
           MOV     A,AC_ADD
           XRL     A,#06
           JZ      GO_5
           MOV     A,AC_ADD
           XRL     A,#08
           JZ      GO_6
           MOV     A,AC_ADD
           XRL     A,#9
           JZ      GO_8
           MOV     A,AC_ADD
           XRL     A,#13
           JZ      GO_9
           MOV     A,AC_ADD
           XRL     A,#14
           JZ      GO_13
           MOV     A,AC_ADD
           XRL     A,#16
           JZ      GO_14
           MOV     A,AC_ADD
           XRL     A,#17
           JZ      GO_16
           MOV     A,AC_ADD
           XRL     A,#69
           JZ      GO_17
           MOV     A,AC_ADD
           XRL     A,#70
           JZ      GO_69
           MOV     A,AC_ADD
           XRL     A,#72
           JZ      GO_70
           MOV     A,AC_ADD
           XRL     A,#73
           JZ      GO_72
           MOV     A,AC_ADD
           XRL     A,#77
           JZ      GO_73
           MOV     A,AC_ADD
           XRL     A,#78
           JZ      GO_77
           MOV     A,AC_ADD
           XRL     A,#80
           JZ      GO_78
           MOV     A,AC_ADD
           XRL     A,#81
           JZ      GO_80

INCD:
           call    inc_
           ret
DECD:
           call    dec_
           ret
RD_WORK_TIME:
           mov A,#LCD_SETVISIBLE+4
	   call wrcmd

           MOV  R1,#WORK_DATA
           MOV  R2,#5
           CALL GET_DATA
           CLR  C
           CJNE A,#24H,TTA
       TTA:JC   Y1
           JMP  UESLESS_DATA
        Y1:MOV  @R1,A
           INC  R1
           MOV  R2,#8
           CALL GET_DATA
           CLR  C
           CJNE A,#60H,TTB
       TTB:JC   Y2
           JMP  UESLESS_DATA
        Y2:MOV  @R1,A
           INC  R1
           MOV  R2,#13
           CALL GET_DATA
           CLR  C
           CJNE A,#24H,TTC
       TTC:JC   Y3
           JMP  UESLESS_DATA
        Y3:MOV  @R1,A
           INC  R1
           MOV  R2,#16
           CALL GET_DATA
           CLR  C
           CJNE A,#60H,TTD
       TTD:JC   Y4
           JMP  UESLESS_DATA
        Y4:MOV  @R1,A
           INC  R1
           MOV  R2,#69
           CALL GET_DATA
           CLR  C
           CJNE A,#24H,TTE
       TTE:JC   Y5
           JMP  UESLESS_DATA
        Y5:MOV  @R1,A
           INC  R1
           MOV  R2,#72
           CALL GET_DATA
           CLR  C
           CJNE A,#60H,TTF
       TTF:JC   Y6
           JMP  UESLESS_DATA
        Y6:MOV  @R1,A
           INC  R1
           MOV  R2,#77
           CALL GET_DATA
           CLR  C
           CJNE A,#24H,TTG
       TTG:JC   Y7
           JMP  UESLESS_DATA
        Y7:MOV  @R1,A
           INC  R1
           MOV  R2,#80
           CALL GET_DATA
           CLR  C
           CJNE A,#60H,TTH
       TTH:JNC   UESLESS_DATA
           MOV  @R1,A
           RET
UESLESS_DATA:
           SETB UESLESS_BIT
UESLESS_DISPLAY:
           mov A,#LCD_SETVISIBLE
	   call wrcmd

           MOV  A,#LCD_SETDDADDR
           CALL WRCMD

           MOV  DPTR,#UESLESS_STR1
           CALL WRSTR2

           MOV  A,#LCD_SETDDADDR+64
           CALL WRCMD

           MOV  DPTR,#UESLESS_STR2
           CALL WRSTR2

           MOV  A,#LCD_SETVISIBLE+4
           CALL WRCMD

           MOV  R5,#250
   RE_CALL:CALL DELAY8MS
           DJNZ R5,RE_CALL
           POP ACC
           POP ACC

              JB   UESLESS_BIT,TO_DUAN_PRESS
              MOV  LCD_STAT,#2
              JMP  GO_START
TO_DUAN_PRESS:JMP  DUAN_PRESS
;#############################
wrstr2:
           clr a
           movc a,@a+dptr
           jz   exit2
           push dpl
           push dph
           mov dptr,#LCD_DATA_WR
           movx @dptr,A
	   call wtbusy
           pop dph
           pop dpl
           inc dptr
           jmp wrstr2
     exit2:ret

UESLESS_STR1:
           DB '   uesless time     '
           db 0
UESLESS_STR2:
           db 'please enter again!!'
           db 0
 GET_DATA:
           MOV A,R2
           ADD A,#80H
           CALL WRCMD
           CALL RD_DATA
           CLR  C
           SUBB A,#48
           SWAP A
           MOV  AC_DATA,A
           CALL RD_DATA
           CLR  C
           SUBB A,#48
           ORL  A,AC_DATA
           RET

   RD_DATA:MOV  DPTR,#LCD_DATA_RD
           MOVX A,@DPTR
           RET
WR_WORK_TIME_TO_DSRAM:
           MOV     R5,#0CEH
           MOV     R1,#WORK_DATA
           CALL    WR_DATA_DS
           MOV     R5,#0CCH
           MOV     R1,#WORK_DATA+1
           CALL    WR_DATA_DS
           MOV     R5,#0CAH
           MOV     R1,#WORK_DATA+2
           CALL    WR_DATA_DS
           MOV     R5,#0C8H
           MOV     R1,#WORK_DATA+3
           CALL    WR_DATA_DS
           MOV     R5,#0C6H
           MOV     R1,#WORK_DATA+4
           CALL    WR_DATA_DS
           MOV     R5,#0C4H
           MOV     R1,#WORK_DATA+5
           CALL    WR_DATA_DS
           MOV     R5,#0C2H
           MOV     R1,#WORK_DATA+6
           CALL    WR_DATA_DS
           MOV     R5,#0C0H
           MOV     R1,#WORK_DATA+7
           CALL    WR_DATA_DS
           MOV     R5,#0D0H
           MOV     R1,#WORK_DATA+7
           CALL    WR_DATA_DS
           CLR     RST
           RET
COMPAIR:   NOP
com_work1: clr     a
           orl     a,s1_hour_data
           orl     a,s1_minu_data
           orl     a,t1_hour_data
           orl     a,t1_minu_data
           jz      com_work2
           mov     a,hour
           xrl     a,s1_hour_data
           jnz     com_stop1_time
           mov     a,minu
           xrl     a,s1_minu_data
           jnz     com_stop1_time
           clr     p3.4
com_stop1_time:
           mov     a,hour
           xrl     a,t1_hour_data
           jnz     com_work2
           mov     a,minu
           xrl     a,t1_minu_data
           jnz     com_work2
           setb    p3.4
com_work2: clr     a
           orl     a,s2_hour_data
           orl     a,s2_minu_data
           orl     a,t2_hour_data
           orl     a,t2_hour_data
           jz      quit_compair
           mov     a,hour
           xrl     a,s2_hour_data
           jnz     com_stop2_time
           mov     a,minu
           xrl     a,s2_minu_data
           jnz     com_stop2_time
           clr     p3.4
com_stop2_time:
           mov     a,hour
           xrl     a,t2_hour_data
           jnz     quit_compair
           mov     a,minu
           xrl     a,t2_minu_data
           jnz     quit_compair
           setb    p3.4
quit_compair:
           ret

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8ms delay program
DELAY8MS:
        MOV     R6,#4
     LP:MOV     R7,#200
        DJNZ    R7,$
        DJNZ    R6,LP
        RET
        RET

      NOP
      NOP
      END









⌨️ 快捷键说明

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