📄 uart2.lst
字号:
C51 COMPILER V7.02b UART2 08/06/2007 21:11:12 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE UART2
OBJECT MODULE PLACED IN uart2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.exe uart2.c DEBUG OBJECTEXTEND NOCOND PREPRINT(.\uart2.i)
stmt level source
1 /****************************************************************************************
2 *文件:UART2.C
3 *功能:利用LPC900普通I/O口实现模拟串口,占用定时器1
4 *日期:05/07/18
5 *****************************************************************************************/
6 #include "Reg935.h"
7 #include "uart2.h"
8 #define uchar unsigned char
9 #define BRH 0xfd //0xfe 0x95//波特率为9600,使用内部RC振荡
10 #define BRL 0x15 //0xfd 0x15 //波特率为4800,使用内部RC振荡
11 //////////////////////////////////////////////////////////////////////////////////////////
12 uchar num;
13 uchar uart2s; //ie. SBUF2
14 unsigned char uart2f=0; //0:disable 1:read 2:send 3: read completed 4:send completed
15 //****************************************************************************************
16 void timer1_isr(void) interrupt 3
17 {
18 1 TH1=BRH;
19 1 TL1=BRL;
20 1 if(uart2f==2) //每个IF大概运行32周期,从而可以计算出BRH和BRL
21 1 {
22 2 if(num>1)
23 2 {
24 3 if(uart2s&(0x01<<(9-num)))
25 3 {uart2txd=1;}
26 3 else
27 3 {uart2txd=0;}
28 3 num--;
29 3 }
30 2 else if(num==1)
31 2 {
32 3 uart2txd=1;
33 3 //uart2f=4;
34 3 num--;
35 3 // num=9;
36 3 }
37 2 else {TR1=0;uart2f=4;}
38 2 }
39 1 if(uart2f==1)
40 1 {
41 2 if(num>1)
42 2 {
43 3 if(uart2rxd)
44 3 {uart2s=uart2s|(0x01<<(9-num));}
45 3 else
46 3 {uart2s=uart2s&~(0x01<<(9-num));}
47 3 num--;
48 3 }
49 2 // else if(num==1){if(uart2rxd)num--;
50 2 // }
51 2 else
52 2 {
53 3 uart2f=3;
54 3 TR1=0;
55 3 }
C51 COMPILER V7.02b UART2 08/06/2007 21:11:12 PAGE 2
56 2 }
57 1 }
58 //---------------------------------------------------------------------------------------
59 //uart2send: 向模拟串口发送一个字符
60 //入口参数: s 被发送字符
61 //出口参数: 无
62 //---------------------------------------------------------------------------------------
63 void uart2send(uchar s)
64 {
65 1 TH1=BRH;
66 1 TL1=BRL;
67 1 num=9;
68 1 uart2s=s;
69 1 uart2f=2;
70 1 uart2txd=0;
71 1 TR1=1;
72 1 while(uart2f!=4);
73 1 }
74 //---------------------------------------------------------------------------------------
75 //uart2read: 向模拟串口接收一个字符
76 //入口参数 无
77 //出口参数 s 被发送字符
78 //---------------------------------------------------------------------------------------
79 unsigned char uart2read(void)
80 {
81 1 while(uart2rxd);
82 1 num=9;
83 1 uart2f=1;
84 1 TH1=BRH-1;
85 1 TL1=BRL;//-0x15;
86 1 TR1=1;
87 1 while(uart2f!=3);
88 1 while(!uart2rxd);
89 1 return(uart2s);
90 1 }
91 //---------------------------------------------------------------------------------------
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 213 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -