📄 anayserial.lst
字号:
C51 COMPILER V7.09 ANAYSERIAL 07/20/2007 11:22:34 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE ANAYSERIAL
OBJECT MODULE PLACED IN D:\01工作\云星宇~1\软件调试\终稿\通讯程序\ANAYSERIAL.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\01工作\云星宇~1\软件调试\终稿\通讯程序\ANAYSERIAL.C DB SB OE
line level source
1 /**************************************************************/
2 /**文件名:anayserial.c **/
3 /** **/
4 /**文件描述: 通过RS232接收上位机的数据,对该数据进行分析; **/
5 /** 显示相应的内容,发出相应的语音. **/
6 /** 数据类型分为:机器内码形式,点阵形式,固定语句形式 **/
7 /** **/
8 /**创建人: 陈芸 时间: 2007年07月17日 **/
9 /** **/
10 /**版本号: 01 **/
11 /**修改记录 **/
12 /**************************************************************/
13
14 #include<reg52.h>
15 #include<absacc.h>
16 #include<def_pin.h>
17 #include<def_para.h>
18 #include<def_code.h>
19
20 void WDFeed(void);
21 void Tx(void);
22 void rom2ram_hanzi(uchr x,ulng y);
23 void rom2ram_ascii(uchr x,uchr y);
24
25 void main(void)
26 {
27 1 uchr cnt_zi=0,tmpi=0,tmpq=0,tmpw=0,tp=0,tmp=0;
28 1 uint i=0;
29 1 ulng tmpoffset=0;
30 1 uchr style=0,length_h=0,length_l=0,chk=0,length_s=0;
31 1 uint length_d=0;
32 1 bit f_over=0;
33 1
34 1 //片内扩展DATA设置
35 1 CHPENR=0x87;
36 1 CHPENR=0x59;
37 1 CHPCON=0x00; //CHPCON|=0x10;//片内外部存储器写允许 //CHPCON=0x00; ----则片内外部存储器写禁止
38 1 //串口初始化
39 1 TMOD=0x21; //定时器0,方式1;定时器1,方式2
40 1 TH1=0X0fd;
41 1 TL1=0x0fd;
42 1 PCON=0x00;
43 1 SCON=0x50;
44 1
45 1 //定时器初始化
46 1 TH0=0xfc;//定时1ms
47 1 TL0=0x66;
48 1 //外部中断初始化
49 1 IT0=1;
50 1 //设置中断优先级
51 1 PS=1;
52 1 PX0=1;
53 1 PT0=1;
54 1 //开中断
55 1 EA=1;
C51 COMPILER V7.09 ANAYSERIAL 07/20/2007 11:22:34 PAGE 2
56 1 ES=1;
57 1 ET0=1;
58 1 ET1=1;
59 1 EX0=1;
60 1 TR1=1;
61 1 TR0=1;
62 1
63 1 pin_wrram=1;
64 1 pin_full=1;
65 1 while(1)
66 1 {
67 2 WDFeed();
68 2 if(f_delaywr==1)
69 2 {
70 3 f_delaywr=0;
71 3 //硬件写置1
72 3 pin_wrram=1;
73 3 if(f_normdisp==1)
74 3 {
75 4 f_normdisp=0;
76 4 cnt_zi=0;
77 4 tmpi=0;
78 4 for(i=0;i<lengthnorm;i++)
79 4 {
80 5 tp=codebuff[i];
81 5 if(tp>0x80) //汉字
82 5 {
83 6 tmpi++;
84 6 cnt_zi++;
85 6 if(tmpi==2)
86 6 {
87 7 tmpi=0;
88 7 tmpq=codebuff[i-1]-0xa0;
89 7 tmpw=codebuff[i]-0xa0;
90 7 tmpoffset=(ulng)((tmpq-1)*94+(tmpw-1))*32;
91 7 WDFeed();
92 7 CHPCON=0x00;
93 7 rom2ram_hanzi(cnt_zi,tmpoffset);
94 7 }
95 6 }
96 5 else //ASCII 码
97 5 {
98 6 if(tmpi!=0)
99 6 {
100 7 tmpi=0;
101 7 break;
102 7 }
103 6 else
104 6 {
105 7 cnt_zi++;
106 7 WDFeed();
107 7 //分析ASCii码
108 7 CHPCON=0x00;
109 7 tp=codebuff[i];
110 7 rom2ram_ascii(cnt_zi,tp);
111 7 }
112 6 }
113 5 }
114 4
115 4 }
116 3 if(f_leddisp==1)
117 3 {
C51 COMPILER V7.09 ANAYSERIAL 07/20/2007 11:22:34 PAGE 3
118 4 f_leddisp=0;
119 4 if(f_over==1)
120 4 {
121 5 for(i=0;i<128;i++)
122 5 {
123 6 CHPCON=0x00;
124 6 ram_ce=0;
125 6 nDispRam[i]=rxbuff[i];
126 6 ram_ce=1;
127 6 }
128 5 for(i=0;i<(length_d-128);i++)
129 5 {
130 6 CHPCON|=0x10;
131 6 tmpi=rxbuff2[i];
132 6 CHPCON=0x00;
133 6 ram_ce=0;
134 6 nDispRam[128+i]=tmpi;
135 6 ram_ce=1;
136 6 }
137 5 for(i=0;i<(lengthled-length_d);i++)
138 5 {
139 6 ram_ce=0;
140 6 nDispRam[length_d+i]=0;
141 6 ram_ce=1;
142 6 }
143 5 }
144 4 else
145 4 {
146 5 for(i=0;i<length_d;i++)
147 5 {
148 6 ram_ce=0;
149 6 nDispRam[i]=rxbuff[i];
150 6 ram_ce=1;
151 6 }
152 5 for(i=0;i<(lengthled-length_d);i++)
153 5 {
154 6 ram_ce=0;
155 6 nDispRam[i+length_d]=0;
156 6 ram_ce=1;
157 6 }
158 5 }
159 4 }
160 3 f_fixdisp=0;
161 3 f_normdisp=0;
162 3 f_leddisp=0;
163 3 f_wrramover=1;
164 3 pin_wrram=0;
165 3 }
166 2 if(f_anayrx==1) //接收完数据后,对所接收的数据进行分析
167 2 {
168 3 f_anayrx=0;
169 3 f_over=f_over128;
170 3 length_d=lengthdisp;
171 3 length_s=lengthsound;
172 3 style=dispstyle;
173 3 length_h=displength_h;
174 3 length_l=displength_l;
175 3 chk=rx_check;
176 3 check=0;
177 3 check^=style;
178 3 check^=length_h;
179 3 check^=length_l;
C51 COMPILER V7.09 ANAYSERIAL 07/20/2007 11:22:34 PAGE 4
180 3 if(f_over==1)
181 3 {
182 4 for(i=0;i<128;i++)
183 4 {
184 5 check^=rxbuff[i];
185 5 }
186 4 for(i=0;i<(length_d-127);i++)
187 4 {
188 5 check^=rxbuff2[i];
189 5 }
190 4 }
191 3 else
192 3 {
193 4 for(i=0;i<length_d;i++)
194 4 {
195 5 check^=rxbuff[i];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -