?? main.lst
字號(hào):
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 //**<程序名>:多功能計(jì)算器4.0正式版 **
4 //** **
5 //**<功能>:可以進(jìn)行6位數(shù)以內(nèi)正整數(shù)的加減乘除運(yùn)算,以及計(jì)時(shí)器和自定義倒計(jì)時(shí)功能 **
6 //** **
7 //**<版本說(shuō)明>:這是最后一版,主要增加了自定義倒計(jì)時(shí)功能,增加了幾個(gè)狀態(tài)顯示,消除了部分bug。 **
8 //** **
9 //**<主要改動(dòng)>:新增報(bào)告字符,實(shí)現(xiàn)倒計(jì)時(shí)功能。 **
10 //** **
11 //**<作者>:程沛 **
12 //**<完成時(shí)間>:2007年7月30日 **
13 //**<聯(lián)系方式>: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 //定時(shí)器0溢出時(shí)間:5ms
27
28 #define TIME1H 0x44
29 #define TIME1L 0x80 //定時(shí)器1溢出時(shí)間:48ms
30
31
32 //*************************************************************************************************
33 //* *
34 //* ********************************全局變量****************************** *
35 //* *
36 //*************************************************************************************************
37
38 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定時(shí)器0定時(shí)刷新LED計(jì)數(shù)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
39 unsigned long ul_Number=0; //LCD實(shí)時(shí)顯示數(shù)字。
40
41 unsigned char uca_ShowCustom[6]={0x88,0x83,0xC6,0xA1,0x86,0x84};
42 //存放自定義顯示字符。
43
44 unsigned char uc_DisCount=1; //LCD時(shí)事刷新計(jì)數(shù)。
45
46 bit b_ShowMode=0; //顯示模式標(biāo)志位。
47 //0--數(shù)字模式,將要顯示的數(shù)字賦給ul_Number便可時(shí)事顯示數(shù)值,
48 // 默認(rèn)為數(shù)字模式;
49 //1--自定義模式,該模式下自定義字符顯示。
50
51 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定時(shí)器1計(jì)數(shù)刷新定時(shí)(計(jì)時(shí)模式)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
52 unsigned char uc_TimeCount=1; //定時(shí)器1定時(shí)計(jì)數(shù)。
53
54 bit b_ClockStart=0; //定時(shí)器1顯示計(jì)數(shù)標(biāo)志位。
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 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖動(dòng)標(biāo)志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
62
63 bit b_KeyShock=0; //鍵盤(pán)防抖動(dòng)標(biāo)志位。
64 //當(dāng)按鍵中斷產(chǎn)生時(shí),首先判斷此位。
65 //0--執(zhí)行鍵盤(pán)掃描及鍵碼處理程序;1--不執(zhí)行。
66
67 bit b_KillShock=0; //防抖標(biāo)志清除位:0--不清除;1--清除。
68
69 unsigned char uc_KillCount=1; //抖動(dòng)標(biāo)志清除計(jì)數(shù),使用定時(shí)器1。
70
71
72 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<LCD閃爍顯示報(bào)告>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
73 bit b_LCDClean=0; //通過(guò)設(shè)置b_LCDClean為1便可啟動(dòng)延時(shí)清空LCD顯示。
74
75 unsigned char uc_CleanCount=1; //延遲時(shí)間可在T1中斷中設(shè)定。
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 //* ********************************主函數(shù)****************************** *
88 //* *
89 //*************************************************************************************************
90 void main()
91 {
92 1 P2=0x0F; //初始化鍵盤(pán)接口。
93 1
94 1 TMOD=0x11; //定時(shí)器0:模式一;定時(shí)器0:模式一.
95 1
96 1
97 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定時(shí)器0,用于LCD刷新>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
98 1 TH0=TIME0H;
99 1 TL0=TIME0L;
100 1 TR0=1; //開(kāi)啟定時(shí)器0
101 1 ET0=1; //開(kāi)定時(shí)器0中斷
102 1
103 1
104 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定時(shí)器1,用于1s計(jì)時(shí) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
105 1 TH1=TIME1H;
106 1 TL1=TIME1L;
107 1 TR1=1; //開(kāi)啟定時(shí)器1
108 1 ET1=1; //開(kāi)定時(shí)器1中斷
109 1
110 1
111 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<外部中斷0,用于執(zhí)行鍵盤(pán)掃描和鍵處理程序>>>>>>>>>>>>>>>>>>>>>>>>>>>
112 1 IT0=1; //外部中斷0,中斷方式:下降沿
113 1 EX0=1; //開(kāi)啟外部中斷0
114 1
115 1 PT0=1; //把定時(shí)器0溢出中斷設(shè)為高優(yōu)先級(jí)。
116 1
C51 COMPILER V8.05a MAIN 08/07/2007 14:58:33 PAGE 3
117 1 EA=1; //開(kāi)啟總中斷
118 1
119 1 while(1);
120 1 }
121
122
123
124 //*************************************************************************************************
125 //* *
126 //* ***************************外部中斷0,調(diào)用鍵盤(pán)掃描程序************************* *
127 //* *
128 //*************************************************************************************************
129 void vINT0(void) interrupt 0
130 {
131 1 EX0=0; //在鍵掃描處理時(shí),關(guān)閉外部中斷0,防抖動(dòng)。
132 1
133 1 if(b_KeyShock==0)
134 1 {
135 2 vKeyProcess(ucKeyScan()); //當(dāng)判斷有按鍵按下時(shí),掃描鍵盤(pán),并把掃描結(jié)果進(jìn)行處理。
136 2 b_KeyShock=1; //設(shè)置防抖動(dòng)標(biāo)志。
137 2 }
138 1 else b_KeyShock=0; //如果有抖動(dòng)則不執(zhí)行鍵掃描,恢復(fù)防抖動(dòng)標(biāo)志。
139 1
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -