📄 uart_int.lst
字号:
C51 COMPILER V7.06 UART_INT 11/06/2008 01:10:28 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE UART_INT
OBJECT MODULE PLACED IN UART_INT.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE c51\UART_INT.c INCDIR(.\Target\INC\) DEBUG OBJECTEXTEND PRINT(.\UART_INT.ls
-t) OBJECT(UART_INT.obj)
stmt level source
1
2
3 #include "AT89X52.h"
4 #include "ES51_II.h"
5 #include "ES51_II_LIB.h"
6
7 // 指针
8 // 在串行中断中使用
9 static char *pBuff;
10
11 // 字符串发送完毕标志
12 // 在调用PutStr()函数前查询前一字符串是否发送完毕
13 bit bTxDone = TRUE;
14 // 字符串接收完毕标志位
15 // 在调用GetStr()函数后查询此变量,可判断字符串接收是否完成
16 bit bRxDone = FALSE;
17 //
18 static unsigned char RxLength;
19 //
20 static unsigned char TxLength;
21
22
23 // 发送字符串标志
24 static bit bTxStr = TRUE;
25 // 接收字符串标志
26 static bit bRxStr = TRUE;
27
28
29 // 中断方式发送字符串
30 // 以字符串结尾标志'\0'停止发送
31 void PutStr_( char *pstr )
32 {
33 1 bTxStr = TRUE; // 发送字符串
34 1 bTxDone = FALSE; // 发送完成标志位,初始为假
35 1 ES = 1; // 允许串行中断
36 1 pBuff = pstr;
37 1 SBUF = *pBuff; // 发送第一字节数据,发送完毕将引起中断
38 1 pBuff++; //
39 1 }
40
41 // 中断方式发送一组数据
42 void PutData_(unsigned char length,char *pbuff)
43 {
44 1 bTxStr = FALSE; // 发送数据
45 1 bTxDone = FALSE; // 发送完成标志位,初始为假
46 1 ES = 1; // 允许串行中断
47 1 TxLength = length;
48 1 pBuff = pbuff;
49 1 SBUF = *pBuff; // 发送第一字节数据,发送完毕将引起中断
50 1 pBuff++;
51 1 TxLength--;
52 1 }
53
54 // 中断方式接收字符串
C51 COMPILER V7.06 UART_INT 11/06/2008 01:10:28 PAGE 2
55 // 以回车符['\r']结束接收;
56 void GetStr_(char *pbuff )
57 {
58 1 bRxStr = TRUE; // 接收字符串
59 1 bRxDone = FALSE; // 接收完成标志位 初始为假
60 1 ES = 1; // 允许串行中断
61 1
62 1 pBuff = pbuff;
63 1 }
64
65 // 中断方式接收数据
66 void GetData_(unsigned char length,char *pbuff)
67 {
68 1 bRxStr = FALSE; // 接收数据
69 1 bRxDone = FALSE; // 接收完成标志位 初始为假
70 1 ES = 1; // 允许串行中断
71 1
72 1 pBuff = pbuff;
73 1 RxLength = length;
74 1 }
75
76 // 串行中断函数
77 void UART_INT(void) interrupt SIO_VECTOR //using 0
78 {
79 1 unsigned char tmp;
80 1
81 1 if( TI ) // 传输完毕中断处理
82 1 {
83 2 TI = 0;
84 2 if( bTxStr == TRUE) // 处理发送字符串
85 2 {
86 3 if( *pBuff != 0 ) // 判断是否到达字符串末尾
87 3 SBUF = *pBuff; //
88 3 else{
89 4 bTxDone = TRUE; // 完成字符串发送
90 4 ES = 0; // 传输完毕,禁止串行中断
91 4 }
92 3 }
93 2 else{ // 处理发送数据
94 3 if( TxLength-- > 0)
95 3 SBUF = *pBuff; // 数据发送未完成
96 3 else{
97 4 bTxDone = TRUE; // 数据发送完成
98 4 ES = 0;
99 4 }
100 3 }
101 2 }
102 1 else if( RI ) // 接收数据中断处理
103 1 { // 把接收到的数据放到缓冲区中
104 2 RI = 0;
105 2 tmp = SBUF;
106 2 if( bRxStr == TRUE )
107 2 {
108 3 if( tmp != '\r' )
109 3 *pBuff = SBUF;
110 3 else{
111 4 *pBuff = SBUF;
112 4 bRxDone = TRUE; // 字符串接收完毕
113 4 ES = 0;
114 4 }
115 3 }
116 2 else{
C51 COMPILER V7.06 UART_INT 11/06/2008 01:10:28 PAGE 3
117 3 if( RxLength > 0 )
118 3 *pBuff = tmp;
119 3 if( --RxLength == 0 )
120 3 {
121 4 bRxDone = TRUE; // 字符串接收完毕
122 4 ES = 0;
123 4 }
124 3 }
125 2 }
126 1 pBuff++;
127 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 254 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 ----
IDATA SIZE = ---- ----
BIT SIZE = 4 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -