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

📄 mcu.asm

📁 单片机多机通讯的例子,vb作上位机程序,包括下位机程序
💻 ASM
字号:
     
;***********************************************************
	ORG 00H
	JMP START
		
	ORG 23H
	JMP UART
		
	ORG 30H
START:	MOV SP,#70H

	MOV SCON,#50H
	MOV TMOD,#00100001B		;TIM1在模式2  TIM0在模式1
	MOV TH1,#0FDH	;设置定时时间
	MOV TL1,#0FDH
	SETB TR1	;启动定时器1
	SETB ES		;允许串口中断
	SETB EA		;允许总中断
	
	MOV P0,#0FFH	;P0、P2输出低电平
	MOV P1,#0FFH
		
	JMP $		;等待状态
;*****************************************
;串行口中断
;*****************************************
UART: 	PUSH ACC
	PUSH PSW
	CLR ES		;关闭串行口中断
		
	MOV TH0,#HIGH(65536-65536)
	MOV TL0,#LOW(65536-65536)
	SETB TR0	;开定时器0
		
	MOV 30H,#00	;同步位
	MOV 31H,#00	;数据1
	MOV 32H,#00	;数据2
	MOV 33H,#00	;结束位
			
	MOV R0,#30H
REC:	
	jbc tf0,FS	;接收时间是否超时?是则执行FS
	
	JNB RI,REC	;接收数据
	CLR RI
	
	MOV A,SBUF
	MOV @R0,A
	INC R0
	JMP REC
FS:	CLR TR0		;关定时器0
;********************************	
	CALL FUN 	;解码并控制继电器
	SETB ES		;开串行口中断
	POP PSW
	POP ACC
	RETI		;中断子程序返回

;****************************************
;解码并控制继电器
;下面的程序可以更简洁,但为了方便,展开来编制
;****************************************
FUN: 	MOV A,#0AH		;判断第1字节即同步位
	CJNE A,30H,ERR
		
        
	

	MOV A,#0DH		;判断第4字节即结束位
	CJNE A,33H,ERR
;****************************************
;第2字节即数据位1,代表继电器J1-8
;第3字节即数据位2,代表继电器J9-16
;****************************************
	MOV A,#0F3H
	CJNE A,31H,ERR
	
	MOV A,32H
        MOV P1,A
		
	RET
;**************************************
; 数据错误处理
;**************************************	
ERR:
	MOV 30H,#00	;同步位
	MOV 31H,#0FFH	;数据1
	MOV 32H,#0FFH	;数据2
	MOV 33H,#00	;结束位

	RET

	END	;程序结束

⌨️ 快捷键说明

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