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

📄 060406_2

📁 信号的调制及对9832的使用
💻
📖 第 1 页 / 共 2 页
字号:

        MOV     R3,     #8
DSSENT2:MOV     A,      @R0     ;R0=SENT DATA BUFFER POINTER
        RLC     A
        MOV     DDSDT,  C
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        MOV     @R0,    A
        CLR     DDSSK
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        SETB    DDSSK
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP

        DJNZ    R3,     DSSENT2
        INC     R0
        MOV     R3,     #8
DSSENT3:MOV     A,      @R0
        RLC     A
        MOV     DDSDT,  C
        MOV     @R0,    A
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        CLR     DDSSK
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP

        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        SETB    DDSSK
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
         NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP

        DJNZ    R3,     DSSENT3

        SETB    DDSSC
        POP     PSW
        POP     ACC
        RET
;**********************************************



;------------------------------------
WRIT24CXX:				;R0  ADDR
	mov	r3,#08h
	LCALL  	start1			;R1  DATA POINTER
        MOV 	a,#0a0h			;R5  LOOP TIMES
	LCALL 	WR_BYTE
	;MOV 	a,#00h
	;LCALL 	WR_BYTE
	MOV 	a,R0
	LCALL 	WR_BYTE
WRIT24CXX_LOOP:
	MOV  	A,@R1
        LCALL 	WR_BYTE
        INC  	R1
       		;DJNZ  	R3,WRIT24CXX_h8_LOOP1
       	DJNZ  	R4,WRIT24CXX_h8_LOOP2
       	NOP
       	NOP
        LCALL 	STOP
        ret
WRIT24CXX_h8_LOOP2:
       	;DJNZ  	R6,WRIT24CXX_h8_LOOP
       	DJNZ  	R3,WRIT24CXX_LOOP
       	ajmp	WRIT24CXX_h8

WRIT24CXX_h8:
        LCALL 	STOP
	;dec	r6
        mov	a,r0
   	add	a,#08h
   	mov	r0,a
   	mov	r3,#08h
       	LCALL	DELAY4s
       	lcall	DELAY4s
       	LCALL  	start1
        MOV 	a,#0a0h
	LCALL 	WR_BYTE
	;MOV 	a,#00h
	;LCALL 	WR_BYTE
	MOV 	a,r0
	LCALL 	WR_BYTE
WRIT24CXX_h8_LOOP:
	MOV  	A,@R1
        LCALL 	WR_BYTE
        INC  	R1
       	;DJNZ  	R3,WRIT24CXX_h8_LOOP1
       	DJNZ  	R4,WRIT24CXX_h8_LOOP1
       	NOP
       	NOP
        LCALL 	STOP
        ret
WRIT24CXX_h8_LOOP1:
       	;DJNZ  	R6,WRIT24CXX_h8_LOOP
       	DJNZ  	R3,WRIT24CXX_h8_LOOP
       	ajmp	WRIT24CXX_h8


;----------------------------------
READ24CXX:
	mov	r3,#08h
	lcall start1			;R2  ADDR
	mov a,#0a0h			;R1  length
	lcall wr_byte			;读到40h
	;mov a,#00h
	;lcall  wr_byte
	mov a,R2
	lcall  wr_byte
	lcall start1
	mov a,#0A1H
	lcall	wr_byte
	MOV	R0,#40H
	lcall  rd_byte

looper:
      	clr   sda
      	nop
      	nop
      	setb   scl
      	nop
      	nop
      	clr    scl
      	nop
      	nop
      	setb sda
      	nop
      	nop
       	mov  @r0,a			;从41开始放读出的命令字符串
      	inc   r0
      	lcall rd_byte
      	djnz r1,READ24CXX_loop
      	;djnz	r3,READ24CXX_loop1
      	lcall stop
	ret

READ24CXX_loop:
      	djnz	r3,looper
	;djnz r1,looper1			;R1连续读的次数
      	ajmp	READ24CXX_high8
READ24CXX_high8:
	;dec	r1
	mov	A,R2
	ADD	A,#08H
	MOV	R2,A
	MOV	R3,#08H

	lcall stop
	LCALL	DELAY4s
	lcall start1			;R2  ADDR
	mov a,#0a0h			;R1  length
	lcall wr_byte			;读到40h
	;mov a,#00h
	;lcall  wr_byte
	mov a,R2
	lcall  wr_byte
	lcall start1
	mov a,#0A1H
	lcall	wr_byte
	lcall	RD_BYTE
looper1:
      	clr   sda
      	nop
      	nop
      	setb   scl
      	nop
      	nop
      	clr    scl
      	nop
      	nop
      	setb sda
      	nop
      	nop
       	mov  @r0,a			;从41开始放读出的命令字符串
      	inc   r0
      	lcall rd_byte
      	djnz r1,READ24CXX_loop1
      	;djnz	r3,READ24CXX_loop1
      	lcall stop
	ret

READ24CXX_loop1:
      	djnz	r3,looper1
	;djnz r1,looper1			;R1连续读的次数
      	ajmp	READ24CXX_high8


;------------------------------------
WR_BYTE:

	MOV 	R5,#08H; 一字节8位数据
	CLR 	SCL
	NOP
	NOP
WR_BYTE1:
	RLC 	A; ;带进位位左移,A.8->C
	MOV 	SDA,C;  ;SCL低电平时改变SDA上的数据
	NOP
	SETB 	SCL; ;拉高SCL把数据发送出去
	NOP
	NOP
	CLR 	SCL
	NOP
	NOP
	DJNZ 	R5,WR_BYTE1;;依次发送A中的8位数据
	SETB  	SDA
	SETB  	SCL
	nop
	nop
	nop
	JB 	SDA,$ ;;等待写入确认信号
	CLR 	SCL
	NOP

	RET



;-----------------------------------------------------------------------------
RD_BYTE:
	MOV 	R5,#08h
	SETB 	SDA 			;设备SDA为读状态
	CLR 	A 				;清空A寄存器
RD_BYtE1:
	MOV 	C,SDA;			;读一位数据到进位位
	RLC 	A ;				;左移数据到A.0
	SETB 	SCL
	NOP
	NOP
	CLR 	SCL
	NOP
	NOP
 	DJNZ  	R5,RD_BYTE1;		;依次读出8位数据到A中
	RET 				;;无应答信号



;----------------------------------------------------------
start1:   ;此程序是发送了"1"

	CLR SCL;平时才允许SDA更改
	NOP; ;加入空指令延时以确保信号可靠
	NOP
	SETB SDA
	NOP
	NOP
	SETB SCL
	NOP
	NOP
	CLR SDA
	NOP
	NOP
	CLR SCL
	NOP
	NOP
	ret
;----------------------------------------------------------
stop:
	CLR SCL
	NOP
	NOP
	CLR SDA
	NOP
	NOP
	SETB SCL
	NOP
	NOP
	SETB SDA
	NOP
	NOP
	CLR SCL
	NOP
	NOP
	CLR SDA
	ret

;--------------------------------------
DELAY2MS:
	MOV	R4,#03H
DELAY2MS_LOOP1:
	MOV	R5,#0FFH
DELAY2MS_LOOP:
	JB	D,DELAY2MS_DOOR1
	DJNZ	R5,DELAY2MS_LOOP
	DJNZ	R4,DELAY2MS_LOOP1
	DEC	SP
	DEC	SP
;	AJMP	COMEND

DELAY2MS_DOOR1:
	RET

;------------------------------------
DELAY2MS_fun1:
	MOV	R4,#03H
DELAY2MS_fun1LOOP1:
	MOV	R5,#0FFH
DELAY2MS_fun1LOOP:
	JB	D,DELAY2MS_fun1DOOR1
	DJNZ	R5,DELAY2MS_fun1LOOP
	DJNZ	R4,DELAY2MS_fun1LOOP1
	DEC	SP
	DEC	SP
;	AJMP	senddata

DELAY2MS_fun1DOOR1:
	RET






;----------
DELAY4s:
	MOV	R5,#0ffH		;延时4s,确认按下?
lO2:   	MOV	save1,#0ffH
lO3:
        DJNZ	save1,lO3
        DJNZ	R5,lO2
	ret

sentout:
	mov	a,41h
	mov	sbuf,a
	jnb	f,$
	clr	f
	ret

DELAY2MS1:
	MOV	R4,#0FFH
DELAY2MS1_fun1LOOP1:
	MOV	R5,#0FFH
DELAY2MS1_fun1LOOP:

	DJNZ	R5,DELAY2MS1_fun1LOOP
	DJNZ	R4,DELAY2MS1_fun1LOOP1
	RETI

	END

⌨️ 快捷键说明

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