📄 uart_multiproc_slave.lst
字号:
C51 COMPILER V7.10 UART_MULTIPROC_SLAVE 04/26/2004 14:07:34 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE UART_MULTIPROC_SLAVE
OBJECT MODULE PLACED IN uart_multiproc_slave.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE uart_multiproc_slave.c BROWSE DEBUG OBJECTEXTEND TABS(3)
line level source
1 /**
2 * @file $RCSfile:uart_multiproc_slave.c,v $
3 *
4 * Copyright (c) 2004 Atmel.
5 *
6 * Please read file license.txt for copyright notice.
7 *
8 * @brief This file is an example to use uart with timer in
9 * multiprocessor mode.
10 *
11 * This file can be parsed by Doxygen for automatic documentation
12 * generation.
13 * Put here the functional description of this file within the software
14 * architecture of your program.
15 *
16 * @version $Revision: 1.0 $ $Name: $
17 */
18
19 /* @section I N C L U D E S */
20 #include "reg_c51.h"
21
22 char uart_data;
23 bit TxOK=0;
24 bit echo=0;
25
26 /**
27 * FUNCTION_PURPOSE: This file set up uart in mode 3 (9 bits uart) with
28 * timer 1 in baud rate generator mode.
29 * FUNCTION_INPUTS: void
30 * FUNCTION_OUTPUTS: P3.1(TXD) serial output
31 */
32 void main (void)
33 {
34 1 SCON = 0xF0; /* uart in mode 3 (9 bit), REN=1 */
35 1 SADDR=0x03; /* local address */
36 1 SADEN=0xFF; /* address mask */
37 1 TMOD = TMOD | 0x20 ; /* Timer 1 in mode 2 */
38 1 TH1 = 0xFD; /* 9600 Bds at 11.059MHz */
39 1 TL1 = 0xFD; /* 9600 Bds at 11.059MHz */
40 1 ES = 1; /* Enable serial interrupt */
41 1 EA = 1; /* Enable global interrupt */
42 1 TR1 = 1; /* Timer 1 run */
43 1
44 1 while(1) /* endless */
45 1 {
46 2 while(!echo); /* wait data to echo */
47 2 echo = 0; /* disable echo */
48 2
49 2 TB8 = 1; /* address mode */
50 2 TxOK=1; /* set software flag */
51 2 SBUF = 0x01; /* send master adress */
52 2 while(TxOK); /* wait the stop bit transmition */
53 2
54 2 TB8 = 0; /* data mode */
55 2 TxOK=1; /* set software flag */
C51 COMPILER V7.10 UART_MULTIPROC_SLAVE 04/26/2004 14:07:34 PAGE 2
56 2 SBUF = uart_data; /* send data */
57 2 while(TxOK); /* wait the stop bit transmition */
58 2 }
59 1 }
60
61 /**
62 * FUNCTION_PURPOSE: serial interrupt, receive data to master
63 * FUNCTION_INPUTS: P3.0(RXD) serial input
64 * FUNCTION_OUTPUTS: none
65 */
66 void serial_IT(void) interrupt 4
67 {
68 1 if (TI == 1)
69 1 { /* if reception occur */
70 2 TI=0; /* clear transmition flag for next transmition */
71 2 TxOK=0; /* clear software transmition flag */
72 2 }
73 1
74 1 if (RI == 1)
75 1 { /* if reception occur */
76 2 RI = 0; /* clear reception flag for next reception */
77 2 if(RB8) SM2=0; /* go into data mode */
78 2 else
79 2 {
80 3 uart_data = SBUF; /* Read receive data */
81 3 SM2=1; /* return into address mode after receive data */
82 3 echo=1; /* enable echo */
83 3 }
84 2 }
85 1 }
86
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 77 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -