📄 main.c
字号:
//======================================================
// The information contained herein is the exclusive property of
// Sunnnorth Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
// (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.
// ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorized copies.
//========================================================
//============================================================
// 工程名称: Taxi
// 功能描述: 实现现行出租车计价器的基本功能
// 涉及的库: CMacro.lib
// SACMV26e.lib
// 组成文件: main.c, ConstValues.c, ConstValues.h,
// Cal.c, Cal.h, Cost.c, Cost.h, Distance.c, Distance.h,
// InterFace.c, InterFace.h, PicResource.c, PicResource.h, Speed.c, Speed.h
// DataOSforLCD.asm, SPLC501Driver_IO.asm, SPLC501User.c, SPLC501User.h, SPLC501Driver_IO.inc
// DrvKEY.c, DrvKey.h, KEY.c, KEY.h
// hardware.asm, PlaySnd.c, PlaySnd.h, PlayService.c, PlayService.h
// isr.asm, SetInterruptStatus.asm, SetInterruptStatus.h, spce061a.h, spce061a.inc
// FloatToBin.asm, FloatToBin.h, TypeOS.h
// 硬件连接:
// SPLC501液晶模组 61板
// D0 ~ D7 <--> IOA8 ~ IOA 15
// A0 <--> IOB3
// R/W <--> IOB4
// EP <--> IOB5
//
// 将61板的IOB2与IOB9相连
// 维护记录: 2006-10-12 v1.0 by lijian
//===============================================
#include ".\KEY\Key.h"
#include "Cal.h"
#include "Cost.h"
#include "Speed.h"
#include "InterFace.h"
#include "PlayService.h"
#include "SetInterruptStatus.h"
#include "Distance.h"
#include "PlaySnd.h"
Status SysStatus; // 系统状态
// Status结构体在InterFace.h中定义
//=============================================================
// 语法格式: int main(void)
// 实现功能: 主函数
// 参数: 无
// 返回值: 无
//=============================================================
int main()
{
unsigned int Key, KeyType;
SysStatus = IDLE;
KeyScan_Init();
SetINTStatus(C_IRQ5_2Hz);
SetINTStatus(C_IRQ4_1KHz);
__asm("IRQ ON");
InterFace_Init(); // 初始化用户界面
InterFace_Normal(); // 显示常规界面
InterFace_UpdateStatus(SysStatus); // 显示当前系统状态(空车)
while(1)
{
Key = KeyScan_GetKey(&KeyType); // 按键扫描
switch(Key)
{
case C_StartStopKey:
if(C_SReleaseKeyState == KeyType)
{
if(IDLE == SysStatus)
{
SysStatus = RUN; // 如果是空车状态,则进入行驶状态
Cost_StartRunning(); // 启动计费
InterFace_UpdatePrice();
InterFace_UpdateStatus(SysStatus);// 更新显示
PlaySnd(Cal_GetHello(Cal_GetHour()) + VOICE_MORNING, NO_WAIT);
PlaySnd(VOICE_WELCOM, WAIT_OTHER_END); // 播放提示音
}
else if (RUN == SysStatus)
{
SysStatus = IDLE;
Cost_StopRunning(); // 如果是行驶状态,则停止计费
InterFace_UpdatePrice();
InterFace_UpdateStatus(SysStatus);
PlaySnd(VOICE_BYE1, NO_WAIT); // 播放提示音
PlayDistance(); // 播放行驶里程
PlaySnd(VOICE_BYE2, WAIT_OTHER_END);
PlayCost(); // 播放费用
PlaySnd(VOICE_BYE3, WAIT_OTHER_END);
}
}
break;
case C_ModeKey:
if(C_SReleaseKeyState == KeyType)
{
if(IDLE == SysStatus)
{
SysStatus = SYSSET; // 如果是空车状态,则进入日期时间设定模式
InterFace_UpdateStatus(SysStatus);
InterFace_SystemSet(); // 显示系统设定界面,并对日期时间进行设定
SysStatus = IDLE; // 设定结束,回到空车状态
InterFace_UpdateStatus(SysStatus);
}
else if(RUN == SysStatus)
{
Speed_Down(10);
}
}
break;
case C_SetKey:
if(C_SReleaseKeyState == KeyType)
{
if(IDLE == SysStatus)
{
Cost_ClearCost(); // 清除计费记录
InterFace_UpdateWaitTime(); // 更新显示
InterFace_UpdateDistance();
InterFace_UpdateCost();
InterFace_UpdateStatus(SysStatus);
}
else if(RUN == SysStatus)
{
Speed_Up(10);
}
}
break;
default:
break;
}
InterFace_UpdateTime(); // 更新时间显示
InterFace_TimeFlash(); // 秒闪烁,同时更新低速等待时间
if(RUN == SysStatus)
{
Cost_ServiceLoop(); // 计费服务程序(用于监测行驶速度)
InterFace_UpdateDistance(); // 实时显示行驶里程
InterFace_UpdatePrice();
InterFace_UpdateCost(); // 实时显示费用
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -