?? 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 + -