📄 mcu_test.lst
字号:
C51 COMPILER V8.02 MCU_TEST 03/31/2009 12:43:31 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MCU_TEST
OBJECT MODULE PLACED IN mcu_test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mcu_test.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //下面是图片的排序号。它是一个头文件,需将其加入到您的程序中。
2 #define hehua 0
3 #define pic_0 1
4 #define pic_1 2
5 #define pic_2 3
6 #define wheel_0 4
7 #define wheel_1 5
8 #include<Atmel/AT89x52.H>
9 //定义颜色数据类型(可以是数据结构)
10 typedef struct _tcolor
11 {
12 unsigned char R;
13 unsigned char G;
14 unsigned char B;
15 } TCOLOR;
16 #define uint16 unsigned short
17 #define uint8 unsigned char
18 TCOLOR Fcolor, Bcolor;
19 //*************************************************************
20 void InitUART(void) //串口初始化函数,使用11.0592M晶体
21 {
22 1 SCON = SCON|0x50; //选择模式1,8位数据格式,使能UART
23 1 PCON |= 0x80; //波特率加倍
24 1 TMOD =TMOD| 0x20; //定时器1:模式2
25 1 //TH1=256-(2f/32*12*19200)
26 1 TH1 = 0xfd; //定时器1自动装载初值,时钟频率11.0592MHz,fd(19200bps)
27 1 TL1 = 0xfd;
28 1 TR1 = 1; //定时器1计数使能
29 1 REN = 1; //允许串口接受使能
30 1 }
31 /*
32 ******************************************************************
33 *
34 * 名称: write_byte()
35 * 功能: 向串口发送一个字节的数据
36 * 入口参数:i为待发送的字节数据
37 ******************************************************************
38 */
39
40 void write_byte(uint8 i)
41 {
42 1 SBUF=i;
43 1 while(TI==0){}
44 1 TI=0;
45 1 }
46 /****************************************************************************
47 * 名称:MCU_Draw_Pic()
48 * 功能:显示一幅图片
49 *
50 * 入口参数:x 起点的x坐标值
51 * y 起点的y坐标值
52 * num 图片编号
53 ****************************************************************************/
54 void MCU_Draw_Pic(uint16 x,uint16 y,uint16 num)
55 {
C51 COMPILER V8.02 MCU_TEST 03/31/2009 12:43:31 PAGE 2
56 1 write_byte(0x81); //指令开始
57 1 write_byte(0x20);
58 1 write_byte(x/100); //起点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1)
59 1 write_byte(x%100); //起点位置x轴坐标(取模运算)
60 1 write_byte(y/100); //起点位置y轴坐标
61 1 write_byte(y%100); //起点位置y轴坐标
62 1 write_byte(num/100); //图片编号
63 1 write_byte(num%100); //
64 1 write_byte(0x84); //指令结束
65 1
66 1 }
67 /****************************************************************************
68 * 名称:MCU_Save_Window()
69 * 功能:
70 *
71 * 入口参数:
72 *
73 * num 后台窗口编号编号
74 ****************************************************************************/
75 void MCU_Save_Window(uint8 num)
76 {
77 1 if(num>3) return;
78 1 write_byte(0x81); //指令开始
79 1 write_byte(0x50);
80 1 write_byte(num);
81 1 write_byte(0x84); //指令结束
82 1
83 1 }
84 /****************************************************************************
85 * 名称:MCU_ReSave_Window()
86 * 功能:
87 *
88 * 入口参数:
89 *
90 * num 后台窗口编号编号
91 ****************************************************************************/
92 void MCU_ReSave_Window(uint8 num)
93 {
94 1 if(num>3) return;
95 1 write_byte(0x81); //指令开始
96 1 write_byte(0x51);
97 1 write_byte(num);
98 1 write_byte(0x84); //指令结束
99 1 }
100 /****************************************************************************
101 * 名称:MCU_Change_WriteWindow()
102 * 功能:
103 *
104 * 入口参数:
105 *
106 * num 后台窗口编号编号
107 ****************************************************************************/
108 void MCU_Change_WriteWindow(uint8 num)
109 {
110 1 if(num>3) return;
111 1 write_byte(0x81); //指令开始
112 1 write_byte(0x52);
113 1 write_byte(num);
114 1 write_byte(0x84); //指令结束
115 1 }
116 uint16 mouse_x,mouse_y;
117 uint8 mouse_buf[5];
C51 COMPILER V8.02 MCU_TEST 03/31/2009 12:43:31 PAGE 3
118 uint8 cnt=0;
119 void Wait_MouseKeyDown(void)
120 {
121 1 uint8 ch;
122 1 while(1)
123 1 { if(RI==0) continue;
124 2 ch=SBUF;
125 2 RI=0;
126 2 if((cnt==0) && ((ch==0xf3)||(ch==0xf4))) {cnt++;}
127 2 else if((cnt==1)&& (ch<100)) {mouse_buf[cnt]=ch;cnt++;}
128 2 else if((cnt==2)&& (ch<100)) {mouse_buf[cnt]=ch;cnt++;}
129 2 else if((cnt==3)&& (ch<100)) {mouse_buf[cnt]=ch;cnt++;}
130 2 else if((cnt==4)&& (ch<100))
131 2 {
132 3
133 3 mouse_buf[cnt]=ch;
134 3 cnt=0;
135 3 mouse_x=mouse_buf[1]*100+mouse_buf[2];
136 3 mouse_y=mouse_buf[3]*100+mouse_buf[4];
137 3 break;
138 3 }
139 2 else {cnt=0;}
140 2 }
141 1 }
142 /*
143 ******************************************************************
144 *
145 * 名称: MCU_Mouse()
146 * 功能:
147 * 入口参数:
148 ******************************************************************
149 */
150 void MCU_Mouse(uint8 en)
151 {
152 1 write_byte(0x81); //指令开始
153 1 if(en) write_byte(0x40); //指令代码
154 1 else write_byte(0x41); //指令代码
155 1 write_byte(0x84); //指令结束
156 1 }
157 void main(void)
158 {
159 1 uint16 delay;
160 1 uint8 i=2;
161 1 for(delay=0;delay<65530;delay++);//延迟一点时间,等待智能VGA控制板初始化完毕
162 1 InitUART();
163 1 MCU_Draw_Pic(0,0,0);
164 1 MCU_Save_Window(1);
165 1 MCU_Change_WriteWindow(2);
166 1 MCU_Draw_Pic(0,0,1);
167 1 MCU_Change_WriteWindow(3);
168 1 MCU_Draw_Pic(0,0,2);
169 1 MCU_Change_WriteWindow(0);
170 1 MCU_Mouse(1); //打开鼠标功能
171 1
172 1 while(1)
173 1 {
174 2 Wait_MouseKeyDown(); //等待鼠标或触摸屏按下并获取按下时的坐标
175 2 MCU_ReSave_Window(i);
176 2 i++;
177 2 if(i>3) i=1;
178 2 }
179 1 while(1);
C51 COMPILER V8.02 MCU_TEST 03/31/2009 12:43:31 PAGE 4
180 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 463 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 5
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -