📄 som_int.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 + -