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

📄 rs232_slave

📁 51单片机众多优秀的开发源程序:ZLG7290例程*ZLG7290汇编例程*蜂鸣器音乐例程*蜂鸣器响例程*读EEPROM并显示例程*16×2LCD模块例程*128×64点阵LCD模块例程*直连KEY和
💻
字号:
;******************************文件信息************************************
;文件名:RS232_Slave.asm
;功能:演示使用DP-51H实验仪实现动态LED数码管显示RS232接受到主机数据
;说明:
;	1.在DP-51H实验仪的LED数码管上显示"DP-51H"
;	2.正确设置跳线JP5即把JP5跳线置于下端
;	P3.0,P3.1跳到RXD_232、TXD_232
;作者:叶皓贲
;最后修改时间:2003年3月21
;*************************************************************************

	
DATA_BUF	DATA	50H		;定义显示缓冲区的首地址?
	
ACK       	BIT 		10H  ;应答标志位
SLA       	DATA 	60H ;器件从地址
SUBA      	DATA 	61H ;器件子地址 
NUMBYTE   	DATA 	62H ;读/写的字节数
     ;使用前定义常量:
SDA 		EQU  	P1.7
SCL 			EQU  	P1.6

MTD 		EQU  	30H  ;IIC发送数据缓冲区首址    
MRD 		EQU  	40H  ;IIC接收数据缓冲区首址 (缓冲区40-4FH)
	
ZLG7290  	EQU  	70H   

	ORG	0000H				;伪指令,定义程序从0000H开始存放
							;但在DP-51H上仿真时请输入8000H
	AJMP	MAIN
	
	ORG		0100H			;伪指令,定义以下程序从0100H开始存放
							;但在DP-51H上仿真时请输入8100H
MAIN:
		MOV		SP,#60H			;给堆栈指针赋初值
		MOV		DATA_BUF,#0DH	;数据"d"
		MOV		DATA_BUF+1,#16H	;数据"P"
		MOV		DATA_BUF+2,#1FH	;数据"-"	
		MOV		DATA_BUF+3,#05H	;数据"5"
		MOV		DATA_BUF+4,#01H	;数据"1"
		MOV		DATA_BUF+5,#11H	;数据"H"
		MOV		TMOD,#20H		;设置T1为方式2
		MOV		TH1,#0FDH		;设置波特率为9600
		MOV		TL1,#0FDH
		MOV		SCON,#50H		;设置串口位方式1
		MOV		PCON,#00H
		SETB	TR1			;定时器1开始计数

UP:	
MOV		R0,#40H	;
		MOV		R7,#05H
		ACALL	RDS			;接受dp-51H

		MOV		A,40H
		CJNE	A,#0DH,DPDIS	;接收的数据与发送的数据线比较
		MOV		A,41H		;若发送正确,则发送下一位数据
		CJNE	A,#16H,DPDIS
		MOV		A,42H
		CJNE	A,#1FH,DPDIS
		MOV		A,43H
		CJNE	A,#05H,DPDIS
		MOV		A,44H
		CJNE	A,#01H,DPDIS
		MOV		A,45H
		CJNE	A,#11H,DPDIS

		MOV		51H,#0DH		;错误显示
		MOV		50H,#10H

DPDIS:	
MOV		R0,#30H
		MOV		R7,#05H
		ACALL	SENDU		;发送5个数据
DISP:	
ACALL	DISPLAY		;调用显示子程序
		;ACALL	USER_PRO	;调用用户其它任务
		AJMP	DISP

;串口发送子程序,R7中存放数据个数,数据首地址存放在R0中
SENDU:	
MOV		A,@R0		;取要发送的数据
		MOV		SBUF,A		;发送数据
SENDWT:
		JBC		TI,SENDNEXT
		AJMP	SENDWT
SENDNEXT:
INC		R0			;取下一位数据
		DJNZ	R7,SENDU	;数据发送完了吗?
		RET

;串口接受子程序,R7中存放数据个数,接受存放到首地址R0中
RDS:	
SETB	REN			;开接收允许
RDWAIT:	
JBC		RI,RDNEXT
		AJMP	RDWAIT
RDNEXT:	
MOV		A,SBUF		;接收数据
		MOV		@R0,A		;把接收到的数据保存到R0指定的单元中
		INC		R0			;地址加1
		DJNZ	R7,RDS		;接收完了吗?
		RET


DISPLAY:
		MOV		R7,#6H
		MOV 	R4,#60H
LOOP:
		MOV		MTD,R4
		INC		R4

		MOV		A,R7
		ADD		A,#DATA_BUF-1H
		MOV		R1,A
		MOV		MTD+01H,@R1
	
		MOV    	SLA,#ZLG7290          ;将MTD的数据发送给7290,进行显示
    		MOV    	SUBA,#07H
    		MOV    	NUMBYTE,#02H
    		ACALL  	IWRNBYTE
		ACALL   DELAY
		DJNZ  	R7,LOOP
		RET

;**************
;延时子程序
;**************
DELAY:	
		MOV		R6,#040H
DELAY0:	
MOV		R5,#010H
DELAY1:	
DJNZ	R5,DELAY1
		DJNZ	R6,DELAY0
		RET

$INCLUDE (VI2C_ASM.INC)    ;包含VI2C平台软件包
END

⌨️ 快捷键说明

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