📄 uart_multiproc_master.a51
字号:
$INCLUDE (reg_c51.INC)
TxOK BIT 21H; software flag
org 000h
ljmp begin
org 23h
ljmp serial_IT
;/**
; * FUNCTION_PURPOSE: This file set up uart in mode 3 (9 bits uart) with
; * timer 1 in baud rate generator mode.
; * FUNCTION_INPUTS: P3.2(INT0)
; * FUNCTION_OUTPUTS: void
; */
org 0100h
begin:
MOV SCON, #0F0h; /* uart in mode 3 (9 bit), REN=1 */
MOV SADDR,#01h; /* local address */
MOV SADEN,#0FFh; /* address mask */
ORL TMOD, #20h; /* Timer 1 in mode 2 */
MOV TH1, #0FDh; /* 9600 Bds at 11.059MHz */
MOV TL1, #0FDh; /* 9600 Bds at 11.059MHz */
SETB ES; /* Enable serial interrupt */
SETB EA; /* Enable global interrupt */
SETB TR1; /* Timer 1 run */
loop:
JB P3.2,$; /* wait P3_2(INT0)=0 */
JNB P3.2,$; /* wait P3_2(INT0)=1 */
SETB TB8; /* address mode */
SETB TxOK; /* set software flag */
MOV SBUF,#03h; /* send slave adress */
JB TxOK,$; /* wait the stop bit transmition */
CLR TB8; /* data mode */
SETB TxOK; /* set software flag */
MOV SBUF,#55h; /* send data example */
JB TxOK,$; /* wait the stop bit transmition */
SJMP loop
;/**
; * FUNCTION_PURPOSE: serial interrupt,
; * FUNCTION_INPUTS: P3.0(RXD) serial input
; * FUNCTION_OUTPUTS: none
; */
serial_IT:
JNB TI,END_Test_TI
CLR TI
CLR TxOK
END_Test_TI:
JNB RI,END_Test_RI; /* test if it is a reception */
CLR RI; /* clear reception flag for next reception */
JNB RB8,address_mode
CLR SM2; /* go into data mode */
LJMP END_Test_RB8
address_mode:
MOV A,SBUF; /* Read receive data */
SETB SM2; /* return into address mode after receive data */
MOV P2,A
END_Test_RB8:
END_Test_RI:
RETI
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -