📄 uart.lst
字号:
C51 COMPILER V8.02 UART 05/04/2008 21:35:46 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE uart.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <head.h>
2 #include <config.h>
3 #include "uart.h"
4 uchar pdata UartWBuf[UART_WBUFLEN];
5 uchar pdata pUartWBufW=0,pUartWBufR=0;
6 uchar pdata UartRBuf[UART_RBUFLEN];
7 uchar pdata pUartRbufW=0;
8
9 BOOL hadrxcom;
10 BOOL SendEndFlag=1;
11
12
13
14
15 /**************************************************************************
16 * 函数原型: void Uart_init(Ulong baud,char parity)
17 * 功 能: 串口初始化函数
18 * 入 口: baud:波特率,parity:校验位
19 *************************************************************************/
20
21 void Uart_Init(ulong Baud,char Parity)
22 {
23 1 ulong temp;
24 1 if(Parity) SCON=0xd0;
25 1 else SCON=0x50;
26 1 T2CON=0x30;
27 1 temp=0x10000-(SYSCLK/32)/Baud;
28 1 TH2=((uint)temp)>>8;
29 1 RCAP2H=TH2;
30 1 TL2=temp&0xff;
31 1 RCAP2L=TL2;
32 1 T2CON=0x34;
33 1 D485WEN=FALSE;
34 1 PS=1; //
35 1 ES=1;
36 1 EA=1;
37 1 }
38
39 /**************************************************************************
40 * 函数原型:void uart_int(void);
41 * 功 能:串口中断4
42 **************************************************************************/
43 void uart_int(void) interrupt 4
44 {
45 1 if(_testbit_(TI))
46 1 {
47 2 if(pUartWBufR!=pUartWBufW)
48 2 {
49 3 D485WEN=TRUE;
50 3 SBUF=UartWBuf[pUartWBufR++];
51 3 if(pUartWBufR>=UART_WBUFLEN)pUartWBufR=0;
52 3 }
53 2 else {SendEndFlag=1;D485WEN=FALSE;}
54 2 }
55 1 if(_testbit_(RI))
C51 COMPILER V8.02 UART 05/04/2008 21:35:46 PAGE 2
56 1 {
57 2 if(SBUF==0x2)pUartRbufW=0;
58 2 else if(SBUF==0x3) hadrxcom=1;
59 2 else if(!hadrxcom)UartRBuf[pUartRbufW++]=SBUF;
60 2 }
61 1 }
62 /**************************************************************************
63 //以下为串口发送子程序,bit Uart_sendS(Uchar *wchar)为发送字符串,
64 bit Uart_sendC(Uchar wchar)为发送单个字符
65 bit Uart_sendN(long wnum,char dot)为发送数字
66 *************************************************************************/
67 BOOL Uart_SendS(uchar *Wchar)
68 {
69 1 uchar i=0;
70 1 for(i=0;Wchar[i]!='\0';i++)
71 1 {
72 2 Uart_SendC(Wchar[i]);
73 2 }
74 1 return 1;
75 1 }
76 BOOL Uart_SendC(uchar Wchar)
77 {
78 1 D485WEN=TRUE;
79 1 if(SendEndFlag){SBUF=Wchar;SendEndFlag=0;}
80 1 else
81 1 {
82 2 UartWBuf[pUartWBufW]=Wchar;
83 2 if(++pUartWBufW>=UART_WBUFLEN)pUartWBufW=0;
84 2 }
85 1 return 1;
86 1 }
87
88
89
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 260 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = 39 ----
DATA SIZE = ---- 13
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 + -