📄 main.c
字号:
//===============================================================
//
// The information contained herein is the exclusive property of
// Sunplus Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
//
// (C) COPYRIGHT 2004 SUNPLUS TECHNOLOGY CO.
// ALL RIGHTS RESERVED
//
// The entire notice above must be reproduced on all authorized copies.
//
//==============================================================
//============================================================
// 工程名称:20HzOut.spj
// 作者: xinqiang (email: xinqiang@sunnorth.com.cn)
// 联系方式:010-62981668-2916
// 适应芯片: SPCE061A
// 实现功能: 超声波测距模组的应用范例程序,适合短距离测距使用
//
// 系统要求: PC with CPU 233MHz,128MB RAM,
// SUNPLUS u'nSP IDE 1.8.4(or later)
//
// 涉及的库:(a) sacmv26.lib
// (b)
//
// 组成文件:
// main.c/IntDocument.c/Speech.c/UserFunction.c
// DataOS_A.asm/hardware.asm/Key.asm
// hardware.h/hardware.inc
//
// 当前版本: V1.4
// 日期: 2005-12-19
//
// 参考文件:
// 维护记录: V1.0 2004-7-24
// V1.2 2005-6-5
// V1.3 2005-8-9
//--------------------------------------------------------------------------------------------------------
// Version YYYY-MM-DD-INDEX Modified By Description
//
//===============================================
//========================================================================================
//文件名称: main.c
//描述: 超声波测距Demo的主程序,本程序用于模配合模组中测距模式选择为短距测量时用
// 即J1 COMLINE跳线接在LOW 选择模组工作在短距测距模式下
// IOB2--BACK_PLUS IOB2口为外部中断输入口,检测回波脉冲
// IOB4--PLUS_EN1 IOB4设为输出口,以控制模组发射40KHz方波
//
// 模组上J2跳线接上
// J9 Power接口的跳线接在5V一端
//========================================================================================
#define P_INT_Ctrl_New (volatile unsigned int *)0x702d
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
#define M_KEY_ENTER 0x0001 //按键 进行一次测量
//for Key
extern void F_Key_Scan_Initial(void);
extern void F_Key_Scan_ServiceLoop(void);
extern unsigned int SP_GetCh(void);
//......end
//for Measure
extern void InitMeasure(void);
extern unsigned int BeginMeasure(void);
extern void ErrorOS(void);
//..end
extern void Speech_Result(unsigned int uiResult);
int main()
{
unsigned int uiKey_Data;
unsigned int Back_Data; //测量返回数值
__asm("INT OFF");
InitMeasure(); //测量初始化
F_Key_Scan_Initial(); //键盘初始化
uiKey_Data = 0;
//主循环 等待中断
while(1)
{
uiKey_Data = SP_GetCh(); //获取键值,直接返回,无延时
switch(uiKey_Data) //扫键,根据按键值进入不同的操作
{
case M_KEY_ENTER:
Back_Data = BeginMeasure();
if(Back_Data==0) //返回值为零时则进入出错处理
{
ErrorOS();
}
else
{ //测回正确数据,播报
Speech_Result(Back_Data);
}
break; //
case 2: break;
case 3: break;
default: break;
}
F_Key_Scan_ServiceLoop(); //后台扫键的循环服务程序
*P_Watchdog_Clear = 0x0001; //清看门狗
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -