graph.lst
来自「此程序实现无线信标定位」· LST 代码 · 共 243 行
LST
243 行
C51 COMPILER V7.06 GRAPH 07/07/2008 21:47:21 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE GRAPH
OBJECT MODULE PLACED IN graph.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE graph.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2
3 void loc_xy(unsigned char X,unsigned char Y);
4 void line(unsigned char pos);
5 void cls_grap(void);
6
7 void cls_grap(void);
8 extern unsigned char code line_code[16][6];
9 extern void send_i(unsigned char comm);
10 extern void send_d(unsigned char data_in);
11
12 //写GDRAM地址
13 void loc_xy(unsigned char X,unsigned char Y)
14 {
15 1 send_i(Y);
16 1 send_i(X);
17 1 }
18
19 /*画直线
20 当目标位于1、3象限时,直线斜率为45度,pos = 1, 由(0x94,0x9f)开始从下向上画
21 当目标位于2、4象限时,直线斜率为135度,pos = 0,由(0x8c,0x80)开始从上向下画
22 */
23 void line(bit pos)
24 {
25 1 unsigned char *p;
26 1 unsigned char x,y,t_x,t_y;
27 1 p = line_code;
*** WARNING C182 IN LINE 27 OF GRAPH.C: pointer to different objects
28 1 if(pos)
29 1 y = 0x9F;
30 1 else
31 1 y = 0x80;
32 1 cls_grap();
33 1 for(t_y = 0;t_y < 32;t_y ++)
34 1 {
35 2 if(t_y < 16)
36 2 {
37 3 if(!pos)
38 3 x = 0x8C;
39 3 else
40 3 x = 0x94;
41 3
42 3 loc_xy(x,y);
43 3 for(t_x = 0;t_x < 6;t_x ++)
44 3 {
45 4 send_d(*p);
46 4 p++;
47 4 }
48 3 }
49 2 else
50 2 {
51 3 if(t_y == 16)
52 3 p = line_code;
*** WARNING C182 IN LINE 52 OF GRAPH.C: pointer to different objects
53 3
C51 COMPILER V7.06 GRAPH 07/07/2008 21:47:21 PAGE 2
54 3 if(!pos)
55 3 x = 0x91;
56 3 else
57 3 x = 0x89;
58 3
59 3 loc_xy(x,y);
60 3 for(t_x = 0;t_x < 6;t_x++)
61 3 {
62 4 send_d(*p);
63 4 p++;
64 4 }
65 3 }
66 2 if(pos)
67 2 y --;
68 2 else
69 2 y ++;
70 2 }
71 1 send_i(0x30);
72 1 }
73
74 /********************扩充指令集清屏子程序********************/
75 void cls_grap()
76 {
77 1 unsigned char Disp_Page;
78 1 unsigned char i,j;
79 1 send_i(0x34);
80 1 send_i(0x36);
81 1 for(i = 0; i < 64; i ++)/*共32页*/
82 1 {
83 2 Disp_Page = i | 0x80;/*设置页地址*/
84 2 loc_xy(0x80,Disp_Page);/*送入页地址*//*送入起始列地址*/
85 2 for(j = 0;j < 32;j ++)
86 2 {
87 3 send_d(0x00);/*清屏*/
88 3 }
89 2 }
90 1 }
91 /*
92 //画点
93 void dot(unsigned char x,unsigned char y,unsigned char state)
94 {
95 unsigned char LCD_X,LCD_Y,old_pic1,old_pic2,temp,dx,kk;
96 //地址转换,左上角为(0,0)点
97 LCD_X = x/16;
98 if(y<=31)
99 {
100 LCD_Y = 0x80 + 31 - y;
101 LCD_X = 0x88 + LCD_X;
102 }
103 else
104 {
105 LCD_Y = 0x80 + 63 - y;
106 LCD_X = 0X80 + LCD_X;
107 }
108 //读取GDRAM中数据
109 loc_xy(LCD_X,LCD_Y);
110 read_ram();
111 old_pic1 = read_ram();
112 old_pic2 = read_ram();
113
114 dx = x%16;
115 loc_xy(LCD_X,LCD_Y);
C51 COMPILER V7.06 GRAPH 07/07/2008 21:47:21 PAGE 3
116 if(dx<=7)
117 {
118 temp = 1;
119 temp = temp<<(7-dx);
120 if(state==1)
121 {
122
123 kk = old_pic1|temp;
124 }
125 else
126 {
127 temp = 1;
128 kk = old_pic1&(~(temp));
129
130 }
131 send_d(kk);
132 send_d(old_pic2);
133 }
134 else
135 {
136 temp = 1;
137 temp = temp<<(15-dx);
138 if(state==1)
139 {
140
141 kk = old_pic2|temp;
142 }
143 else
144 {
145 kk = old_pic2&(~(temp));
146
147 }
148 send_d(old_pic1);
149 send_d(kk);
150
151 }
152
153 }
154 void lcd_display(void)
155 {
156 send_i(0x34);
157 send_i(0x36);
158 send_i(0x30);
159 }
160 //全屏画图
161 void send_grap(unsigned char * pic)
162 {
163 unsigned char LCD_X,LCD_Y,x,y;
164
165 LCD_Y = 0x80;
166 LCD_X = 0x80;
167
168 for(y = 0;y <= 31;y++)
169 {
170
171 LCD_X = 0x80;
172 for(x = 0;x <= 7;x++)
173 {
174 loc_xy(LCD_X,LCD_Y);
175
176 send_d(*pic);
177 pic++;
C51 COMPILER V7.06 GRAPH 07/07/2008 21:47:21 PAGE 4
178 send_d(*pic);
179 pic++;
180
181 LCD_X++;
182 }
183 LCD_Y++;
184 }
185
186 LCD_Y = 0x80;
187 for(y = 0;y <= 31;y++)
188 {
189
190 LCD_X = 0x88;
191 for(x = 0;x <= 7;x++)
192 {
193 loc_xy(LCD_X,LCD_Y);
194
195 send_d(*pic);
196 pic++;
197 send_d(*pic);
198 pic++;
199
200 LCD_X++;
201 }
202 LCD_Y++;
203 }
204
205 send_i(0x34);
206 send_i(0x36);
207 send_i(0x30);
208
209 }
210
211 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 247 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 10
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?