📄 vga.lst
字号:
C51 COMPILER V7.50 VGA 12/04/2007 21:53:35 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE VGA
OBJECT MODULE PLACED IN vga.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE vga.c LARGE OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 #define uchar unsigned char
2 #define uint unsigned int
3 #include "new_iic.h"
4 #include "reg52.h"
5 #include "font.h"
6 sbit STE=P3^2; //总线是否忙碌指示
7 xdata uchar setclk[16]={0x00,0x00,0x12}; //测试使用
8 xdata uchar set[50]; //重要的命令发送缓冲区域 一般命令+参数 小于1
-6个字节
9 xdata uchar write_c[1024]; //发送缓冲区域 放在外部RAM区域
10 xdata uchar read_c[1024]; //接收缓冲区域 放在外部RAM区域
11 xdata uchar make_bmp[1024*7];
12 #define bmp_2 1
13 #define bmp_16 4
14 #define bmp_256 8
15 #define black 0x00
16 #define white 0xff
17 #define blue 0x88
18 uchar *pp;
19 void clean_rec(uint x,uint y,uint w,uint h,uchar color,uchar mode)
20 {
21 1 uint i=0;
22 1 for(i=0;i<1000;i++)
23 1 {
24 2 write_c[i]=i;
25 2 }
26 1 while(writebyteseq(1024,write_c,1000));
27 1 while(readbyteseq(1024,read_c,1000));
28 1 /////////////////////////////////////////////指令区域设置清除指令参数/////////////////////////////////////
-/
29 1 set[0]=0x62;
30 1 set[1]=0x62;
31 1 set[2]=0x62;
32 1 set[3]=0x62; //前四字节为清空指令码
33 1 set[4]=w/256;
34 1 set[5]=w%256; //清空的列数 最大720列
35 1 set[6]=h/256;
36 1 set[7]=h%256; //清空的行数 最大480列
37 1 set[8]=x/256;
38 1 set[9]=x%256; //从X 位置开始清空
39 1 set[10]=y/256;
40 1 set[11]=y%256; //从Y位置开始清空
41 1 set[12]=color; //清空后填充的颜色 0XFF 为白色
42 1 set[13]=mode; //清空方式 0X02重新打开图象缓冲(以前屏幕数据全清掉) 0X01 一般清屏幕(只清指定
-区域)
43 1 set[14]=0x00; //数据寸取情况指示
44 1 delay10ms();
45 1 /////////////////////////////////////////////指令区域设置清除指令参数/////////////////////////////////////
-/
46 1 while(writebyteseq(0,set,16)); //从数据交换区域0开始写16个字节的清屏指令 和清屏参数
47 1 /////////////////////////////////////////////////////等待硬件解码端取走清除指令///////////////////////////
48 1 do
49 1 {
50 2 delay10ms();
51 2 while(!STE);
C51 COMPILER V7.50 VGA 12/04/2007 21:53:35 PAGE 2
52 2 readbyteseq(0,set,18);
53 2 }while(set[14]!=0xaa); //缓冲区域中第
54 1 ////////////////////////////////////////////////////等待到MIX5399回应后开始发送图片格式以及文件///////////
-///
55 1 }
56 xdata uchar font2bmp[3000]={0};
57 void draw_bmp(uint x,uint y,uchar *p,uchar type)
58 {
59 1 uint i=0;
60 1 uint k=0;
61 1 uint b=0;
62 1 uchar len=0;
63 1 uchar m=0;
64 1 set[0]=0x67;
65 1 set[1]=0x67;
66 1 set[2]=0x67;
67 1 set[3]=0x67; //前四个字节为写图象缓冲指令码
68 1 set[4]=(*p);
69 1 set[5]=(*(p+1)); //要写图象的宽度
70 1 set[6]=(*(p+2));
71 1 set[7]=(*(p+3)); //要写图象的高度
72 1 set[8]=x/256; //图象显示在缓冲区的X 位置
73 1 set[9]=x%256;
74 1 set[10]=y/256;
75 1 set[11]=y%256; //图象显示在缓冲区的Y 位置
76 1 set[12]=type;
77 1 set[13]=0x00;
78 1 i=((*p)*256)+(*(p+1));
79 1 k=((*(p+2))*256)+(*(p+3));//数据传输状态标志
80 1 len=((i)*(k)/(1024*(8/set[12]))+1);//获取要发送的图片数据的大小以K字节为单位
81 1 pp=p;//指针指向要发送的图片数组
82 1 ///////////////////////////////////////////////////以上数组初始化为要发送的图片格式和发送指令/////////////
-////
83 1 while(writebyteseq(0,set,18));
84 1 ///////////////////////////////////////////////////将发送图片指令(数组中前四个字节)和图片的参数真正发送
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -