📄 串口link.lst
字号:
C51 COMPILER V7.00 串__LINK 09/11/2006 11:08:58 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE 串__LINK
OBJECT MODULE PLACED IN 串口LINK.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 串口LINK.C LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include <intrins.h>
3 typedef unsigned char INT8U;
4 typedef unsigned int INT16U;
5 typedef unsigned long INT32U;
6
7 ///////////////定义////////////////////////////
8 sfr TCON2 = 0xc8;
9 sfr TMOD2 = 0xc9;
10
11 sfr RCAP2L = 0xca;
12 sfr RCAP2H = 0xcb;
13 sfr TL2 = 0xcc;
14 sfr TH2 = 0xcd;
15
16 sbit TF2 = TCON2^7;
17 sbit EXF2 = TCON2^6;
18 sbit RCLK = TCON2^5;
19 sbit TCLK = TCON2^4;
20 sbit EXEN2 = TCON2^3;
21 sbit TR2 = TCON2^2;
22 sbit CT2 = TCON2^1;
23 sbit CPRL2 = TCON2^0;
24
25
26 sbit rs_rev = P3^0;
27 sbit rs_sent = P3^1;
28
29 INT8U bdata rsbuf; //定义虚拟串口寄存器
30 sbit rs0 = rsbuf^0;
31 sbit rs1 = rsbuf^1;
32 sbit rs2 = rsbuf^2;
33 sbit rs3 = rsbuf^3;
34 sbit rs4 = rsbuf^4;
35 sbit rs5 = rsbuf^5;
36 sbit rs6 = rsbuf^6;
37 sbit rs7 = rsbuf^7;
38
39 //////////////虚拟串口初始化子函数///////////
40 void rs_com_start(void)
41 {
42 1 RCAP2H = 0xff;
43 1 TH2 = RCAP2H;
44 1 RCAP2L = 160; //9600波特率
45 1 TL2= RCAP2L;
46 1 TCON2 = 0x00; //使用定时器2为波特率发生器
47 1 // TMOD2 = 0x00;
48 1 }
49 //////////////虚拟串口发送函数/////////////////////
50 void rs_sen(INT8U T_TXD)
51 {
52 1 rsbuf=T_TXD;
53 1 TR2 = 1;
54 1 rs_sent = 0; //发出开始位
55 1 while(TF2 != 1);
C51 COMPILER V7.00 串__LINK 09/11/2006 11:08:58 PAGE 2
56 1 TF2=0;
57 1 rs_sent=rs0;
58 1 while(TF2 != 1);
59 1 TF2=0;
60 1 rs_sent=rs1;
61 1 while(TF2 != 1);
62 1 TF2=0;
63 1 rs_sent=rs2;
64 1 while(TF2 != 1);
65 1 TF2=0;
66 1 rs_sent=rs3;
67 1 while(TF2 != 1);
68 1 TF2=0;
69 1 rs_sent=rs4;
70 1 while(TF2 != 1);
71 1 TF2=0;
72 1 rs_sent=rs5;
73 1 while(TF2 != 1);
74 1 TF2=0;
75 1 rs_sent=rs6;
76 1 while(TF2 != 1);
77 1 TF2=0;
78 1 rs_sent=rs7;
79 1 while(TF2 != 1);
80 1 TF2=0;
81 1 rs_sent=1; //发出停止位,数据位为8,结构为10位,无校验
82 1 while(TF2 != 1);
83 1 TF2=0;
84 1 TR2=0;
85 1 }
86 ///////////////虚拟串口接收子函数//////////////////
87 unsigned char rs_in(void)
88 {
89 1 INT8U i;
90 1 for(i=0;i<2;i++ )
91 1 {
92 2 i = 1;
93 2 while( rs_rev != 0 ) ;
94 2 TR2=1; //收到开始位,开定时器2,
95 2 while(TF2 != 1);
96 2 TF2 = 0 ;
97 2 rs0 = rs_rev ;
98 2 while(TF2 != 1);
99 2 TF2 = 0 ;
100 2 rs1 = rs_rev ;
101 2 while(TF2 != 1);
102 2 TF2 = 0 ;
103 2 rs2 = rs_rev ;
104 2 while(TF2 != 1);
105 2 TF2 = 0 ;
106 2 rs3 = rs_rev ;
107 2 while(TF2 != 1);
108 2 TF2 = 0 ;
109 2 rs4 = rs_rev ;
110 2 while(TF2 != 1);
111 2 TF2 = 0 ;
112 2 rs5 = rs_rev ;
113 2 while(TF2 != 1);
114 2 TF2 = 0 ;
115 2 rs6 = rs_rev ;
116 2 while(TF2 != 1);
117 2 TF2 = 0 ;
C51 COMPILER V7.00 串__LINK 09/11/2006 11:08:58 PAGE 3
118 2 rs7 = rs_rev ;
119 2 while(TF2 != 1);
120 2 TF2 = 0 ;
121 2 if (rs_rev != 1)
122 2 {
123 3 i = 0;
124 3 }
125 2 while(TF2 != 1);
126 2 TR2 = 0;
127 2 TF2 = 0;
128 2 }
129 1 return(rsbuf);
130 1 }
131
132
133
134 void main(void)
135 {
136 1 INT8U i;
137 1 while(1)
138 1 {
139 2 rs_com_start();
140 2 rs_sen(0xdd);
141 2 i=rs_in();
142 2 rs_sen(i);
143 2 }
144 1 }
145
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 233 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
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 + -