📄 uart.lst
字号:
C51 COMPILER V8.02 UART 01/05/2011 19:25:34 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 "STC12C5A60S2.H"
2 #include "Uart.h"
3 //========================================
4 #define RELOAD 0xFA
5 #define RELOAD_TWO 0xfa
6 #define BRTx12_enable() AUXR |= 0x04 //BRT 独立波特率发生器的溢出率快 12 倍
7 #define BRT_start() AUXR |= 0x10 //启动独立波特率发生器 BRT 计数。
8 //=========================================
9 bit Uart_One_Flag = 0 ;
10 bit Uart_Two_Flag = 0 ;
11 U8 c = 0 ;
12 U8 d = 0 ;
13 extern U8 xdata tab[35] ;
14 extern U8 xdata tab2[35] ;
15 //=========================================
16 //=======baud 115200=======================
17 void Uart_One_Init(){
18 1 TMOD = 0x20 ;
19 1 SCON = 0x50 ;
20 1 // PCON = PCON | 0x80 ; //SMOD=1;
21 1 TH1 = RELOAD ;
22 1 TL1 = RELOAD ;
23 1 TR1= 1 ;
24 1 EA = 1 ;
25 1 ES = 1 ;
26 1 AUXR|=0X40; //T1*12;
27 1 }
28 //========================================
29 void Uart_One_Send(U8 k){
30 1 ES = 0 ;
31 1 TI = 0 ;
32 1 if(k=='\n'){
33 2 SBUF='\r';
34 2 while(TI!=1);
35 2 TI = 0 ;
36 2 SBUF= '\n' ;
37 2 while(TI!=1);
38 2 TI = 0 ;
39 2 //----------
40 2 }else{
41 2 SBUF=k;
42 2 while(TI!=1);
43 2 TI = 0 ;
44 2 }
45 1 ES = 1 ;
46 1 }
47 //=========================================
48 //=========baud 9600=======================
49 void Uart_Two_Init(){
50 1 S2CON= 0x50 ;
51 1 BRT = RELOAD_TWO ;
52 1 AUXR = AUXR | 0X10 ;
53 1 // BRTx12_enable();
54 1 AUXR1= AUXR1| 0x10 ; //S2_P4
55 1 IE2 = 1 ;
C51 COMPILER V8.02 UART 01/05/2011 19:25:34 PAGE 2
56 1 EA = 1 ;
57 1 }
58
59 //=========================================
60 void Uart_Two_Send(U8 k){
61 1 ES = 0 ;
62 1 if(k=='\n'){
63 2 S2BUF='\r';
64 2 while((S2CON&0x02)!=0x02);
65 2 S2CON &= ~0x02;
66 2 //----------
67 2 S2BUF = '\n' ;
68 2 while((S2CON&0x02)!=0x02);
69 2 S2CON &= ~0x02;
70 2 }else{
71 2 S2BUF = k ;
72 2 while((S2CON&0x02)!=0x02);
73 2 S2CON &= ~0x02;
74 2 ES = 1 ;
75 2 }
76 1 }
77 //=============================================
78 void UART_One_Printf(U8 *p){
79 1 while(* p!='\0') Uart_One_Send(*p++);
80 1 }
81 //============================================
82 void UART_Two_Printf(U8 *p){
83 1 while(* p!='\0') Uart_Two_Send(*p++);
84 1 }
85 //===========================================
86 void Uart_One_Receive() interrupt 4{
87 1 U8 k = 0 ;
88 1 if(RI==1){
89 2 RI = 0 ;
90 2 k = SBUF;
91 2 if(k=='\b'){
92 3 if(c>0){
93 4 c=c-1;
94 4 //Uart_One_Send('\b');
95 4 //Uart_One_Send(' ');
96 4 //Uart_One_Send('\b');
97 4 }
98 3 }else if(k=='\r'){
99 3 tab[c]='\0';
100 3 Uart_One_Send('\n');
101 3 Uart_One_Flag=1;
102 3
103 3 }else if(k=='\n'){
104 3
105 3 }else{
106 3 tab[c++]=k;
107 3 Uart_One_Send(k);
108 3 }
109 2 }
110 1 }
111 //========================================
112 void Uart_Two_Receive() interrupt 8{
113 1 U8 a ;
114 1 U8 k = 0 ;
115 1 a = S2CON ;
116 1 a = a & 0x01;
117 1 if(a==1){
C51 COMPILER V8.02 UART 01/05/2011 19:25:34 PAGE 3
118 2 k = S2BUF ;
119 2 S2CON = S2CON & 0xfe;
120 2 if(k=='\b'){
121 3 if(d>0){
122 4 d=d-1;
123 4 Uart_Two_Send('\b');
124 4 Uart_Two_Send(' ');
125 4 Uart_Two_Send('\b');
126 4 }
127 3 }else if(k=='\r'){
128 3 tab2[d]='\0';
129 3 Uart_Two_Send('\n');
130 3 Uart_Two_Flag=1;
131 3
132 3 }else if(k=='\n'){
133 3
134 3 }else{
135 3 tab2[d++]=k;
136 3 Uart_Two_Send(k);
137 3 }
138 2 }
139 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 407 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 6
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 + -