📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 12/06/2005 13:07:29 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include "absacc.h"
3 #include <math.h>
4 #include<intrins.h>
5 #define mode 0x9b
6 #include "ziku.h"
7 #define uchar unsigned char
8 #define uint unsigned int
9 #define AP 0x2a
10 #define LENGTH 250 //波形区域宽度
11 #define WIDTH 200 //波形区域高度
12 sbit a0=P2^0;
13 xdata unsigned char PortA _at_ 0xc000;
14 xdata unsigned char PortB _at_ 0xc001;
15 xdata unsigned char PortC _at_ 0xc002;
16 xdata unsigned char CAddr _at_ 0xc003;
17 //sbit cs=P1^3;
18 sbit cs1=P2^5;
19 sbit cs2=P2^6;
20 sbit cs3=P2^7;
21 sbit rst=P1^4;
22 sbit wr=P3^6;
23 sbit rd=P3^7;
24 sbit alarm=P1^0;
25 /*****************************/
26 unsigned char bdata d[3];
27 uchar code sys[8]={0x30,0x87,0x07,0x27,0x7a,0xef,0x2a,0}; /*P1-P8*/
28 uchar code scr[10]={0,0,0xef,0x00,0x28,0xef,0x00,0x50,0,0}; /*P1-P10*/
29 uchar code arr[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
30 uchar gprsflag=0;
31 uchar code at1[3]={'A','T',0X0D};
32 uchar code at2[10]={'A','T','+','C','M','G','F','=','1',0x0d};
33 uchar code at3[22]={'A','T','+','C','M','G','S','=','"','1','3',
34 '0','1','3','7','0','8','0','5','1','"',0x0d};
35 uchar code at4[14]={'w','a','t','e','r',' ','w','a','r','n','i','n','g','!'};
36 uchar yangda[3];
37 //函数定义
38 void outcode(uchar code_data);
39 void outdata(uchar data_data);
40 uchar indata(void);
41 void turnoff(void);
42 void turnon(void);
43 void initram(void);
44 void init(void);
45 void fixline(int y);
46 void fixline2(int x);
47 void WriteD(uchar x,uchar y);
48 void delay(uchar di);
49 void showchinese32(int addr,uchar *chin);
50 void drawtable();
51 void shownumber(int addr,uchar number);
52 void shownumber16(int addr,uchar number);
53 void warn0(uchar canghao[4],j);
54 void count(uchar canghao[],uchar*p);
55 void countgprs(uchar yangda[3],uchar canghao[],uchar*p);
C51 COMPILER V7.06 MAIN 12/06/2005 13:07:29 PAGE 2
56 void sendnum(void);
57 void xszc() ;
58 void warn3(uchar canghao[],uchar j);
59 void kaiji();
60 void outcode(uchar code_data)//输出指令代码
61 {// cs=0;
62 1 cs1=1;
63 1 cs2=0;
64 1 cs3=1;
65 1 a0=1;
66 1 rd=1;
67 1 P0=code_data;
68 1 wr=0;
69 1 wr=1;
70 1 //cs=1;
71 1 cs1=0;
72 1 cs2=0;
73 1 cs3=1;
74 1 }
75
76 void outdata(uchar data_data){//输出指令参数
77 1 a0=0;
78 1 // cs=0;
79 1 cs1=1;
80 1 cs2=0;
81 1 cs3=1 ;
82 1 P0=data_data;
83 1 wr=0;
84 1 wr=1;
85 1 //cs=1;
86 1 cs1=0;
87 1 cs2=0;
88 1 cs3=1;
89 1 }
90
91 uchar indata(void){//输出指令参数
92 1 uchar data_data;
93 1 a0=1;
94 1 // cs=0;
95 1 cs1=1;
96 1 cs2=0;
97 1 cs3=1 ;
98 1 P0=0xff;
99 1 wr=1;
100 1 rd=0;
101 1 data_data=P0;
102 1 rd=1;
103 1 // cs=1;
104 1 cs1=0;
105 1 cs2=0;
106 1 cs3=1;
107 1 return data_data;
108 1 }
109
110 void delay(uint di) //延时子程序
111 { uint k;
*** WARNING C235 IN LINE 111 OF MAIN.C: parameter 1: different types
112 1 for(;di!=0;di--)
113 1 {
114 2 for(k=0;k<1000;k++);
115 2 }
116 1 }
C51 COMPILER V7.06 MAIN 12/06/2005 13:07:29 PAGE 3
117
118 void WriteD(uchar x,uchar y) //write a dot on the 1nd layer
119 {
120 1 unsigned int address;
121 1 uchar addh,addl;
122 1 uchar m=0,n;
123 1 address=0x01f9+x/8+y*AP;
124 1 addh=address/256;
125 1 addl=address%256;
126 1 n=x%8;
127 1 outcode(0x46);
128 1 outdata(addl);
129 1 outdata(addh);
130 1 outcode(0x43);
131 1 m=indata();
132 1 m=m|arr[n];
133 1 outcode(0x46);
134 1 outdata(addl);
135 1 outdata(addh);
136 1 outcode(0x42);
137 1 outdata(m);
138 1 }
139
140 void turnoff(void){
141 1 outcode(0x58);//off screen
142 1 outdata(0x00);
143 1 }
144
145 void turnon(void){
146 1 outcode(0x59);//on screen
147 1 outdata(0x55);
148 1 }
149
150 void initram(void){//显示存储器清零
151 1 unsigned int i;
152 1 outcode(0x4c);
153 1 outcode(0x46);
154 1 outdata(0x00);
155 1 outdata(0x00);
156 1 outcode(0x42);//clear screen memory
157 1 for(i=0;i<=0x7800;i++){outdata(0x00);}//32767
158 1 }
159
160 void init(void){//初始化程序
161 1 int n;
162 1 outcode(0x40); /*SYSTEM SET 指令代码*/
163 1 for(n=0;n<8;n++)outdata(sys[n]); /*将参数P1-P8 写入*/
164 1 outcode(0x44); /*SCROLL 指令代码*/
165 1 for(n=0;n<10;n++)outdata(scr[n]); /*将参数P1-P10 写入*/
166 1 outcode(0x5a); /*HDOT SCR——P1 清零复位*/
167 1 outdata(0);
168 1 outcode(0x5b); /*OVLAY—*/
169 1 outdata(0x1c);
170 1 }
171
172 void fixline(int y) //在第二层画水平直线 0-240)
173 {
174 1 unsigned int address;
175 1 uchar addh,addl;
176 1 uchar i;
177 1 address=y;
178 1 addh=address/256;
C51 COMPILER V7.06 MAIN 12/06/2005 13:07:29 PAGE 4
179 1 addl=address%256;
180 1 outcode(0x46);
181 1 outdata(addl);
182 1 outdata(addh);
183 1 outcode(0x4c);
184 1 outcode(0x42);
185 1 outdata(0x1f);
186 1 for(i=0;i<39;i++)outdata(0xff);
187 1 }
188
189 void fixline2(int x) //x(1-40)
190 {
191 1 unsigned int address;
192 1 uchar addh,addl;
193 1 uchar i;
194 1 address=x;
195 1 for(i=0;i<160;i++)
196 1 { addh=address/256;
197 2 addl=address%256;
198 2 outcode(0x46);
199 2 outdata(addl);
200 2 outdata(addh);
201 2 outcode(0x4c);
202 2 outcode(0x42);
203 2 outdata(0x18);
204 2 address+=42;
205 2
206 2 }
207 1 }
208
209 void initall(void){ //初始化
210 1 turnoff();
211 1 init();
212 1 turnon();
213 1 initram();
214 1 }
215
216 void showchinese32(int addr,uchar *chin)
217 //功能:在x,y位置处,显示字符码为chin
218 //x坐标寄存器(字节),y坐标寄存器(点行)
219 {
220 1 int temp1;
221 1
222 1 uchar hi,lo,*temp2;
223 1 uchar b,c=0;
224 1 //d=y;
225 1 temp2=chin;
226 1 temp1=addr;
227 1 outcode(0x4c);
228 1 for(b=0;b<32;b++){
229 2 //0x51f9,5218,2a18
230 2 hi=temp1/256;
231 2 lo=temp1%256;
232 2 outcode(0x46);
233 2 outdata(lo);
234 2 outdata(hi);
235 2 outcode(0x42);
236 2 outdata(temp2[c++]);
237 2 outdata(temp2[c++]);
238 2 outdata(temp2[c++]);
239 2 outdata(temp2[c++]);
240 2 temp1+=AP;// d=d+1;
C51 COMPILER V7.06 MAIN 12/06/2005 13:07:29 PAGE 5
241 2 }
242 1 }
243
244
245 void shownumber(int addr,uchar number)
246 //功能:在x,y位置处,显示字符码为chin
247 //x坐标寄存器(字节),y坐标寄存器(点行)
248 {
249 1 int temp1;
250 1
251 1 uchar hi,lo;
252 1 uchar b;
253 1 //d=y;
254 1 temp1=addr;
255 1 outcode(0x4c);
256 1 for(b=0;b<16;b++){
257 2 //0x51f9,5218,2a18
258 2 hi=temp1/256;
259 2 lo=temp1%256;
260 2 outcode(0x46);
261 2 outdata(lo);
262 2 outdata(hi);
263 2 outcode(0x42);
264 2 outdata(num[16*number+b]);
265 2
266 2 temp1+=AP;// d=d+1;
267 2 }
268 1 }
269
270 void shownumber16(int addr,uchar number16)
271 //功能:在x,y位置处,显示字符码为chin
272 //x坐标寄存器(字节),y坐标寄存器(点行)
273 {
274 1 int temp1,c=0;
275 1
276 1 uchar hi,lo;
277 1 uchar b;
278 1 //d=y;
279 1 c=64*number16;
280 1 temp1=addr;
281 1 outcode(0x4c);
282 1 for(b=0;b<32;b++){
283 2 //0x51f9,5218,2a18
284 2 hi=temp1/256;
285 2 lo=temp1%256;
286 2 outcode(0x46);
287 2 outdata(lo);
288 2 outdata(hi);
289 2 outcode(0x42);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -