📄 function.lst
字号:
C51 COMPILER V7.06 FUNCTION 12/09/2008 01:11:01 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE FUNCTION
OBJECT MODULE PLACED IN function.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE function.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <intrins.h>
2 #include <reg52.h>
3 #include "define.h"
4 #include "code.h"
5 #include <stdlib.h>
6
7 //******************全局变量******************
8 uint16 Map[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //地图
9 uint16 Black_Ground[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //动态显示缓存
10 uchar temp0,temp1,time,keyvalue=0xff;//按键判断使用的变量
11 uchar Auto_Down=6,keyvalue1,speed;
12 uchar Draw_Block_To_BG_Flag;
13 uint16 horiz=0;
14 uchar NewBlock=1;
15 uchar Quick_Down=0;
16 uchar Block_X,Block_Y; //方块当前的坐标
17 uchar I,J,I1,J1; //选取7行4列方块种类的变量
18 uchar score1=0;
19 //******************全局变量******************
20
21
22 void delay_1us(void) //1us延时函数
23 {
24 1 unsigned int i;
25 1 for(i=0;i<1000;i++);
26 1 }
27
28 //1ms Delayfunction
29 void Delay(uint16 uiDelayCount)
30 {
31 1 uint16 uiTempCount;
32 1 uchar uci;
33 1 for(uiTempCount=0; uiTempCount<uiDelayCount; uiTempCount++)
34 1 {
35 2 uci = 230;
36 2 while(uci--)
37 2 {
38 3 _nop_();
39 3 }
40 2 }
41 1 }
42
43
44
45 /*-----------------------------------------------------------------------
46 LCD_write_byte : 使用SPI接口写数据到LCD
47
48 输入参数:data :写入的数据;
49 command :写数据/命令选择;
50
51 -----------------------------------------------------------------------*/
52 void LCD_write_CMD(unsigned char ucWriteData)
53 {
54 1 unsigned char uci;
55 1
C51 COMPILER V7.06 FUNCTION 12/09/2008 01:11:01 PAGE 2
56 1 LCD_CE = 0;
57 1 LCD_DC = 0;
58 1
59 1 for(uci=0;uci<8;uci++)
60 1 {
61 2 if(ucWriteData & 0x80)
62 2 {
63 3 LCD_SDIN = 1;
64 3 }
65 2 else
66 2 {
67 3 LCD_SDIN = 0;
68 3 }
69 2 LCD_SCLK = 0;
70 2
71 2 ucWriteData = ucWriteData << 1;
72 2 LCD_SCLK = 1;
73 2 }
74 1
75 1 LCD_CE = 1;
76 1 }
77
78 /*-----------------------------------------------------------------------
79 LCD_write_byte : 使用SPI接口写数据到LCD
80
81 输入参数:data :写入的数据;
82 command :写数据/命令选择;
83 -----------------------------------------------------------------------*/
84 void LCD_write_Data(unsigned char ucWriteData)
85 {
86 1 unsigned char uci;
87 1
88 1 LCD_CE = 0;
89 1 LCD_DC = 1;
90 1
91 1 for(uci=0;uci<8;uci++)
92 1 {
93 2 if(ucWriteData & 0x80)
94 2 {
95 3 LCD_SDIN = 1;
96 3 }
97 2 else
98 2 {
99 3 LCD_SDIN = 0;
100 3 }
101 2 LCD_SCLK = 0;
102 2
103 2 ucWriteData = ucWriteData << 1;
104 2 LCD_SCLK = 1;
105 2 }
106 1
107 1 LCD_CE = 1;
108 1 }
109 /*-----------------------------------------------------------------------
110 LCD_set_XY : 设置LCD坐标函数
111
112 输入参数:X -83
113 Y :0-5
114 -----------------------------------------------------------------------*/
115 void LCD_set_XY(unsigned char X, unsigned char Y)
116 {
117 1 LCD_write_CMD(0x40 | (Y & 0X07)); // column
C51 COMPILER V7.06 FUNCTION 12/09/2008 01:11:01 PAGE 3
118 1 LCD_write_CMD(0x80 | (X & 0X7F)); // row
119 1 }
120
121
122
123 /*-----------------------------------------------------------------------
124 LCD_clear : LCD清屏函数
125
126 -----------------------------------------------------------------------*/
127
128 /*-----------------------------------------------------------------------
129 LCD_write_char : 显示英文字符
130
131 输入参数:c :显示的字符;
132
133 -----------------------------------------------------------------------*/
134 void LCD_write_char(unsigned char c)
135 {
136 1 unsigned char line;
137 1
138 1 c -= 32;
139 1
140 1 for (line=0; line<6; line++)
141 1 {
142 2 LCD_write_Data(font6x8[c][line]);
143 2 }
144 1 }
145
146
147
148
149
150
151 /*-----------------------------------------------------------------------
152 LCD_write_english_String : 英文字符串显示函数
153
154 输入参数:*s :英文字符串指针;
155 X、Y : 显示字符串的位置,x 0-83 ,y 0-5
156
157 -----------------------------------------------------------------------*/
158 void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
159 {
160 1 LCD_set_XY(X,Y);
161 1 while (*s)
162 1 {
163 2 LCD_write_char(*s);
164 2 s++;
165 2 }
166 1 }
167
168
169
170 void LCD_Clear(void)
171 {
172 1 uint16 uii;
173 1
174 1
175 1 LCD_set_XY(0,0);
176 1 for(uii=0; uii<6*84; uii++)//c_Lcd_Max_x * c_Lcd_Max_y
177 1 {
178 2 LCD_write_Data(0x00);
179 2
C51 COMPILER V7.06 FUNCTION 12/09/2008 01:11:01 PAGE 4
180 2 }
181 1
182 1 }
183
184
185 void LCD_Init(void)
186 {
187 1 LCD_CE = 0;
188 1 // 产生一个让LCD复位的低电平脉冲
189 1 LCD_RST = 0;
190 1 delay_1us();
191 1 LCD_RST = 1;
192 1 // 关闭LCD
193 1 delay_1us();
194 1 // 使能LCD
195 1 delay_1us();
196 1 LCD_write_CMD(0x23); // 使用扩展命令设置LCD模式
197 1 // LCD_write_CMD(0xc8); // 设置偏置电压
198 1 LCD_write_CMD(Nokia5110_vot_set);
199 1 LCD_write_CMD(0x06); // 温度校正
200 1 LCD_write_CMD(0x14); // 1:48 对比度调节
201 1 LCD_write_CMD(0x22); // 使用基本命令,采用垂直模式
202 1 LCD_Clear(); // 清屏
203 1 LCD_write_CMD(0x0c); // 设定显示模式,c正常显示,d反白显示
204 1 LCD_CE = 1;
205 1 }
206
207
208
209 void LCD_Write_Frame()
210 {
211 1 unsigned char line;
212 1 LCD_write_CMD(0x20); // 使用基本命令,采用水平模式
213 1 LCD_set_XY(54,5);
214 1 for(line=0; line<30; line++)
215 1 {
216 2 LCD_write_Data(0x80);
217 2 }
218 1 LCD_set_XY(54,2);
219 1 for(line=0; line<30; line++)
220 1 {
221 2 LCD_write_Data(0x20);
222 2 }
223 1 LCD_write_english_string(56,0,"NEXT");
224 1 LCD_write_english_string(56,3,"LINE");
225 1 LCD_set_XY(60,4);
226 1 LCD_write_char(48); //分数先初始化为0
227 1 LCD_write_char(48); //分数先初始化为0
228 1 LCD_write_char(48); //分数先初始化为0
229 1 LCD_write_CMD(0x22); // 使用基本命令,采用垂直模式
230 1 LCD_set_XY(51,0);
231 1 for(line=0; line<18; line++)
232 1 {
233 2 LCD_write_Data(Blackground[line]);
234 2 }
235 1 LCD_set_XY(83,0);
236 1 for(line=0; line<6; line++)
237 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -