📄 uart.lst
字号:
C51 COMPILER V7.50 UART 05/18/2010 22:18:56 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE uart.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include <string.h>
3 #include "uart.h"
4 #include "myfun.h"
5
6 /**************************************************************************
7 - 功能描述:51单片机的串口初始化
8 - 隶属模块:STC51串口操作
9 - 函数属性:外部,使用户使用
10 - 参数说明:无
11 - 返回说明:无
12 - 注:振南的很多产品均采用串口来进行操作,所以正确的初始化串口十分重要
13 **************************************************************************/
14
15 void UART_Init()
16 {
17 1 PCON =0x00; //PCON的最高位SMOD=1时波特率加倍
18 1 TMOD=0x20; //时器1为方式2 初值自动装入 产生波特率
19 1 TH1=0xfd; //定时器初始为0XFd,晶振为12MHz,本函数实际产生的波特率为9600bps
20 1 TL1=0xfd; //同上
21 1 SCON=0x50; //串口设置为方式1,REN=1,允许接收
22 1 TR1=1; //启动定时器1
23 1 ES=1; //使能串口接收中断,
24 1 EA=1; //打开所有中断
25 1 }
26
27 /**************************************************************************
28 - 功能描述:51单片机的串口中断处理函数
29 - 隶属模块:STC51串口操作
30 - 函数属性:外部,使用户使用(在此中断函数中常用来处理从串口收到的数据)
31 - 参数说明:无
32 - 返回说明:无
33 - 注:振南的很多产品,都是配合“超级终端”来进行演示的,在“超级终端”中
34 敲入的命令就是从计算机的串口发出,由单片机从串口接收,接收到的串口
35 数据就在此中断函数中进行处理,完成命令接收及处理、命令解析等工作。
36 **************************************************************************/
37
38 void sio_int() interrupt 4 using 3 //串口中断函数
39 {
40 1 ES=0;
41 1 //串口中断处理
42 1 /*
43 1 if(RI)
44 1 {
45 1 if(SBUF!=0x08) //如果接收到的是退格(ASCII码为0x08)
46 1 cmd_buf[counter++]=SBUF;
47 1 else
48 1 counter--;
49 1 RI=0;
50 1 }
51 1 if(SBUF==0x0d)
52 1 {
53 1 cmd_buf[counter-1]=0;
54 1 counter=0;
55 1 flag=1;
C51 COMPILER V7.50 UART 05/18/2010 22:18:56 PAGE 2
56 1 }
57 1 */
58 1 ES=1;
59 1 }
60
61 /**************************************************************************
62 - 功能描述:51单片机的串口发送字节的函数
63 - 隶属模块:STC51串口操作
64 - 函数属性:外部,使用户使用
65 - 参数说明:mydata:要发送的一个字节
66 - 返回说明:无
67 - 注:发送一个字节,是串口发送的基础操作
68 **************************************************************************/
69
70 void UART_Send_Byte(unsigned char mydata)
71 {
72 1 ES=0;
73 1 TI=0;
74 1 SBUF=mydata;
75 1 while(!TI);
76 1 TI=0;
77 1 ES=1;
78 1 }
79
80 /**************************************************************************
81 - 功能描述:51单片机的串口发送0d 0a ,即回车换行
82 - 隶属模块:STC51串口操作
83 - 函数属性:外部,使用户使用
84 - 参数说明:无
85 - 返回说明:无
86 - 注:此函数就是发送0d 0a这两个字节,在“超级终端”上会有回车换行的效果
87 **************************************************************************/
88
89 void UART_Send_Enter()
90 {
91 1 UART_Send_Byte(0x0d);
92 1 UART_Send_Byte(0x0a);
93 1 }
94
95 /**************************************************************************
96 - 功能描述:51单片机的串口发送字符串
97 - 隶属模块:STC51串口操作
98 - 函数属性:外部,使用户使用
99 - 参数说明:s:指向字符串的指针
100 - 返回说明:无
101 - 注:如果在字符串中有'\n',则会发送一个回车换行
102 **************************************************************************/
103
104 void UART_Send_Str(char *s)
105 {
106 1 int len=strlen(s)-1;
107 1 int i;
108 1 for(i=0;i<len;i++)
109 1 UART_Send_Byte(s[i]);
110 1 if(s[i]=='\n')
111 1 {
112 2 UART_Send_Enter();
113 2 }
114 1 else
115 1 {
116 2 UART_Send_Byte(s[i]);
117 2 }
C51 COMPILER V7.50 UART 05/18/2010 22:18:56 PAGE 3
118 1 }
119
120 /**************************************************************************
121 - 功能描述:51单片机的串口发送数值
122 - 隶属模块:STC51串口操作
123 - 函数属性:外部,使用户使用
124 - 参数说明:dat:要发送的数值
125 - 返回说明:无
126 - 注:函数中会将数值转为相应的字符串,发送出去。比如 4567 转为 "4567"
127 **************************************************************************/
128
129 void UART_Put_Num(unsigned long dat)
130 {
131 1 char temp[20];
132 1 u32tostr(dat,temp);
133 1 UART_Send_Str(temp);
134 1 }
135
136 /**************************************************************************
137 - 功能描述:51单片机的串口发送调试信息
138 - 隶属模块:STC51串口操作
139 - 函数属性:外部,使用户使用
140 - 参数说明:inf:指向提示信息字符串的指针
141 dat:一个数值,前面的提示信息就是在说明这个数值的意义
142 - 返回说明:无
143 - 注:此函数在振南的工程中会经常看到,是方便调试用的
144 **************************************************************************/
145
146 void UART_Put_Inf(char *inf,unsigned long dat)
147 {
148 1 UART_Send_Str(inf);
149 1 UART_Put_Num(dat);
150 1 UART_Send_Str("\n");
151 1 }
152
153 /*
154 void binary(unsigned char dat)
155 {
156 unsigned char i;
157 unsigned char a[17];
158 for(i=0;i<8;i++)
159 {
160 a[i]=((dat<<i)&0x80)?'o':' ';
161 }
162 a[i]=0;
163 for(i=0;i<strlen(a);i++)
164 {
165 UART_Send_Byte(a[i]);
166 UART_Send_Byte(' ');
167 }
168 }
169 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 214 ----
CONSTANT SIZE = 2 ----
XDATA SIZE = ---- 29
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V7.50 UART 05/18/2010 22:18:56 PAGE 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -