📄 main.lst
字号:
C51 COMPILER V8.05a MAIN 08/07/2007 14:58:33 PAGE 1
C51 COMPILER V8.05a, 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) DEBUG OBJECTEXTEND PRINT(.\main.lst
-) OBJECT(main.obj)
line level source
1 //*************************************************************************************************
2 //*************************************************************************************************
3 //**<程序名>:多功能计算器4.0正式版 **
4 //** **
5 //**<功能>:可以进行6位数以内正整数的加减乘除运算,以及计时器和自定义倒计时功能 **
6 //** **
7 //**<版本说明>:这是最后一版,主要增加了自定义倒计时功能,增加了几个状态显示,消除了部分bug。 **
8 //** **
9 //**<主要改动>:新增报告字符,实现倒计时功能。 **
10 //** **
11 //**<作者>:程沛 **
12 //**<完成时间>:2007年7月30日 **
13 //**<联系方式>:superyongzhe@163.com **
14 //*************************************************************************************************
15 //*************************************************************************************************
16
17
18 //*************************************************************************************************
19 //* *
20 //* ******************************头文件及宏定义************************** *
21 //* *
22 //*************************************************************************************************
23 #include "includes.h"
24
25 #define TIME0H 0xFC
26 #define TIME0L 0x18 //定时器0溢出时间:5ms
27
28 #define TIME1H 0x44
29 #define TIME1L 0x80 //定时器1溢出时间:48ms
30
31
32 //*************************************************************************************************
33 //* *
34 //* ********************************全局变量****************************** *
35 //* *
36 //*************************************************************************************************
37
38 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器0定时刷新LED计数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
39 unsigned long ul_Number=0; //LCD实时显示数字。
40
41 unsigned char uca_ShowCustom[6]={0x88,0x83,0xC6,0xA1,0x86,0x84};
42 //存放自定义显示字符。
43
44 unsigned char uc_DisCount=1; //LCD时事刷新计数。
45
46 bit b_ShowMode=0; //显示模式标志位。
47 //0--数字模式,将要显示的数字赋给ul_Number便可时事显示数值,
48 // 默认为数字模式;
49 //1--自定义模式,该模式下自定义字符显示。
50
51 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1计数刷新定时(计时模式)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
52 unsigned char uc_TimeCount=1; //定时器1定时计数。
53
54 bit b_ClockStart=0; //定时器1显示计数标志位。
C51 COMPILER V8.05a MAIN 08/07/2007 14:58:33 PAGE 2
55
56 extern bit b_ClockOppose; //TimeOppose.c
57
58 extern unsigned long ul_ClockOppose;
59
60
61 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
62
63 bit b_KeyShock=0; //键盘防抖动标志位。
64 //当按键中断产生时,首先判断此位。
65 //0--执行键盘扫描及键码处理程序;1--不执行。
66
67 bit b_KillShock=0; //防抖标志清除位:0--不清除;1--清除。
68
69 unsigned char uc_KillCount=1; //抖动标志清除计数,使用定时器1。
70
71
72 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<LCD闪烁显示报告>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
73 bit b_LCDClean=0; //通过设置b_LCDClean为1便可启动延时清空LCD显示。
74
75 unsigned char uc_CleanCount=1; //延迟时间可在T1中断中设定。
76
77
78 unsigned char uc_ReportSymbol;
79
80 bit b_ReportFlash=0;
81
82 unsigned char uca_FlashBlank[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
83
84
85 //*************************************************************************************************
86 //* *
87 //* ********************************主函数****************************** *
88 //* *
89 //*************************************************************************************************
90 void main()
91 {
92 1 P2=0x0F; //初始化键盘接口。
93 1
94 1 TMOD=0x11; //定时器0:模式一;定时器0:模式一.
95 1
96 1
97 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器0,用于LCD刷新>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
98 1 TH0=TIME0H;
99 1 TL0=TIME0L;
100 1 TR0=1; //开启定时器0
101 1 ET0=1; //开定时器0中断
102 1
103 1
104 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1,用于1s计时 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
105 1 TH1=TIME1H;
106 1 TL1=TIME1L;
107 1 TR1=1; //开启定时器1
108 1 ET1=1; //开定时器1中断
109 1
110 1
111 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<外部中断0,用于执行键盘扫描和键处理程序>>>>>>>>>>>>>>>>>>>>>>>>>>>
112 1 IT0=1; //外部中断0,中断方式:下降沿
113 1 EX0=1; //开启外部中断0
114 1
115 1 PT0=1; //把定时器0溢出中断设为高优先级。
116 1
C51 COMPILER V8.05a MAIN 08/07/2007 14:58:33 PAGE 3
117 1 EA=1; //开启总中断
118 1
119 1 while(1);
120 1 }
121
122
123
124 //*************************************************************************************************
125 //* *
126 //* ***************************外部中断0,调用键盘扫描程序************************* *
127 //* *
128 //*************************************************************************************************
129 void vINT0(void) interrupt 0
130 {
131 1 EX0=0; //在键扫描处理时,关闭外部中断0,防抖动。
132 1
133 1 if(b_KeyShock==0)
134 1 {
135 2 vKeyProcess(ucKeyScan()); //当判断有按键按下时,扫描键盘,并把扫描结果进行处理。
136 2 b_KeyShock=1; //设置防抖动标志。
137 2 }
138 1 else b_KeyShock=0; //如果有抖动则不执行键扫描,恢复防抖动标志。
139 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -