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

📄 som_int.asm

📁 keil c 环境下,实现的的串行通信测试程,汇编语言实现
💻 ASM
字号:
/**********************************************************************************************************************************************
功能:串通通信(中断),程序实现主机数据的接收,存储,以及从机信息回送给主机	
日期:2008.7.31
目的:单片机能通过串行口,方便快捷的通信
说明:中断需要设置波特率,设置串行口等相关信息
***********************************************************************************************************************************************/
		RECE_BUF EQU 30H
		FLAG BIT 00H//////////////////////////

		ORG 0000H
		LJMP MAIN

		ORG 0023H
		LJMP SCOM_INT//串行口中断服务程序入口地址

		ORG 0030H
MAIN:	MOV SP,#60H

	    LCALL INITIAL_T1;定时器T1,串行口初始化
		LCALL INITIAL_S;串行口初始化

		MOV R0,#RECE_BUF//接收缓冲区指针
    	MOV DPTR,#DEVICE_INFO
		LCALL S_D_ROM
		SJMP $
DEVICE_INFO:	DB "The function of  program is to test communication through RS23",0DH,0AH//字符,回车,换行,字符串结束标志
		    	DB 	"Date:2008/7/31",0DH,0AH,'$'


//****发送ROM中的数据*************(中断服务程序中调用就好)***************************************************************
;**DPTR作指针***(SEND_DATA_ROM)
S_D_ROM: CLR FLAG ////////////////////////////////////////////////////
LOOP:	CLR A
		MOVC A,@A+DPTR
		CJNE A,#'$',GO_TRAN	
		SJMP SROM_FIN
GO_TRAN:MOV SBUF,A        ;发送,如果不行,变成MOV SBUF,A试试,理论上应当可以(SETB TI)
		JNB FLAG,$ ///中断服务程序中清TI
		CLR FLAG//////////////////////////////////////////////////////
		INC DPTR        ;变指针
		SJMP LOOP
		//////////不是发送中断中调用,这里就要加JNB TI,$
SROM_FIN:RET
			
			
//**T1初始化程序***********************************************************************************************************************
INITIAL_T1:	MOV TMOD,#00100000B//定时器T1,方式1
			MOV TH1,#0FDH //波特率9600b/s
			MOV TL1,#0FDH
			CLR ET1
			SETB TR1
			RET		
			
//**串行口初始化程序******************************************************************************************************************
INITIAL_S:	MOV SCON,#01010000B//SM0 SM1 SM2 REN TB8 RB8 TI RI
			SETB ES
			SETB EA
			RET


//**串行中断服务程序*****************************************************************************************************************
SCOM_INT:	JB SCON.0,RECE_INT//接收中断
			JB SCON.1,TRAN_INT//发送中断
			SJMP FIN
RECE_INT:	CLR RI
			MOV A,SBUF
			MOV SBUF,A  //回显
			SJMP FIN

TRAN_INT:	CLR TI
			SETB FLAG
FIN:		RETI///////////中断服务程序返回时要注意


END

⌨️ 快捷键说明

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