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

📄 007.cpp

📁 本系统利用凌阳SPCE061A单片机原理
💻 CPP
📖 第 1 页 / 共 3 页
字号:
{
	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 + -