?? 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 + -