📄 www.ourhc.cn.lst
字号:
C51 COMPILER V8.05a WWW_OURHC_CN 06/11/2012 15:19:05 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE WWW_OURHC_CN
OBJECT MODULE PLACED IN www.ourhc.cn.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE www.ourhc.cn.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 汇诚科技
3
4 实现功能:STC15F104E系列单片机之串口通讯应用程序
5 使用芯片:STC15F104E系列单片机
6 晶振:11.0592MHZ
7 波特率:9600
8 编译环境:Keil
9 作者:zhangxinchun
10 网站:www.ourhc.cn
11 淘宝店:
12 汇诚科技 http://ourhc.taobao.com
13 郑兴电子直销部 http://shop68451856.taobao.com
14 声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
15
16 *********************************************************************/
17 /********************************************************************
18 单片机与PC机采用9针串口,MAX232通讯,波特率默认为9600.
19 单片机接收PC机发送的数据码表如下:
20
21 01、开:PC发送'A'IO口输出高电平;
22 02、关:PC发送'B'IO口输出低电平;
23 03、输出状态查询:PC发送C;单片机返回输出状态‘A’表示开 ‘B’表示关;
24 04、继电器状态取反:PC发送D 继电器状态取反
25 *********************************************************************/
26 #include "reg52.h"
27 #include <intrins.H>
28 #define uchar unsigned char //宏定义字符型变量
29 #define uint unsigned int //宏定义整型变量
30 /********************************************************************
31 波特率设定
32 *********************************************************************/
33 //#define BAUD 0XF400 //1200bps@ 11.0592MHZ
34 //#define BAUD 0XFA00 //2400bps@ 11.0592MHZ
35 //#define BAUD 0XFD00 //4800bps@ 11.0592MHZ
36 #define BAUD 0XFE80 //9600bps@ 11.0592MHZ
37 //#define BAUD 0XFF40 //19200bps@ 11.0592MHZ
38 //#define BAUD 0XFFA0 //38400bps@ 11.0592MHZ
39
40 uchar dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
41 sbit P33=P3^3; //定义继电器控制输出脚
42
43 /********************************************************************
44 定义特殊寄存器
45 *********************************************************************/
46 sfr AUXR = 0x8E; //辅助寄存器
47 sbit RXB=P3^0;
48 sbit TXB=P3^1;
49 /********************************************************************
50 定义数据类型
51 *********************************************************************/
52 uchar TBUF,RBUF;
53 uchar TDAT,RDAT;
54 uchar TCNT,RCNT;
55 uchar TBIT,RBIT;
C51 COMPILER V8.05a WWW_OURHC_CN 06/11/2012 15:19:05 PAGE 2
56 uint TING,RING;
57 uint TEND,REND;
58
59 void UART_INIT(); //声明函数
60
61 uchar t,r; //定义数据类型
62 uchar but[16]; //数据存储数组
63 /********************************************************************
64 延时函数
65 *********************************************************************/
66 void delay(uchar t)
67 {
68 1 uchar i,j;
69 1 for(i=0;i<t;i++)
70 1 {
71 2 for(j=13;j>0;j--);
72 2 { ;
73 3 }
74 2 }
75 1 }
76 /********************************************************************
77 主函数
78 *********************************************************************/
79 void main()
80 {
81 1
82 1 TMOD=0X00; //定时器T0设定
83 1 AUXR=0X80; //辅助寄存器
84 1 TL0=BAUD; //十六位寄存器
85 1 TH0=BAUD>>8; //十六位寄存器
86 1 TR0=1; //开定时器
87 1 ET0=1;
88 1 PT0=1;
89 1 EA=1; //开总中断
90 1 UART_INIT(); //串口初始化
91 1 while(1) //无线循环
92 1 {
93 2 if(REND)
94 2 {
95 3 REND=0;
96 3 r++;
97 3 //but[r++&0x0f]=RBUF;
98 3 dat=RBUF;
99 3 }
100 2 if(TEND)
101 2 {
102 3 if(t!=r)
103 3 {
104 4 TEND=0;
105 4 // TBUF=dat;
106 4 switch(dat) //接收数据判断
107 4 {
108 5 uchar k;
109 5 k=10;
110 5 case 'A': P33=1;delay(k);TBUF = dat;dat=0xee;break; // 开,并返回数据值
111 5 case 'B': P33=0;delay(k);TBUF = dat;dat=0xee;break; // 关,并返回数据值
112 5 case 'C': if(P33==1){TBUF = 'A';}if(P33==0){TBUF = 'B';}delay(k);dat=0xee;break; // 读输出口状态,并返
-回数据值
113 5 case 'D': P33=!P33;delay(k);TBUF = dat;dat=0xee;break; // 输出口取反
114 5 default:break; // 跳出
115 5 }
116 4 t++;
C51 COMPILER V8.05a WWW_OURHC_CN 06/11/2012 15:19:05 PAGE 3
117 4 //TBUF=but[t++&0x0f];
118 4 TING=1;
119 4 }
120 3 }
121 2 }
122 1 }
123
124 /********************************************************************
125 定时器T0
126 *********************************************************************/
127 void tm0()interrupt 1 using 1
128 {
129 1 if(RING)
130 1 {
131 2 if(--RCNT==0)
132 2 {
133 3 RCNT=3;
134 3 if(--RBIT==0)
135 3 {
136 4 RBUF=RDAT;
137 4 RING=0;
138 4 REND=1;
139 4 }
140 3 else
141 3 {
142 4 RDAT>>=1;
143 4 if(RXB)RDAT|=0X80;
144 4 }
145 3
146 3 }
147 2 }
148 1 else if(!RXB)
149 1 {
150 2 RING=1;
151 2 RCNT=4;
152 2 RBIT=9;
153 2 }
154 1 if(--TCNT==0)
155 1 {
156 2 TCNT=3;
157 2 if(TING)
158 2 {
159 3 if(TBIT==0)
160 3 {
161 4 TXB=0;
162 4 TDAT=TBUF;
163 4 TBIT=9;
164 4 }
165 3 else
166 3 {
167 4 TDAT>>=1;
168 4 if(--TBIT==0)
169 4 {
170 5 TXB=1;
171 5 TING=0;
172 5 TEND=1;
173 5 }
174 4 else
175 4 {
176 5 TXB=CY;
177 5 }
178 4 }
C51 COMPILER V8.05a WWW_OURHC_CN 06/11/2012 15:19:05 PAGE 4
179 3 }
180 2 }
181 1 }
182 /********************************************************************
183 功能:串口初始化,波特率9600,方式1
184 *********************************************************************/
185 void UART_INIT()
186 {
187 1 TING=0;
188 1 RING=0;
189 1
190 1 TEND=1;
191 1 REND=0;
192 1
193 1 TCNT=0;
194 1 RCNT=0;
195 1 }
196
197 /********************************************************************
198 结束
199 *********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 286 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 35 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 + -