📄 main.c
字号:
/*
****************************************************
****************************************************
*/
#include <reg52.H>
#include "Typedef.H"
#include "UserDef.H"
#include "Keypad.H"
#include "Disp.H"
/* 全局变量 */
bit bDispRef = FALSE; //信号灯:显示更新时间到
bit bKeyScan = FALSE; //信号灯:键盘扫描时间到
/* 函数 */
void KeyboardDeal(void);
/***************************************
****************************************/
void main(void)
{
TMOD = 0x11;
TH0 = (unsigned char)(KTDLY>>8);
TL0 = (unsigned char)(KTDLY);
TR0 = 1;
ET0 = 1;
EA = 1;
DispCls();
DispIntRight(0); //显示效果示范
while(TRUE)
{
/* 键盘 */
if (bKeyScan == TRUE)
{
bKeyScan = FALSE;
KeyboardDeal();
}
/* 显示扫描刷新 */
if (bDispRef == TRUE)
{
bDispRef = FALSE;
DispRef();
}
}
}
/*************************************
定时器中断程序
**************************************/
void int_t0(void) interrupt 1 using 1
{
static int cnt = 0;
TH0 = (unsigned char)(KTDLY>>8);
TL0 = (unsigned char)(KTDLY);
cnt ++;
/* 键盘扫描信号灯 */
if ((cnt % T_KEYSCAN) == 0)
{
bKeyScan = TRUE;
}
/* 显示扫描信号灯 */
if ((cnt % T_DISPREF) == 0)
{
bDispRef = TRUE;
}
}
/*************************************
键盘处理
**************************************/
void KeyboardDeal(void)
{
static INT8U KeyVal = VK_NULL; //按键值
//数据类型改为浮点数
// static INT32U dispval = 0;
static float dispval = 0;
INT8U n;
n = Keypad_GetKey();
if (n != KeyVal)
{
KeyVal = n;
if (n != VK_NULL)
{
if ((KeyVal>=VK_0)&&(KeyVal<=VK_9))
{
dispval *= 10;
dispval += KeyVal - VK_0;
}
else if (KeyVal == VK_CLR)
{
DispCls();
dispval = 0;
}
//==============================<< 修改2 >>=====================================================================
// 补充对加、减、乘、除按键的处理,分别对现有值加2,减2,乘2、除2
//==============================================================================================================
else if (KeyVal == VK_ADD)
{
dispval += 2;
}
else if (KeyVal == VK_SUB)
{
dispval -= 2;
}
else if (KeyVal == VK_MUL)
{
dispval *= 2;
}
else if (KeyVal == VK_DIV)
{
dispval /= 2;
}
//==============================<< 修改3 >>=====================================================================
// 改用DispFloat函数进行显示,并同时修改程序中其他相关部分,使其能够支持浮点数显示
// (共2处修改,1.下面一行,2.本函数开头处dispval的数据类型定义)
//==============================================================================================================
//DispIntRight(dispval);
DispFloat(dispval);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -