📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 08/24/2008 10:50:53 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE sources\main.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\main.lst
-) OBJECT(main.obj)
line level source
1 //*************************************************************************************************
2 //*************************************************************************************************
3 //**<程序名>:俄罗斯方块游戏 **
4 //**<版本说明>:此版是第一版,在LCD1608第4版基础上改进而来,目前只可以绘制游戏区域的边框。 **
5 //**<完成时间>:2007年8月28日 **
6 //**<作者>:LastRitter **
7 //**<联系方式>:E-mail:superyongzhe@163.com;QQ:314665354。 **
8 //*************************************************************************************************
9 //*************************************************************************************************
10
11 //*************************************************************************************************
12 //* *
13 //* ******************************头文件及宏定义************************** *
14 //* *
15 //*************************************************************************************************
16 #include "includes.h"
17
18
19 #define TIME1H 0x3C
20 #define TIME1L 0xB0 //定时器1溢出时间:50ms
21
22 #define SCANPORT P1
23
24
25 //*************************************************************************************************
26 //* *
27 //* ******************************全局变量************************************ *
28 //* *
29 //*************************************************************************************************
30
31 //unsigned char code uca_TEST[]={0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF
-0,0xF0};
32 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
33 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
34 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
35 bit b_KeyShock=0; //键盘防抖动标志位。
36 //当按键中断产生时,首先判断此位。
37 //0--执行键盘扫描及键码处理程序;1--不执行。
38
39 bit b_KillShock=0; //防抖标志清除位:0--不清除;1--清除。
40
41 unsigned char uc_KillCount=0; //抖动标志清除计数,使用定时器1。
42
43
44 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
45 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<键盘扫描开启标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
46 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
47 bit b_KeyScan=0; //0--不扫描;
48 //1--扫描。
49
50
51 //*************************************************************************************************
52 //* *
53 //* ********************************主函数****************************** *
C51 COMPILER V8.02 MAIN 08/24/2008 10:50:53 PAGE 2
54 //* *
55 //*************************************************************************************************
56
57
58 /*********************** main ************************/
59 void main(void)
60 {
61 1
62 1 vLCDInitialize();
63 1
64 1 vShowOneChin(0,0,uca_QING);
65 1 vShowOneChin(2,0,uca_SHU);
66 1 vShowOneChin(4,0,uca_RU);
67 1 vShowOneChin(6,0,uca_MAOHAO);
68 1
69 1 vShowGraph(2,60,32,4,uca_Pig);
70 1 vShowFrame();
71 1
72 1 SCANPORT=0x0F;
73 1
74 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<外部中断0,用于开启键盘扫描及键码处理标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
75 1 IT0=1; // 中断方式:下降沿。
76 1 EX0=1; // 开启外部中断。
77 1
78 1
79 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1,用于防抖动标志清除 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
80 1 TH1=TIME1H;
81 1 TL1=TIME1L;
82 1 TR1=1; //开启定时器1
83 1 ET1=1; //开定时器1中断
84 1
85 1 EA=1;
86 1
87 1 while(1)
88 1 {
89 2 if(b_KeyScan==1) //如果有按键按下,则进行按键扫描和键码处理。
90 2 {
91 3 b_KeyScan=0;
92 3 vKeyProcess(ucKeyScan());
93 3 }
94 2 }
95 1 }
96
97
98
99 //*************************************************************************************************
100 //* *
101 //* ******************************外部中断0,用于开启键盘扫描及键码处理****************** *
102 //* *
103 //*************************************************************************************************
104 void vINT0(void) interrupt 0
105 {
106 1 if(b_KeyShock==0)
107 1 {
108 2 b_KeyScan=1; //开启键盘扫描标志。
109 2 b_KeyShock=1; //设置防抖动标志。
110 2 }
111 1 else b_KeyShock=0; //如果有抖动则不执行键扫描,恢复防抖动标志。
112 1
113 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置防抖动清除标志位 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
114 1 if(b_KeyShock==1)
115 1 b_KillShock=1; //如果防抖动标志位开启则开启防抖动标志清除位,
C51 COMPILER V8.02 MAIN 08/24/2008 10:50:53 PAGE 3
116 1 //300ms后清除防抖动标志。
117 1
118 1 }
119
120
121 //*************************************************************************************************
122 //* *
123 //* ****************定时器1中断,用于计时功能和防抖动标志清除*************************** *
124 //* *
125 //*************************************************************************************************
126 void vTimer1(void) interrupt 3
127 {
128 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
129 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志清除>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
130 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
131 1 if(b_KillShock==1)
132 1 {
133 2 if(uc_KillCount==5) //当防抖动标志位为1时,计时300ms后清除抖动标志位。
134 2 {
135 3 b_KeyShock=0;
136 3 b_KillShock=0;
137 3 uc_KillCount=0;
138 3 }
139 2 else uc_KillCount++;
140 2 }
141 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
142 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<恢复定时器1溢出时间>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
143 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
144 1 TH1=TIME1H;
145 1 TL1=TIME1L;
146 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 161 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -