📄 007.cpp
字号:
{
int i;
unsigned int Data;
Data = 0;
for(i=0;i<8;i++)
{
Set_DQ(1);
Delay_T(1);
Clr_DQ(1);
Delay_T(2);
Set_DQ(0); //切为输入
Data = Data >> 1;
if(Read_DQ()>0)
Data |= 0x0080;
Delay_T(31);
}
return(Data);
}
//========================================================
// 语法格式: void Write_18B20_Byte(unsigned int Data)
// 实现功能: 写18B20
// 参数: 要写的字节
// 返回值: 无
//========================================================
void Write_18B20_Byte(unsigned int Data)
{
int i;
Set_DQ(1);
Delay_T(1);
for(i=0;i<8;i++)
{
Clr_DQ(1);
Delay_T(1);
if((Data&0x0001)>0)
Set_DQ(1);
Data = Data >> 1;
Delay_T(31);
Set_DQ(1);
Delay_T(1);
}
}
//========================================================
// 语法格式: int Init_18B20(void)
// 实现功能: 初始化18B20
// 参数: 要写的字节
// 返回值: 无
//========================================================
int Init_18B20(void)
{
int flag = 0;
Set_DQ(1);
Delay_T(1);
Clr_DQ(1);
Delay_T(250);
Set_DQ(0);
Delay_T(31);
if(Read_DQ()>0)
flag = 1;
else
{
flag = 0;
Delay_T(220);
}
Set_DQ(1);
return(flag);
}
//========================================================
// 语法格式: float Read_Temp(void)
// 实现功能: 读取温度
// 参数: 无
// 返回值: 温度值
//========================================================
float Read_Temp(void)
{
int i;
unsigned int uiT,uiSystem_Clock;
unsigned int Data[10];
float Temper_data;
uiSystem_Clock = *P_SystemClock; //将当前的系统时钟保存起来
*P_SystemClock = 0x0018; //初始化,调整系统时钟24.576MHz/1,强振模式
Set_DQ(1);
while(Init_18B20()>0)
*P_Watchdog_Clear = 0x0001;
Delay_T(40);
Write_18B20_Byte(0xcc);
Write_18B20_Byte(0x44);
for(i=0;i<26;i++)
Delay_T(15000); //长时间延时
while(Init_18B20()>0)
*P_Watchdog_Clear = 0x0001;
Write_18B20_Byte(0xcc);
Write_18B20_Byte(0xbe);
for(i=0;i<8;i++) //数据读取
Data[i] = Read_18B20_Byte();
i = Data[1]; //温度的高字节
i = i << 8;
uiT = Data[0]; //温度的低字节
uiT |= i; //高低字节组和,有效位数11位
Temper_data = uiT*0.0625;
//Init_18B20();
*P_SystemClock = uiSystem_Clock; //恢复系统时钟
return Temper_data;
}
//=============================================================
// 函数名称: unsigned int Get_key(void)
// 功能描述: 扫描键盘1X8
// 入口参数: 无
// 出口参数: 无
// 硬件连接: IOA8~15连接COL1~8,ROW接高电平
//=============================================================
#include "SPCE061V004.h"
// 延时程序
void Delay(unsigned int timers)
{
unsigned int i;
for(i=0;i<timers;i++)
{
__asm("nop");
}
}
void Delay_ok(unsigned int times,unsigned int count)
{
unsigned int i,uiSystem_Clock;
uiSystem_Clock = *P_SystemClock; //将当前的系统时钟保存起来
*P_SystemClock = 0x000b; //将系统时钟设置为24.576MHz,分频比为8
for(i=0;i<times;i++)
{
Delay(count);
*P_Watchdog_Clear = 0x0001;
}
*P_SystemClock = uiSystem_Clock; //恢复系统时钟
}
unsigned int Get_key(void)
{
unsigned int uikey;
Delay_ok(1,1000); //调用延时程序,延时12.4ms
uikey = *P_IOA_Data&0xff00; //获取A口输入的键值
while(*P_IOA_Data&0xff00)*P_Watchdog_Clear = 0x0001;//等待按键提起
return uikey; //返回键值
}
//========================================================================
// 文件名称: IRQ.c
// 功能描述: IRQ中断服务程序
// 维护记录: 2006-04-13 V2.0
//========================================================================
#include "SPCE061A.h"
#include "SPCE061V004.h"
#include "ultrasonic_App.h"
void IRQ3(void)__attribute__((ISR));
void IRQ3(void)
{
if(*P_INT_Ctrl&0x0100)
{
*P_INT_Clear = 0x0100; //
EXT1_IRQ_ult(); //调用超声波测距的外部中断服务程序
}
else if(*P_INT_Ctrl&0x0020)
*P_INT_Clear = 0x0020;
else *P_INT_Clear = 0x0080;
}
//=======================================================================
// 文件名称: isr.asm
// 功能描述: FIQ中断服务程序,用于语音播放的中断服务
// 维护记录: 2006-04-13 v2.0
//=======================================================================
.include SPCE061A.inc
.include S480.inc
.text
//=========================================================================
// 汇编格式: _FIQ
// C格式: 无
// 实现功能: FIQ中断服务程序
// 入口参数: 无
// 出口参数: 无
// 破坏寄存器:无
//==========================================================================
.public _FIQ;
_FIQ:
PUSH R1,R5 to [sp];
L_FIQ_TimerA:
call F_FIQ_Service_SACM_S480;
R1 = 0x2000;
[P_INT_Clear] = R1;
pop R1,R5 from [sp];
RETI; //.......end
// Resource Table
// Created by IDE, Do not modify this table
.TEXT
.public _RES_Table;
.external __RES_0_72K_sa
.public _RES_0_72K_SA;
.external __RES_0_72K_ea;
.public _RES_0_72K_EA;
.external __RES_1_72K_sa
.public _RES_1_72K_SA;
.external __RES_1_72K_ea;
.public _RES_1_72K_EA;
.external __RES_2_72K_sa
.public _RES_2_72K_SA;
.external __RES_2_72K_ea;
.public _RES_2_72K_EA;
.external __RES_3_72K_sa
.public _RES_3_72K_SA;
.external __RES_3_72K_ea;
.public _RES_3_72K_EA;
.external __RES_4_72K_sa
.public _RES_4_72K_SA;
.external __RES_4_72K_ea;
.public _RES_4_72K_EA;
.external __RES_5_72K_sa
.public _RES_5_72K_SA;
.external __RES_5_72K_ea;
.public _RES_5_72K_EA;
.external __RES_6_72K_sa
.public _RES_6_72K_SA;
.external __RES_6_72K_ea;
.public _RES_6_72K_EA;
.external __RES_7_72K_sa
.public _RES_7_72K_SA;
.external __RES_7_72K_ea;
.public _RES_7_72K_EA;
.external __RES_8_72K_sa
.public _RES_8_72K_SA;
.external __RES_8_72K_ea;
.public _RES_8_72K_EA;
.external __RES_9_72K_sa
.public _RES_9_72K_SA;
.external __RES_9_72K_ea;
.public _RES_9_72K_EA;
.external __RES_10_72K_sa
.public _RES_10_72K_SA;
.external __RES_10_72K_ea;
.public _RES_10_72K_EA;
.external __RES_DOT_72K_sa
.public _RES_DOT_72K_SA;
.external __RES_DOT_72K_ea;
.public _RES_DOT_72K_EA;
.external __RES_M_72K_sa
.public _RES_M_72K_SA;
.external __RES_M_72K_ea;
.public _RES_M_72K_EA;
.external __RES_SHESHIDU_72K_sa
.public _RES_SHESHIDU_72K_SA;
.external __RES_SHESHIDU_72K_ea;
.public _RES_SHESHIDU_72K_EA;
.external __RES_ERROR_72K_sa
.public _RES_ERROR_72K_SA;
.external __RES_ERROR_72K_ea;
.public _RES_ERROR_72K_EA;
.external __RES_RESULT_72K_sa
.public _RES_RESULT_72K_SA;
.external __RES_RESULT_72K_ea;
.public _RES_RESULT_72K_EA;
_RES_Table:
_RES_0_72K_SA:
.DW offset __RES_0_72K_sa,seg __RES_0_72K_sa;
_RES_0_72K_EA:
.DW offset __RES_0_72K_ea,seg __RES_0_72K_ea;
_RES_1_72K_SA:
.DW offset __RES_1_72K_sa,seg __RES_1_72K_sa;
_RES_1_72K_EA:
.DW offset __RES_1_72K_ea,seg __RES_1_72K_ea;
_RES_2_72K_SA:
.DW offset __RES_2_72K_sa,seg __RES_2_72K_sa;
_RES_2_72K_EA:
.DW offset __RES_2_72K_ea,seg __RES_2_72K_ea;
_RES_3_72K_SA:
.DW offset __RES_3_72K_sa,seg __RES_3_72K_sa;
_RES_3_72K_EA:
.DW offset __RES_3_72K_ea,seg __RES_3_72K_ea;
_RES_4_72K_SA:
.DW offset __RES_4_72K_sa,seg __RES_4_72K_sa;
_RES_4_72K_EA:
.DW offset __RES_4_72K_ea,seg __RES_4_72K_ea;
_RES_5_72K_SA:
.DW offset __RES_5_72K_sa,seg __RES_5_72K_sa;
_RES_5_72K_EA:
.DW offset __RES_5_72K_ea,seg __RES_5_72K_ea;
_RES_6_72K_SA:
.DW offset __RES_6_72K_sa,seg __RES_6_72K_sa;
_RES_6_72K_EA:
.DW offset __RES_6_72K_ea,seg __RES_6_72K_ea;
_RES_7_72K_SA:
.DW offset __RES_7_72K_sa,seg __RES_7_72K_sa;
_RES_7_72K_EA:
.DW offset __RES_7_72K_ea,seg __RES_7_72K_ea;
_RES_8_72K_SA:
.DW offset __RES_8_72K_sa,seg __RES_8_72K_sa;
_RES_8_72K_EA:
.DW offset __RES_8_72K_ea,seg __RES_8_72K_ea;
_RES_9_72K_SA:
.DW offset __RES_9_72K_sa,seg __RES_9_72K_sa;
_RES_9_72K_EA:
.DW offset __RES_9_72K_ea,seg __RES_9_72K_ea;
_RES_10_72K_SA:
.DW offset __RES_10_72K_sa,seg __RES_10_72K_sa;
_RES_10_72K_EA:
.DW offset __RES_10_72K_ea,seg __RES_10_72K_ea;
_RES_DOT_72K_SA:
.DW offset __RES_DOT_72K_sa,seg __RES_DOT_72K_sa;
_RES_DOT_72K_EA:
.DW offset __RES_DOT_72K_ea,seg __RES_DOT_72K_ea;
_RES_M_72K_SA:
.DW offset __RES_M_72K_sa,seg __RES_M_72K_sa;
_RES_M_72K_EA:
.DW offset __RES_M_72K_ea,seg __RES_M_72K_ea;
_RES_SHESHIDU_72K_SA:
.DW offset __RES_SHESHIDU_72K_sa,seg __RES_SHESHIDU_72K_sa;
_RES_SHESHIDU_72K_EA:
.DW offset __RES_SHESHIDU_72K_ea,seg __RES_SHESHIDU_72K_ea;
_RES_ERROR_72K_SA:
.DW offset __RES_ERROR_72K_sa,seg __RES_ERROR_72K_sa;
_RES_ERROR_72K_EA:
.DW offset __RES_ERROR_72K_ea,seg __RES_ERROR_72K_ea;
_RES_RESULT_72K_SA:
.DW offset __RES_RESULT_72K_sa,seg __RES_RESULT_72K_sa;
_RES_RESULT_72K_EA:
.DW offset __RES_RESULT_72K_ea,seg __RES_RESULT_72K_ea;
// End Table
.PUBLIC T_SACM_S480_SpeechTable
T_SACM_S480_SpeechTable:
.DW _RES_0_72K_SA
.DW _RES_1_72K_SA
.DW _RES_2_72K_SA
.DW _RES_3_72K_SA
.DW _RES_4_72K_SA
.DW _RES_5_72K_SA
.DW _RES_6_72K_SA
.DW _RES_7_72K_SA
.DW _RES_8_72K_SA
.DW _RES_9_72K_SA
.DW _RES_10_72K_SA //"十"
.DW _RES_DOT_72K_SA //点11
.DW _RES_M_72K_SA //米12
.DW _RES_SHESHIDU_72K_SA //"摄氏度"13
.DW _RES_RESULT_72K_SA //"测量结果为"14
.DW _RES_ERROR_72K_SA //"出错了"15
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -