📄 mcu_test.lst
字号:
196 */
197 void MCU_Draw_LineWith(uint16 x0,uint16 y0,uint16 x1,uint16 y1,uint8 width)
198 {
199 1 write_byte(0x81); //指令开始
200 1 write_byte(0x30); //指令代码(画直线)
201 1 write_byte(Fcolor.B); //前景色3个字节
202 1 write_byte(Fcolor.G); //绿
203 1 write_byte(Fcolor.R); //红
204 1 write_byte(x0/100); //直线起点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1)
205 1 write_byte(x0%100); //直线起点位置x轴坐标(取模运算)
206 1 write_byte(y0/100); //直线起点位置y轴坐标
207 1 write_byte(y0%100); //直线起点位置y轴坐标
208 1 write_byte(x1/100); //直线终点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1)
209 1 write_byte(x1%100); //直线终点位置x轴坐标(取模运算)
210 1 write_byte(y1/100); //直线终点位置y轴坐标
211 1 write_byte(y1%100); //直线终点位置y轴坐标
212 1 write_byte(width); //直线宽度(宽度不得大于30)
213 1 write_byte(0x84); //指令结束
214 1 }
215 /*
216 ******************************************************************
217 *
218 * 名称:MCU_Draw_Rectangle()
219 * 功能:画矩形。
220 * 入口参数:x0 矩形起点所在列的位置
221 * y0 矩形起点所在行的位置
222 * width 矩形宽
223 * high 矩形高
224 ******************************************************************
225 */
226 void MCU_Draw_Rectangle(uint16 x0, uint16 y0,uint16 width,uint16 high)
227 {
228 1 write_byte(0x81); //指令开始
229 1 write_byte(0x31); //指令代码(画直线)
230 1 write_byte(Fcolor.B); //前景色3个字节
231 1 write_byte(Fcolor.G); //绿
232 1 write_byte(Fcolor.R); //红
233 1 write_byte(x0/100); //矩形起点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1)
234 1 write_byte(x0%100); //
235 1 write_byte(y0/100); //矩形起点位置y轴坐标
236 1 write_byte(y0%100); //
237 1 write_byte(width/100); //矩形宽度(取整运算-width为两字节变量,高低两字节100进1)
238 1 write_byte(width%100); //(取模运算)
239 1 write_byte(high/100); //矩形高度
240 1 write_byte(high%100); //(取模运算)
241 1 write_byte(0x84); //指令结束
C51 COMPILER V8.02 MCU_TEST 03/31/2009 13:10:27 PAGE 5
242 1 }
243 /*
244 ******************************************************************
245 *
246 * 名称:MCU_Draw_RectangleFill()
247 * 功能:清除矩形。
248 * 入口参数:x0 矩形起点所在列的位置
249 * y0 矩形起点所在行的位置
250 * width 矩形宽
251 * high 矩形高
252 * 说明:
253 ******************************************************************
254 */
255 void MCU_Draw_RectangleFill(uint16 x0, uint16 y0,uint16 width,uint16 high)
256 {
257 1 write_byte(0x81); //指令开始
258 1 write_byte(0x32); //指令代码(清除矩形)
259 1 write_byte(Fcolor.B); //前景色3个字节
260 1 write_byte(Fcolor.G); //绿
261 1 write_byte(Fcolor.R); //红
262 1 write_byte(x0/100); //矩形起点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1)
263 1 write_byte(x0%100); //
264 1 write_byte(y0/100); //矩形起点位置y轴坐标
265 1 write_byte(y0%100); //
266 1 write_byte(width/100); //矩形宽度(取整运算-width为两字节变量,高低两字节100进1)
267 1 write_byte(width%100); //(取模运算)
268 1 write_byte(high/100); //矩形高度
269 1 write_byte(high%100); //(取模运算)
270 1 write_byte(0x84); //指令结束
271 1 }
272 /****************************************************************************
273 * 名称:MCU_Draw_Circle()
274 * 功能:指定圆心位置及半径,画圆。
275 * 入口参数:x0 圆心的x坐标值
276 * y0 圆心的y坐标值
277 * r 圆的半径
278 ****************************************************************************/
279 void MCU_Draw_Circle(uint16 x0, uint16 y0, uint16 r)
280 {
281 1 write_byte(0x81); //指令开始
282 1 write_byte(0x33); //指令代码(画圆)
283 1 write_byte(Fcolor.B); //前景色3个字节
284 1 write_byte(Fcolor.G); //绿
285 1 write_byte(Fcolor.R); //红
286 1 write_byte(x0/100); //圆心位置x轴坐标(取整运算-x0为两字节变量,高低两字节100进1)
287 1 write_byte(x0%100); //
288 1 write_byte(y0/100); //圆心位置y轴坐标
289 1 write_byte(y0%100); //
290 1 write_byte(r/100); //圆的X轴半径(取整运算-r为两字节变量,高低两字节100进1)
291 1 write_byte(r%100); //
292 1 write_byte(r/100); //圆的Y轴半径
293 1 write_byte(r%100); //
294 1 write_byte(0x84); //指令结束
295 1 }
296 /****************************************************************************
297 * 名称:MCU_Draw_CircleFill()
298 * 功能:指定圆心位置及半径,画圆并填充,填充色与边框色一样。
299 * 入口参数:x0 圆心的x坐标值
300 * y0 圆心的y坐标值
301 * xr 圆的X轴半径
302 * yr 圆的Y轴半径
303 ****************************************************************************/
C51 COMPILER V8.02 MCU_TEST 03/31/2009 13:10:27 PAGE 6
304 void MCU_Draw_CircleFill(uint16 x0, uint16 y0, uint16 xr,uint16 yr)
305 {
306 1 write_byte(0x81); //指令开始
307 1 write_byte(0x34); //指令代码(画填充圆)
308 1 write_byte(Fcolor.B); //前景色3个字节
309 1 write_byte(Fcolor.G); //绿
310 1 write_byte(Fcolor.R); //红
311 1 write_byte(x0/100); //圆心位置x轴坐标(取整运算-x0为两字节变量,高低两字节100进1)
312 1 write_byte(x0%100); //
313 1 write_byte(y0/100); //圆心位置y轴坐标
314 1 write_byte(y0%100); //
315 1 write_byte(xr/100); //圆的X轴半径(取整运算-r为两字节变量,高低两字节100进1)
316 1 write_byte(xr%100); //
317 1 write_byte(yr/100); //圆的Y轴半径
318 1 write_byte(yr%100); //
319 1 write_byte(0x84); //指令结束
320 1 }
321
322 /*
323 ******************************************************************
324 *
325 * 名称: MCU_Draw_ClearScreen()
326 * 功能: 用指定的颜色清屏。
327 * 入口参数:清屏颜色
328 ******************************************************************
329 */
330 void MCU_Draw_ClearScreen()
331 {
332 1 write_byte(0x81); //指令开始
333 1 write_byte(0x35); //指令代码(画圆)
334 1 write_byte(Fcolor.B); //前景色3个字节
335 1 write_byte(Fcolor.G); //绿
336 1 write_byte(Fcolor.R); //红
337 1 write_byte(0x84); //指令结束
338 1 }
339 /*
340 ******************************************************************
341 *
342 * 名称: MCU_Draw_Wave()
343 * 功能: 用指定的颜色画波形或曲线。显示波形的原理是:
344 x轴从坐标原点开始自动加一,y轴(幅度)是*p_data
345 * 入口参数:x0 坐标原点位置x轴坐标
346 * y0 坐标原点位置y轴坐标
347 * con=1 y轴(幅度)的大小用一个字节表示。con = 2:y轴(幅度)的大小用二个字节表示
348 ******************************************************************
349 */
350 void MCU_Draw_Wave(uint16 x0,uint16 y0,uint8 con,uint16 *p_data)
351 {
352 1 write_byte(0x81); //指令开始
353 1 write_byte(0x36); //指令代码(画圆)
354 1 write_byte(Fcolor.B); //前景色3个字节
355 1 write_byte(Fcolor.G); //绿
356 1 write_byte(Fcolor.R); //红
357 1 write_byte(x0/100); //坐标原点位置x轴坐标(取整运算-x0为两字节变量,高低两字节100进1)
358 1 write_byte(x0%100); //
359 1 write_byte(y0/100); //坐标原点位置y轴坐标
360 1 write_byte(y0%100); //
361 1 write_byte(con);
362 1 switch(con)
363 1 {case 1:
364 2 do
365 2 {
C51 COMPILER V8.02 MCU_TEST 03/31/2009 13:10:27 PAGE 7
366 3 write_byte(*p_data%100); //因为*p_data定义为short类型指针,所以这里要先取模运算再发送
367 3 p_data++;
368 3 }
369 2 while(*p_data !=0x84);
370 2 break;
371 2
372 2 case 2:
373 2 do
374 2 {
375 3 write_byte(*p_data/100);
376 3 write_byte(*p_data%100);
377 3 p_data++;
378 3 }
379 2 while(*p_data !=0xffff); //这里不能定义为0x84,因为p_data[x]有可能是0x84
380 2 break;
381 2
382 2 default: break;
383 2 }
384 1 write_byte(0x84); //指令结束
385 1 }
386 uint16 mouse_x,mouse_y;
387 uint8 mouse_buf[5];
388 uint8 cnt=0;
389 void Wait_MouseKeyDown(void)
390 {
391 1 uint8 ch;
392 1 while(1)
393 1 { if(RI==0) continue;
394 2 ch=SBUF;
395 2 RI=0;
396 2 if((cnt==0) && ((ch==0xf3)||(ch==0xf4))) {cnt++;}
397 2 else if((cnt==1)&& (ch<100)) {mouse_buf[cnt]=ch;cnt++;}
398 2 else if((cnt==2)&& (ch<100)) {mouse_buf[cnt]=ch;cnt++;}
399 2 else if((cnt==3)&& (ch<100)) {mouse_buf[cnt]=ch;cnt++;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -