📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 10/14/2007 14:35:24 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\main.c BROWSE INCDIR(.\include;.\include) DEBUG OBJECTEXTEND PRINT(
-.\main.lst) OBJECT(main.obj)
line level source
1 //*************************************************************************************************
2 //*************************************************************************************************
3 //**<程序名>:LCD显示应用 **
4 //**<功能>:LCD显示滚动的一句话,以及键盘输入。 **
5 //**<作者>:LastRitter **
6 //**<完成时间>:2007年8月8日 **
7 //**<联系方式>:E-mail:superyongzhe@163.com;QQ:314665354。 **
8 //*************************************************************************************************
9 //*************************************************************************************************
10
11 //*************************************************************************************************
12 //* *
13 //* ******************************头文件及宏定义************************** *
14 //* *
15 //*************************************************************************************************
16 #include <at89x51.h>
*** WARNING C318 IN LINE 16 OF sources\main.c: can't open file 'at89x51.h'
17 #include <intrins.h>
18
19 #define TIME1H 0x3C
20 #define TIME1L 0xB0 //定时器1溢出时间:50ms
21
22
23 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
24 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
25 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
26 bit b_KeyShock=0; //键盘防抖动标志位。
27 //当按键中断产生时,首先判断此位。
28 //0--执行键盘扫描及键码处理程序;1--不执行。
29
30 bit b_KillShock=0; //防抖标志清除位:0--不清除;1--清除。
31
32 unsigned char uc_KillCount=1; //抖动标志清除计数,使用定时器1。
33
34
35 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
36 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<键盘扫描开启标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
37 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
38 bit b_KeyScan=0; //0--不扫描;
39 //1--扫描。
40
41 extern bit b_Introduce; //介绍关闭标志,当置零时,介绍就会停止显示。
42
43
44 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
45 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<按键计数清除>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
46 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
47 unsigned char uc_CleanCount=0; //清除按键计数时间计数。
48
49 extern bit b_CleanClick; //清除按键计数标志,定义在KeyProcess.c中
50 //0--不清除;
51 //1--清除。
52 //在定时器1中使用。
53
C51 COMPILER V7.50 MAIN 10/14/2007 14:35:24 PAGE 2
54 extern unsigned char uc_ClickCount; //按键连续点击计数,定义在KeyProcess.c中。
55
56 extern unsigned char uc_KeyTemp; //按键键码暂存,定义在KeyProcess.c中。
57
58
59
60 //*************************************************************************************************
61 //* *
62 //* ********************************主函数****************************** *
63 //* *
64 //*************************************************************************************************
65 void main()
66 {
67 1 P1=0x0F;
*** ERROR C202 IN LINE 67 OF SOURCES\MAIN.C: 'P1': undefined identifier
68 1
69 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<外部中断0,用于开启键盘扫描及键码处理标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
70 1 IT0=1; // 中断方式:下降沿。
*** ERROR C202 IN LINE 70 OF SOURCES\MAIN.C: 'IT0': undefined identifier
71 1 EX0=1; // 开启外部中断。
*** ERROR C202 IN LINE 71 OF SOURCES\MAIN.C: 'EX0': undefined identifier
72 1
73 1
74 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1,用于防抖动标志清除 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
75 1 TH1=TIME1H;
*** ERROR C202 IN LINE 75 OF SOURCES\MAIN.C: 'TH1': undefined identifier
76 1 TL1=TIME1L;
*** ERROR C202 IN LINE 76 OF SOURCES\MAIN.C: 'TL1': undefined identifier
77 1 TR1=1; //开启定时器1
*** ERROR C202 IN LINE 77 OF SOURCES\MAIN.C: 'TR1': undefined identifier
78 1 ET1=1; //开定时器1中断
*** ERROR C202 IN LINE 78 OF SOURCES\MAIN.C: 'ET1': undefined identifier
79 1
80 1 EA=1; //开总中断。
*** ERROR C202 IN LINE 80 OF SOURCES\MAIN.C: 'EA': undefined identifier
81 1
82 1 vdInitialize(); //LCD初始化,相关参数在“SMC1602.h”中修改。
83 1 //注意,初始化里省略了vWriteCMD(0x0C),在vIntroduce()里有。
84 1
85 1 vIntroduce(); //显示介绍。
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 //* ******************************外部中断0,用于开启键盘扫描及键码处理****************** *
100 //* *
101 //*************************************************************************************************
102 void vINT0(void) interrupt 0
103 {
104 1 if(b_KeyShock==0)
105 1 {
106 2 if(b_Introduce==0) //此判断是为了屏蔽从介绍返回字符输入时的键盘扫描。
107 2 {
C51 COMPILER V7.50 MAIN 10/14/2007 14:35:24 PAGE 3
108 3 b_KeyScan=1; //开启键盘扫描标志。
109 3 b_KeyShock=1; //设置防抖动标志。
110 3 }
111 2 }
112 1 else b_KeyShock=0; //如果有抖动则不执行键扫描,恢复防抖动标志。
113 1
114 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置防抖动清除标志位 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
115 1 if(b_KeyShock==1)
116 1 b_KillShock=1; //如果防抖动标志位开启则开启防抖动标志清除位,
117 1 //300ms后清除防抖动标志。
118 1
119 1 b_Introduce=0; //用于关闭介绍,在显示介绍时如果有案件按下,产生的中断会
120 1 } //把此标志置零,便可退出介绍。
121
122
123
124 //*************************************************************************************************
125 //* *
126 //* ****************定时器1中断,用于计时功能和防抖动标志清除以及显示报告**************** *
127 //* *
128 //*************************************************************************************************
129 void vTimer1(void) interrupt 3
130 {
131 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
132 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志清除>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
133 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
134 1 if(b_KillShock==1)
135 1 {
136 2 if(uc_KillCount%5==0) //当防抖动标志位为1时,计时300ms后清除抖动标志位。
137 2 {
138 3 b_KeyShock=0;
139 3 b_KillShock=0;
140 3 uc_KillCount=1;
141 3 }
142 2 else uc_KillCount++;
143 2 }
144 1
145 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
146 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<按键计数清除>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
147 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
148 1 if(b_CleanClick==1)
149 1 {
150 2 if(uc_CleanCount==100)
151 2 {
152 3 b_CleanClick=0; //关闭改计数。
153 3
154 3 uc_CleanCount=1; //恢复计数初值。
155 3
156 3 uc_ClickCount=1; //清除按键计数。
157 3
158 3 uc_KeyTemp=0;
159 3 }
160 2 else
161 2 uc_CleanCount++;
162 2 }
163 1
164 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
165 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<恢复定时器1溢出时间>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
166 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
167 1 TH1=TIME1H;
168 1 TL1=TIME1L;
169 1 }
C51 COMPILER V7.50 MAIN 10/14/2007 14:35:24 PAGE 4
C51 COMPILATION COMPLETE. 1 WARNING(S), 8 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -