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

📄 1

📁 RM51单片机实验板配套实验例程库
💻
📖 第 1 页 / 共 2 页
字号:
                SETB  CS
		PUSH  ACC
		MOV  R0,#8
		MOV  A,#11111000B
COMM1:
                CLR  C
		RLC  A
		MOV  SID,C
		CLR  SCLK
                SETB SCLK
 		DJNZ R0,COMM1
		POP  ACC
		MOV  R5,A
		ANL  A,#0F0H
		MOV  R0,#8
COMM2:	        CLR  C
		RLC  A
		MOV  SID,C
		CLR  SCLK
		SETB SCLK
		DJNZ R0,COMM2
		MOV  A,R5
		SWAP A
		ANL  A,#0F0H
		MOV  R0,#8
COMM3:	        CLR  C
		RLC  A
		MOV  SID,C
		CLR  SCLK
		SETB SCLK
		DJNZ R0,COMM3
		CLR  CS
	        RET
;
;***********串行数据写入子程序****************
;写入数据字在A中
WRITE_DAT:
		LCALL DELAY1
                SETB CS
		PUSH  ACC
		MOV  R0,#8
		MOV  A,#11111010B
DATA1:	        CLR  C
		RLC  A
		MOV  SID,C
		CLR  SCLK
		SETB SCLK
		DJNZ R0,DATA1
		POP  ACC
		MOV  R5,A
		ANL  A,#0F0H
		MOV  R0,#8
DATA2:	        CLR  C
		RLC  A
		MOV  SID,C
		CLR  SCLK
		SETB SCLK
		DJNZ R0,DATA2
		MOV  A,R5
		SWAP A
		ANL  A,#0F0H
		MOV  R0,#8
DATA3:	        CLR  C
		RLC  A
		MOV  SID,C
		CLR  SCLK
		SETB SCLK
		DJNZ R0,DATA3
		CLR  CS
	        RET
;
;**************延时子程序**********************
;0.544ms
DELAY1:
	MOV  R7,#010H
D11:	MOV  R6,#010H
	DJNZ R6,$
	DJNZ R7,D11
	RET
;0.13s
DELAY:
	MOV  R1,#00H
D2:	MOV  R2,#00H
	DJNZ R2,$
	DJNZ R1,D2
	RET
;5.2s
DELAY5S:MOV  R3,#40
DE5S:   LCALL DELAY
        DJNZ R3,DE5S
        RET
DELAY1S:MOV  R3,#9
DE1S:   LCALL DELAY
        DJNZ R3,DE1S
        RET
;
;************16*8点阵字写入子程序共16个******************
WRITE_ASCII:
		MOV  R4,#16
DDDD:	        CLR  A
		MOVC A,@A+DPTR
		LCALL WRITE_DAT
		INC  DPTR
		DJNZ R4,DDDD
		RET
;************16*8点阵字写入子程序共7个******************
WRITE_ASCII7:
		MOV  R4,#7
DDDD7:	        MOV  A,@R0
		LCALL WRITE_DAT
		INC  R0
                DJNZ R4,DDDD7
		RET
;************16*16点阵汉字写入子程序共7个***********
WRITE_HZ:		;WRITE 7 CHINESE TO LCD
		MOV  R4,#7
DD:	        CLR  A
		MOVC A,@A+DPTR
		INC  DPTR
		LCALL WRITE_DAT
		CLR  A
		MOVC A,@A+DPTR
		INC DPTR
		LCALL WRITE_DAT
		DJNZ R4,DD
		RET
;************16*16点阵汉字写入子程序共2个***********
WRITE_HZ2:		;WRITE 8 CHINESE TO LCD
		MOV  R4,#2
DD4:	        CLR  A
		MOVC A,@A+DPTR
		INC  DPTR
		LCALL WRITE_DAT
		CLR  A
		MOVC A,@A+DPTR
		INC DPTR
		LCALL WRITE_DAT
		DJNZ R4,DD4
		RET
;
;*****************************16*8点阵的字符代码表**********************************
TABLE1: DB     30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,3AH,3BH,3CH,3DH,3EH,20H
;               0   1   2   3   4   5   6   7   8   9   :   ;   <   =   > "不显"
;**********************************自造字符地址表***********************************
;
;******************"这里是16*16点阵的汉字代码表"************************************
CHINESE:  DB "浙江海洋学院—   "
CHINESE1: DB "单片机实验室     "
CHINESE3: DB "C03 电本(2) 班   "
CHINESE4: DB "楼然苗设计制作   "
CHINESE2: DB "距离:     厘米   "
CHINESE6: DB "报警:     厘米    "
CHINESE7: DB "警告! 距离太近    "
CHINESE8: DB "超声波测距器-J   "       ; 近报警状态
CHINESE9: DB "超声波测距器-Y   "       ; 远报警状态
CHINESE10:DB "警告! 距离太远    "
;;;;;;;;;;;;;;;;;;;;;;
BAOJ:               PUSH  ACC
                    PUSH  PSW
                    MOV    A,60H
                    CJNE   A,40H,BAO1
                    CLR    C
                    MOV    A,61H
                    CJNE   A,41H,BAO1
                    CLR    C
                    MOV    A,62H
                    CJNE   A,42H,BAO1
                    CLR    C
                    MOV    A,63H
                    CJNE   A,43H,BAO1
        BAOJING:
                    CLR    LAMPBLAK
                    CLR    LED1
                ;    CLR    BELL
                    MOV  A,#80H	       ;第一行左第一个字开始
	            LCALL WRITE_COM
	            MOV  DPTR,#CHINESE7     ;警告! 距离太近
	            LCALL WRITE_HZ
                    POP    PSW
                    POP    ACC
                    RET
           BBAO:    SETB   LAMPBLAK
                    SETB   LED1
                ;    SETB   BELL
                    MOV  A,#80H	       ;第一行左第一个字开始
	            LCALL WRITE_COM
	            MOV  DPTR,#CHINESE8     ;超声波测距器--
	            LCALL WRITE_HZ
                    POP    PSW
                    POP    ACC
                    RET
;
         BAO1:      JC     BBAO
                    LJMP   BAOJING
;
YBAOJ:              PUSH  ACC
                    PUSH  PSW
                    MOV    A,60H
                    CJNE   A,40H,BAO11
                    CLR    C
                    MOV    A,61H
                    CJNE   A,41H,BAO11
                    CLR    C
                    MOV    A,62H
                    CJNE   A,42H,BAO11
                    CLR    C
                    MOV    A,63H
                    CJNE   A,43H,BAO11
        BAOJING1:
                    CLR    LAMPBLAK
                    CLR    LED1
                ;    CLR    BELL
                    MOV  A,#80H	       ;第一行左第一个字开始
	            LCALL WRITE_COM
	            MOV  DPTR,#CHINESE10     ;警告! 距离太远
	            LCALL WRITE_HZ
                    POP    PSW
                    POP    ACC
                    RET
           BBAO1:    SETB   LAMPBLAK
                    SETB   LED1
              ;      SETB   BELL
                    MOV  A,#80H	       ;第一行左第一个字开始
	            LCALL WRITE_COM
	            MOV  DPTR,#CHINESE9     ;超声波测距器-Y
	            LCALL WRITE_HZ
                    POP    PSW
                    POP    ACC
                    RET
;
         BAO11:      JC     BAOJING1
                    LJMP    BBAO1
;以下为报警距离设定程序
        SAFESET:    CLR    EA
                    CLR    TR0
                    MOV  A,#90H	       ;第二行左第一个字开始
	            LCALL WRITE_COM
	            MOV  DPTR,#CHINESE6    ;显示报警:
	            LCALL WRITE_HZ
                    CLR   LAMPBLAK
                    MOV    50H,40H
                    MOV    51H,41H
                    MOV    52H,42H
                    MOV    53H,43H
                     MOV    40H,60H
                     MOV    41H,61H
                     MOV    42H,62H
                     MOV    43H,63H
                     LCALL   DATAUP
       SAFESET1:    JNB     KEY0,SAFESET1

       SAFESET10:   LCALL   DATAUP
                    JNB     KEY0,SAFESET2
                    JNB     KEY1,SAFEADD1
                    JNB     KEY2,SAFESUBB1
                    LJMP    SAFESET10
       SAFESET2:    LJMP    SAFESET20
       SAFEADD1:    MOV     R7,43H
                    LCALL   ADD1
                    MOV     43H,A
                    LJMP    SAFESET10
       SAFESUBB1:   MOV     R7,43H
                    LCALL   SUBB1
                    MOV     43H,A
                    LJMP    SAFESET10

       SAFESET20:    CLR   BELL
                    JNB     KEY0,SAFESET20
                    SETB   BELL
                    LCALL   DATAUP
                    JNB     KEY0,SAFESET3
                    JNB     KEY1,SAFEADD2
                    JNB     KEY2,SAFESUBB2
                    LJMP    SAFESET20
       SAFESET3:    LJMP    SAFESET30
       SAFEADD2:    MOV     R7,42H
                    LCALL   ADD1
                    MOV     42H,A
                    LJMP    SAFESET20
       SAFESUBB2:   MOV     R7,42H
                    LCALL   SUBB1
                    MOV     42H,A
                    LJMP    SAFESET20

       SAFESET30:   JNB     KEY0,SAFESET30
                    LCALL   DATAUP
                    JNB     KEY0,SAFESET4
                    JNB     KEY1,SAFEADD3
                    JNB     KEY2,SAFESUBB3
                    LJMP    SAFESET30
       SAFESET4:    LJMP    SAFESET40
       SAFEADD3:    MOV     R7,41H
                    LCALL   ADD1
                    MOV     41H,A
                    LJMP    SAFESET30
       SAFESUBB3:   MOV     R7,41H
                    LCALL   SUBB1
                    MOV     41H,A
                    LJMP    SAFESET30

       SAFESET40:   JNB     KEY0,SAFESET40
                    LCALL   DATAUP
                    JNB     KEY0,SAFESET5
                    JNB     KEY1,SAFEADD4
                    JNB     KEY2,SAFESUBB4
                    LJMP    SAFESET40
       SAFESET5:    LJMP    SAFESET50
       SAFEADD4:    MOV     R7,40H
                    LCALL   ADD1
                    MOV     40H,A
                    LJMP    SAFESET40
       SAFESUBB4:   MOV     R7,40H
                    LCALL   SUBB1
                    MOV     40H,A
                    LJMP    SAFESET40

       SAFESET50:   JNB    KEY0,SAFESET50
                    MOV    60H,40H
                    MOV    61H,41H
                    MOV    62H,42H
                    MOV    63H,43H
                     MOV    40H,50H
                     MOV    41H,51H
                     MOV    42H,52H
                     MOV    43H,53H
                     MOV  A,#90H	       ;第二行左第一个字开始
	             LCALL WRITE_COM
	             MOV  DPTR,#CHINESE2    ;WORD 16*16点阵TEST
	             LCALL WRITE_HZ
                     SETB  LAMPBLAK
                    SETB    EA
                    SETB    TR0
                    LJMP    START1

       ADD1:        MOV    A,R7
                    ADD    A,#01H
       ADD20:
                    CLR    C
                    MOV    R3,A
                    SUBB   A,#0AH
                    JC     ADD10
                    MOV    A,#00H
                    JNB    KEY1,ADD20
                    RET
       ADD10:       MOV    A,R3
                    JNB    KEY1,ADD20
                    RET

       SUBB1:       MOV    A,R7
                    DEC    A
       SUBB20:      CLR    C
                    MOV    R3,A
                    SUBB   A,#0AH
                    JC     SUB12
                    MOV    A,#09H

                    JNB    KEY2,SUBB20
                    RET
       SUB12:       MOV    A,R3
                    JNB    KEY2,SUBB20
                    RET
;

        END	   				;程序结束

⌨️ 快捷键说明

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