⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calculator.c

📁 简易计算器
💻 C
字号:
//*************************************************************************************************
//*************************************************************************************************
//**<程序名>:计算器处理主程序,根据计算器的输入状态分派不同的函数对按键进行处理。			 	 **
//**<功能>:当b_WorkMode=0是,若有键按下则调用此函数对键码进行处理。   							 **
//*************************************************************************************************
//*************************************************************************************************


//*************************************************************************************************
//*																								  *
//*			 ******************************头文件及宏定义**************************				  *
//*																								  *
//*************************************************************************************************
#include "CalReady.h"


//*************************************************************************************************
//*																								  *
//*			  ********************************全局变量******************************			  *
//*																								  *
//*************************************************************************************************
extern unsigned long ul_Number;			 //LCE显示数据,LCD实时显示该数字。

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<工作模式(默认为计算器模式)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
extern bit b_WorkMode;					 //0--计算器模式;
										 //1--计时模式。
										 //定义在KeyProcess.c中。
unsigned char uc_ModeChange=0;

extern bit b_LCDClean;

extern unsigned char uc_ReportSymbol;


unsigned long ul_NumberOne=0;			 //第一个数
unsigned long ul_NumberTwo=0;			 //第二个数
unsigned char uc_Operator=0;			 //运算符
unsigned long ul_Result=0;				 //运算结果
unsigned char uc_NumPointer=1;			 //计算状态

//*************************************************************************************************
//*																								  *
//*		  *******************************计算器处理主函数******************************			  *
//*																								  *
//*************************************************************************************************




void vCalculator(unsigned char ucKeyCode)
{
	if(ucKeyCode==41)			 					//判断按键是不是'NO/C'。
		{
			if(uc_NumPointer==1)					//如果是‘NO/C’键则判断手机否是状态一。
				{
					if(uc_ModeChange==2)			//如果是状态一则看uc_ModeChange是不是2。
						{
							uc_ModeChange=0;		//如果是2则计时器模式。
							b_WorkMode=1;

							uc_ReportSymbol=3;		//闪烁显示:-CHAG-1。表明正在切换状态。
							b_LCDClean=1;
						}
					else
						{
							uc_ModeChange++;		//如果uc_ModeChange不是2则加一。
							ul_NumberOne=0;			//清除所有数据,将所有数据恢复到状态一。
							ul_NumberTwo=0;
							ul_Number=0;			
							uc_NumPointer=1;
						}
				}
			else
				{
				ul_NumberOne=0;						//清除所有数据,将所有数据恢复到状态一。
				ul_NumberTwo=0;
				ul_Number=0;			
				uc_NumPointer=1;
			}
		}
	else
		{							   				//如果不是“NO/C”键,首先将uc_ModeChange清零。
		uc_ModeChange=0;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<根据不同状态分派不同的键处理函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		switch(uc_NumPointer)
			{
			case 1:	
					vCalReadyOne(ucKeyCode);			   //进入状态一。
					break;
			case 2:
					vCalReadyTwo(ucKeyCode);			   //进入状态二。
					break;
			case 3:
					vCalReadyThree(ucKeyCode);			   //进入状态三。
					break;

			default:break;
			}
		}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -