📄 www.ourhc.cn.lst
字号:
C51 COMPILER V8.05a WWW_OURHC_CN 06/03/2012 16:07:52 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 实现功能:STC12C5A60S2串口2演示程序9位数据
5 使用芯片:STC12C5A60S2
6 晶振:11.0592MHZ
7 波特率:115200
8 编译环境:Keil
9 作者:zhangxinchun
10 网站:www.ourhc.cn
11 淘宝店:
12 汇诚科技 http://ourhc.taobao.com
13 郑兴电子直销部 http://shop68451856.taobao.com
14 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
15
16 功能 :STC12C5A60S2串口2演示程序9位数据
17 注意 :下载完程序后请复位系统!!(切记!)
18 *********************************************************************/
19 #include "reg52.h"
20
21 #define FOSC 18432000L
22 #define BAUD 115200
23
24 #define NONE_PARITY 0 //无校验位
25 #define ODD_PARITY 1 //奇校验
26 #define EVEN_PARITY 2 //偶校验
27 #define MARK_PARITY 3 //标记校验
28 #define SPACE_PARITY 4 //空校验
29
30 #define PARITYBIT EVEN_PARITY
31
32 #define S2RI 0x01
33 #define S2TI 0x02
34 #define S2RB8 0x04
35 #define S2TB8 0x08
36
37 sfr AUXR = 0x8e;
38 sfr S2CON = 0x9a;
39 sfr S2BUF = 0x9b;
40 sfr BRT = 0x9c;
41 sfr IE2 = 0xaf;
42
43 bit busy;
44
45 void SendData(char dat);
46 void SendString(char *s);
47
48 void main()
49 {
50 1 #if (PARITYBIT == NONE_PARITY)
S2CON = 0x5a; //8位可变波特率 (无校验位)
#elif (PARITYBIT == ODD_PARITY) || (PARITYBIT == EVEN_PARITY) || (PARITYBIT == MARK_PARITY)
53 1 S2CON = 0xda; //9位可变波特率,校验位初始为1
54 1 #elif (PARITYBIT == SPACE_PARITY)
S2CON = 0xd5; //9位可变波特率,校验位初始为0
C51 COMPILER V8.05a WWW_OURHC_CN 06/03/2012 16:07:52 PAGE 2
#endif
57 1
58 1 BRT = -(FOSC/32/BAUD); //设置独立波特率发生器的重载初值
59 1 AUXR = 0x14; //独立波特率发生器工作在1T模式
60 1 IE2 = 0x01; //使能串口2中断
61 1 EA = 1; //开总中断
62 1
63 1 SendString("STC12C5A60S2\r\nUart2 Test !\r\n");
64 1 while(1);
65 1 }
66
67 void Uart2() interrupt 8 using 1
68 {
69 1 if (S2CON & S2RI)
70 1 {
71 2 S2CON &= ~S2RI; //清除接收完成标志
72 2 P0 = S2BUF; //P0显示串口数据
73 2 P2 = (S2CON & S2RB8); //P2.2显示校验位
74 2 }
75 1 if (S2CON & S2TI)
76 1 {
77 2 S2CON &= ~S2TI; //清除发送完成标志
78 2 busy = 0;
79 2 }
80 1 }
81
82 void SendData(char dat)
83 {
84 1 while (busy); //等待上个数据发送完成
85 1 ACC = dat; //取得偶校验位P
86 1 if (P) //根据P来设置串口数据的校验位
87 1 {
88 2 #if (PARITYBIT == ODD_PARITY)
S2CON &= ~S2TB8; //置校验位为0
#elif (PARITYBIT == EVEN_PARITY)
91 2 S2CON |= S2TB8; //置校验位为1
92 2 #endif
93 2 }
94 1 else
95 1 {
96 2 #if (PARITYBIT == ODD_PARITY)
S2CON |= S2TB8; //置校验位为1
#elif (PARITYBIT == EVEN_PARITY)
99 2 S2CON &= ~S2TB8; //置校验位为0
100 2 #endif
101 2 }
102 1 busy = 1;
103 1 S2BUF = ACC; //发送数据
104 1 }
105
106 void SendString(char *s)
107 {
108 1 while (*s) //判断字符串结束标志
109 1 {
110 2 SendData(*s++); //发送字符
111 2 }
112 1 }
113
114
115 /********************************************************************
116 结束
117 *********************************************************************/
C51 COMPILER V8.05a WWW_OURHC_CN 06/03/2012 16:07:52 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 114 ----
CONSTANT SIZE = 29 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -