📄 cm160128.lst
字号:
C51 COMPILER V7.06 CM160128 03/08/2008 16:45:23 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE CM160128
OBJECT MODULE PLACED IN CM160128.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CM160128.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <intrins.h>
3 #include <absacc.h>
4 #include <math.h>
5 #include <stdio.h>
6 #include <string.h>
7 #include "character.h"
8 /* 地址定义 */
9 #define d_add XBYTE[0x8000]
10 #define c_add XBYTE[0x8100]
11 /* 常数定义 */
12 //#define para1 0x20;
13 unsigned char code para1 = 0x20;
14 #define uchar unsigned char
15 #define uint unsigned int
16 unsigned char data dat1 = 0x30; //LCD显示用变量
17 unsigned char data dat2 = 0x31;
18 unsigned char data com = 0x32;
19 unsigned char data code_1 = 0x33;
20 unsigned char data attr = 0x34;
21 unsigned char data O_Y = 0x35;
22 unsigned char data O_X = 0x36;
23 //-------------register------------------------
24 sbit P1_0 = P1^0;
25 sbit P1_1 = P1^1;
26 sbit ACC0 = ACC^0;
27 sbit ACC1 = ACC^1;
28 /* 定义标志位 */
29 sbit Acc_0=ACC^0;
30 sbit Acc_1=ACC^1;
31 sbit Acc_2=ACC^2;
32 sbit Acc_3=ACC^3;
33 uchar num=0;
34 bit s=0;
35 bit bStart = 0;//开机测试位
36 uchar x=0;
37 uchar y=0;
38 char code RATE = -123;
39 unsigned char data STR6[6]={0,0,0,0,0,0};
40 unsigned int unVolt;
41 int intTestVolt[2] = {0,100};
42 unsigned char countVolt = 0;
43 unsigned char countSuccess = 0;
44 //parameters, used in SCOM
45 int intSmpVal = 0x0800; //模数转换值
46 unsigned char ucMW2 = 1; //放大倍数
47 unsigned char ucSmpT = 1;//采样时间
48 unsigned char ucVolt = 0;//负高压
49 int intTmpSmpVal = 0x0800;//临时存储模数转换值
50 unsigned char ucTmpVolt = 0;//临时保存负高压
51 unsigned int unLCDRefresh = 0;//液晶屏刷新
52 bit bUpdateSV1 = 0;//接收采样值低4位成功标记位
53 bit bUpdateSV2 = 0;//接收采样值中间4位成功标记位
54 bit bUpdateSV = 0; //接收采样值成功标记位
55 bit bUpdateMW = 0; //接收量程成功标记位
C51 COMPILER V7.06 CM160128 03/08/2008 16:45:23 PAGE 2
56 bit bUpdateSmpT = 0;//接收采样时间成功标记位
57 bit bUpdateVolt1 = 0;//接收负高压低4位成功标记位
58 bit bUpdateVolt = 0; //接收负高压成功标记位
59 //-------------------------------------------------------------------
60 //void delay_ms();
61 void INIT_1();//液晶初始化函数
62 void CLEAR();//LCD清屏函数
63 void CGRAM();//在LCD中建立字符库函数
64 void CCW2_PR();//写16*16字符函数
65 void CCW3_PR();//写24*48字符函数
66 void CW2_PR();
67 void PR1();
68 void PR11();
69 void PR12();
70 void ST01();
71 void ST3();
72 void DISHAZIT(uchar x,uchar y,uchar d);
73 void DISHAZIT2(uchar x,uchar y,uchar d);
74 void DISDASC(uchar x,uchar y,uchar d);
75 void delay_ms(int ms);
76 //--------------------------------------------
77 /**************************/
78 /* 初始化函数 */
79 /**************************/
80 INT_1()
81 {
82 1 dat1=0x00; /*设文本显示区域首地址*/
83 1 dat2=0x00;
84 1 com=0x40;
85 1 PR1();
86 1
87 1 dat1=para1; /*设文本显示区域宽度*/
88 1 dat2=0x00;
89 1 com=0x41;
90 1 PR1();
91 1
92 1 dat1=0x00; /*设图形显示区域首地址*/
93 1 dat2=0x08;
94 1 com=0x42;
95 1 PR1();
96 1 dat1=para1; /*设图形显示区域宽度*/
97 1 dat2=0x00;
98 1 com=0x43;
99 1 PR1();
100 1
101 1 com=0xa0; /*光标形状设置*/
102 1 PR12();
103 1
104 1 com=0x80; /*显示方式设置逻辑"或"合成*/
105 1 PR12();
106 1
107 1 com=0x9c; /*显示开关设置 开文本和图形显示*/
108 1 PR12();
109 1 }
110 /***************************/
111 /* 清显示子程序 */
112 /***************************/
113 void CLEAR()
114 {
115 1 unsigned char i,j;
116 1 dat1=0x00;
117 1 dat2=0x00;
C51 COMPILER V7.06 CM160128 03/08/2008 16:45:23 PAGE 3
118 1 com=0x24;
119 1 PR1();
120 1 com=0xb0;
121 1 PR12();
122 1 for(i=0;i<205;i++)
123 1 {
124 2 for(j=0;j<=40;j++)
125 2 {
126 3 ST3();
127 3 d_add=0x00;
128 3 }
129 2 }
130 1 com=0xb2;
131 1 PR12();
132 1 }/**************************/
133 /* CGRAM函数 */
134 /**************************/
135 void CGRAM()
136 {
137 1 unsigned int i;
138 1
139 1 dat1=0x03;
140 1 dat2=0x00;
141 1 com=0x22; /* 设置CGRAM偏置地址 */
142 1 PR1();
143 1 dat1=0x00;
144 1 dat2=0x1c;
145 1 com=0x24; /* 设置存储器地址指针 */
146 1 PR1();
147 1 com=0xb0; /* 设置自动写方式 */
148 1 PR12();
149 1 for(i=0;i<320;i++)
150 1 {
151 2 ST3();
152 2 d_add=CGTAB[i];
153 2 }
154 1 com=0xb2; /* 设置自动写结束方式 */
155 1 PR12();
156 1 }
157
158 /********************************/
159 /* 汉字写入(文本方式)函数 */
160 /********************************/
161 CCWD_PR() /* */
162 {
163 1 unsigned int i,j;
164 1
165 1 i=para1;
166 1 j=i*O_Y+O_X;
167 1
168 1 dat1=j%256;
169 1 dat2=j/256;
170 1 com=0x24; /* 设置显示地址 */
171 1 PR1();
172 1 dat2=code_1; /* 写入左上半部汉字代码 */
173 1 com=0xc0;
174 1 PR11();
175 1
176 1 j=j+i;
177 1 dat1=j%256; /* 显示RAM地址修正 */
178 1 dat2=j/256;
179 1 com=0x24;
C51 COMPILER V7.06 CM160128 03/08/2008 16:45:23 PAGE 4
180 1 PR1();
181 1
182 1 dat2=code_1+0x01; /* 写入左下半部汉字代码 */
183 1 com=0xc0;
184 1 PR11();
185 1 }
186
187 void CCW2_PR()
188 {
189 1 unsigned int i,j,count1;
190 1
191 1 i=para1;
192 1 j=i*O_Y+O_X+0x0800;
193 1 for(count1=0;count1<16;count1++)
194 1 {
195 2 dat1=j%256;
196 2 dat2=j/256;
197 2 com=0x24;
198 2 PR1();
199 2
200 2 dat2=CCTAB[code_1][count1]; /* 写入汉字左侧代码 */
201 2 com=0xc0;
202 2 PR11();
203 2
204 2 dat2=CCTAB[code_1][count1+16]; /* 写入汉字右侧代码 */
205 2 PR11();
206 2 j=j+i;
207 2 }
208 1 }
209 void CCW3_PR()//写24*48字符函数(显示采样值)
210 {
211 1 unsigned int i,j,count1;
212 1
213 1 i=para1;
214 1 j=i*O_Y+O_X+0x0800;
215 1 for(count1=0;count1<48;count1++)
216 1 {
217 2 dat1=j%256;
218 2 dat2=j/256;
219 2 com=0x24;
220 2 PR1();
221 2
222 2 dat2=CCTAB2[code_1][count1]; /* 写入汉字左侧代码 */
223 2 com=0xc0;
224 2 PR11();
225 2 dat2=CCTAB2[code_1][count1+48]; /* 写入汉字中间代码 */
226 2 PR11();
227 2 dat2=CCTAB2[code_1][count1+96]; /* 写入汉字右侧代码 */
228 2 PR11();
229 2 j=j+i;
230 2 }
231 1 }
232 void CCW4_PR()//写160*128字符函数
233 {
234 1 unsigned int i,j,count1;
235 1 unsigned char h = 0;
236 1 i=para1;
237 1 j=i*O_Y+O_X+0x0800;
238 1 for(count1=0;count1<128;count1++)
239 1 {
240 2 dat1=j%256;
241 2 dat2=j/256;
C51 COMPILER V7.06 CM160128 03/08/2008 16:45:23 PAGE 5
242 2 com=0x24;
243 2 PR1();
244 2
245 2 dat2=welcome[code_1][count1];
246 2 com=0xc0;
247 2 PR11();
248 2
249 2 for(h = 1; h < 20; h++)
250 2 {
251 3 dat2=welcome[code_1][count1+128*h];
252 3 PR11();
253 3 }
254 2 j=j+i;
255 2 }
256 1 }
257
258 /****************************/
259 /* 写指令和写数据函数 */
260 /****************************/
261 void PR1() /* 双字节参数指令写入入口 */
262 {
263 1 ST01();
264 1 d_add=dat1; /* 取第一参数单元数据 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -