📄 chengxu.lst
字号:
C51 COMPILER V8.05a CHENGXU 03/08/2012 11:44:03 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE CHENGXU
OBJECT MODULE PLACED IN chengxu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE chengxu.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 汇诚科技
3
4 实现功能:定时器T0模拟串口
5 使用芯片:STC15F104E
6 晶振:内部晶振 11.0592MHZ
7 编译环境:Keil
8 作者:zhangxinchunleo
9 网站:www.ourhc.cn
10 淘宝店:汇诚科技 http://shop36330473.taobao.com
11 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
12
13 *********************************************************************/
14 #include "reg52.h"
15 #include <intrins.H>
16 #define uchar unsigned char //宏定义字符型变量
17 #define uint unsigned int //宏定义整型变量
18 /********************************************************************
19 波特率设定
20 *********************************************************************/
21 //#define BAUD 0XF400 //1200bps@ 11.0592MHZ
22 //#define BAUD 0XFA00 //2400bps@ 11.0592MHZ
23 //#define BAUD 0XFD00 //4800bps@ 11.0592MHZ
24 #define BAUD 0XFE80 //9600bps@ 11.0592MHZ
25 //#define BAUD 0XFF40 //19200bps@ 11.0592MHZ
26 //#define BAUD 0XFFA0 //38400bps@ 11.0592MHZ
27
28 sbit P33=P3^3; //定义继电器控制输出脚
29 /********************************************************************
30 定义特殊寄存器
31 *********************************************************************/
32 sfr AUXR = 0x8E; //辅助寄存器
33 sbit RXB=P3^0;
34 sbit TXB=P3^1;
35 /********************************************************************
36 定义数据类型
37 *********************************************************************/
38 uchar TBUF,RBUF;
39 uchar TDAT,RDAT;
40 uchar TCNT,RCNT;
41 uchar TBIT,RBIT;
42 uint TING,RING;
43 uint TEND,REND;
44
45 void UART_INIT(); //声明函数
46
47 uchar t,r; //定义数据类型
48 uchar but[16]; //数据存储数组
49 /********************************************************************
50 主函数
51 *********************************************************************/
52 void main()
53 {
54 1
55 1 TMOD=0X00; //定时器T0设定
C51 COMPILER V8.05a CHENGXU 03/08/2012 11:44:03 PAGE 2
56 1 AUXR=0X80; //辅助寄存器
57 1 TL0=BAUD; //十六位寄存器
58 1 TH0=BAUD>>8; //十六位寄存器
59 1 TR0=1; //开定时器
60 1 ET0=1;
61 1 PT0=1;
62 1 EA=1; //开总中断
63 1 UART_INIT(); //串口初始化
64 1 while(1) //无线循环
65 1 {
66 2 if(REND)
67 2 {
68 3 REND=0;
69 3 but[r++&0x0f]=RBUF;
70 3 }
71 2 if(TEND)
72 2 {
73 3 if(t!=r)
74 3 {
75 4 TEND=0;
76 4 TBUF=but[t++&0x0f];
77 4 TING=1;
78 4 }
79 3 }
80 2 }
81 1
82 1 }
83 /********************************************************************
84 定时器T0
85 *********************************************************************/
86 void tm0()interrupt 1 using 1
87 {
88 1 if(RING)
89 1 {
90 2 if(--RCNT==0)
91 2 {
92 3 RCNT=3;
93 3 if(--RBIT==0)
94 3 {
95 4 RBUF=RDAT;
96 4 RING=0;
97 4 REND=1;
98 4 }
99 3 else
100 3 {
101 4 RDAT>>=1;
102 4 if(RXB)RDAT|=0X80;
103 4 }
104 3
105 3 }
106 2 }
107 1 else if(!RXB)
108 1 {
109 2 RING=1;
110 2 RCNT=4;
111 2 RBIT=9;
112 2 }
113 1 if(--TCNT==0)
114 1 {
115 2 TCNT=3;
116 2 if(TING)
117 2 {
C51 COMPILER V8.05a CHENGXU 03/08/2012 11:44:03 PAGE 3
118 3 if(TBIT==0)
119 3 {
120 4 TXB=0;
121 4 TDAT=TBUF;
122 4 TBIT=9;
123 4 }
124 3 else
125 3 {
126 4 TDAT>>=1;
127 4 if(--TBIT==0)
128 4 {
129 5 TXB=1;
130 5 TING=0;
131 5 TEND=1;
132 5 }
133 4 else
134 4 {
135 5 TXB=CY;
136 5 }
137 4 }
138 3 }
139 2 }
140 1 }
141 /********************************************************************
142 功能:串口初始化,波特率9600,方式1
143 *********************************************************************/
144 void UART_INIT()
145 {
146 1 TING=0;
147 1 RING=0;
148 1 TEND=1;
149 1 REND=0;
150 1 TCNT=0;
151 1 RCNT=0;
152 1 }
153
154 /********************************************************************
155 结束
156 *********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 233 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 34 ----
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 + -