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

📄 uart_multiproc_slave.a51

📁 Atmel Uart C51程序(从方式)
💻 A51
字号:
$INCLUDE   (reg_c51.INC)
echo BIT 20H; echo enable bit
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: void
 * FUNCTION_OUTPUTS: void
 */
org 0100h

begin:
	MOV SCON, #0F0h;				  /* uart in mode 3 (9 bit), REN=1 */
   MOV SADDR,#03h;              /* 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:
   JNB      echo,$;            /* wait data to echo */
   CLR      echo ;              /* disable echo */
   SETB     TB8;                /* address mode */ 
   SETB     TxOK;               /* set software flag */ 
   MOV      SBUF,#01h;          /* send master adress */
   JB       TxOK,$;             /* wait the stop bit transmition */
   CLR      TB8;                /* data mode */
   SETB     TxOK;               /* set software flag */ 
   MOV      SBUF,A;             /* send data */
   JB       TxOK,$;             /* wait the stop bit transmition */

LJMP     loop


;/**
; * FUNCTION_PURPOSE: serial interrupt, echo receive data to master
; * FUNCTION_INPUTS: P3.0(RXD) serial input
; * FUNCTION_OUTPUTS: none
; */
serial_IT:
   JNB      TI,END_Test_TI;     /* if reception occur */
   CLR      TI;                 /* clear transmition flag for next transmition */
   CLR      TxOK;               /* clear software transmition flag */
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 */
   SETB     echo

END_Test_RB8:

END_Test_RI:
   
   RETI     

end


⌨️ 快捷键说明

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