📄 8123.lst
字号:
C51 COMPILER V7.09 8123 08/01/2008 01:08:03 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE 8123
OBJECT MODULE PLACED IN 8123.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 8123.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #define DELAY_TIME 30000 //Delay time
3 /**********************I/O 定义***********************/
4 sbit MS=P1^0;
5 sbit STADD0=P1^1;
6 sbit STADD1=P1^2;
7 sbit SRADD0=P1^3;
8 sbit SRADD1=P1^4;
9 sbit RESET=P1^5;
10 sbit TXE=P1^6;
11 sbit LED=P1^7;
12 /******************数据变量定义*****************/
13 unsigned char ReceiveBuff0=0;
14 unsigned char ReceiveBuff1=0;
15 unsigned char ReceiveBuff2=0;
16 unsigned char ReceiveBuff3=0;
17 unsigned char Contr_data;
18 unsigned char i=0;
19 /*********************************************/
20 /*函数名称:delay.C */
21 /*函数功能: 延时程序 */
22 /*********************************************/
23 void delay(unsigned int m)
24 {
25 1 unsigned int n;
26 1 n=0;
27 1 while(n < m)
28 1 {n++;}
29 1 return;
30 1 }
31 /*********************************************/
32 /*函数名称:send0.c */
33 /*函数功能: 选择0口地址 */
34 /*********************************************/
35 void send0()
36 {
37 1 STADD1=0;
38 1 STADD0=0;
39 1 }
40 /*********************************************/
41 /*函数名称:send1.c */
42 /*函数功能: 选择1口地址 */
43 /*********************************************/
44 void send1()
45 {
46 1 STADD1=0;
47 1 STADD0=1;
48 1 }
49 /*********************************************/
50 /*函数名称:send2.c */
51 /*函数功能: 选择2口地址 */
52 /*********************************************/
53 void send2()
54 {
55 1 STADD1=1;
C51 COMPILER V7.09 8123 08/01/2008 01:08:03 PAGE 2
56 1 STADD0=0;
57 1 }
58 /*********************************************/
59 /*函数名称:send3.c */
60 /*函数功能: 选择3口地址 */
61 /*********************************************/
62 void send3()
63 {
64 1 STADD1=1;
65 1 STADD0=1;
66 1 }
67
68 /*********************************************/
69 /*函数名称:send1_data.c */
70 /*函数功能:1口发射数据
71 /*********************************************/
72 void send1_data()
73 {
74 1 send1();
75 1 SBUF=ReceiveBuff1;
76 1 while(TI==0);
77 1 TI=0;
78 1 }
79 /*********************************************/
80 /*函数名称:send2_data.c */
81 /*函数功能:2口发射数据
82 /*********************************************/
83 void send2_data()
84 {
85 1 send2();
86 1 SBUF=ReceiveBuff2;
87 1 while(TI==0);
88 1 TI=0;
89 1 }
90 /*********************************************/
91 /*函数名称:send3_data.c */
92 /*函数功能:3口发射数据
93 /*********************************************/
94 void send3_data()
95 {
96 1 send3();
97 1 SBUF=ReceiveBuff3;
98 1 while(TI==0);
99 1 TI=0;
100 1 }
101 /******************************************************/
102 /*函数名称: MAIN.C */
103 /*函数功能: 主机主程序 */
104 /*********************************************/
105 void main(void)
106 {
107 1
108 1 TMOD = 0x20; //指定定时器1 工作在方式2
109 1 IE = 0x90; //开串行口中断
110 1 SCON=0xc0; //串行口工作在方式3
111 1 TH1 = 0xFA; //装入定时器1 初值,设置主机工作波特率为4800bps
112 1 TL1 = 0xFA;
113 1 PCON=0x00;
114 1 RESET=0; //对GM8125 进行复位操作
115 1 RESET=1;
116 1 delay(DELAY_TIME);
117 1 Contr_data=0xf3; //装入命令字初值
C51 COMPILER V7.09 8123 08/01/2008 01:08:03 PAGE 3
118 1 TR1=1; //启动定时器1
119 1 MS=0; //GM8125 工作在写命令字模式下
120 1 send0(); //置GM8125 命令字地址
121 1 SBUF=Contr_data; //设置GM8125 子串口波特率为1200bps,母串口波特率为4800bps
122 1 while(TI==0);
123 1 TI=0;
124 1 delay(DELAY_TIME);
125 1 REN=1;
126 1 MS=1; //读命令字
127 1 delay(DELAY_TIME);
128 1
129 1 while (ReceiveBuff0!=Contr_data) //验证写入的命令字是否正确,不正确则重新写
130 1 {
131 2 MS=0; //GM8125 工作在写命令字工作模式下
132 2 SBUF=Contr_data;
133 2 while(TI==0);
134 2 TI=0;
135 2 delay(DELAY_TIME);
136 2 REN=1;
137 2 MS=1; //读命令字
138 2 delay(DELAY_TIME);
139 2 LED=!LED;
140 2 }
141 1
142 1 REN=0;
143 1 MS=0; //设置GM8125 工作在多通道工作模式下
144 1 TR1=0; //定时器1 停止
145 1 TH1 = 0xFA; //装入定时器1 初值,设置主控MCU 工作波特率为115200bps
146 1 TL1 = 0xFA;
147 1 PCON=0x00;
148 1 TR1=1; //启动定时器1
149 1 //主控MCU 发送/接收程序
150 1 REN=1;
151 1
152 1
153 1 ReceiveBuff1=0x01;
154 1 ReceiveBuff2=0x02;
155 1 ReceiveBuff3=0x03;
156 1
157 1
158 1
159 1
160 1
161 1
162 1
163 1 while(1)
164 1 {
165 2
166 2 send1_data();
167 2 delay(DELAY_TIME);
168 2
169 2 send2_data();
170 2 delay(DELAY_TIME);
171 2
172 2
173 2 send3_data();
174 2 delay(DELAY_TIME);
175 2 }
176 1
177 1
178 1 }
179
C51 COMPILER V7.09 8123 08/01/2008 01:08:03 PAGE 4
180 void CommReceive(void) interrupt 4
181 {
182 1 int i;
183 1 if(RI)
184 1 {
185 2 for(i=0;i<1;i++)
186 2 {
187 3 if(SRADD1==0&&SRADD0==0)
188 3 {
189 4 ReceiveBuff0=SBUF; //读命令字存入ReceiveBuff0
190 4 break;
191 4 }
192 3 if(SRADD1==0&&SRADD0==1)
193 3 {
194 4 ReceiveBuff1=SBUF; //读命令字存入ReceiveBuff0
195 4 break;
196 4 }
197 3 if(SRADD1==1&&SRADD0==0)
198 3 {
199 4 ReceiveBuff2=SBUF; //读命令字存入ReceiveBuff0
200 4 break;
201 4 }
202 3 if(SRADD1==1&&SRADD0==1)
203 3 {
204 4 ReceiveBuff3=SBUF; //读命令字存入ReceiveBuff0
205 4 break;
206 4 }
207 3 }
208 2 RI=0;
209 2 }
210 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 290 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
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 + -