📄 adc.#1
字号:
//*********************************************************
// 项 目: 通用控制器-V1.0
// 文件名: Timer2.C
// 描 述: 定时器2中断服务程序
//*********************************************************
//===============================================
#include "main.h" //头文件
#include "Timer2.h"
#include "MFRC522.h"
#include "Adc.h"
//===============================================
//***********************************************
//变量定义
//***********************************************
UCHAR volatile Temp0,Temp;
UCHAR idata TempHead, TempTail;
UINT xdata Ttemp[TT_WIDTH];
extern UCHAR xdata tx_buf[TX_PLOAD_WIDTH];
//***********************************************
//函数开始
/***************************************
AD初始化
/***************************************/
void Adc0_Init(void)//
{
AMX0P = 0x09; //10H温度/09H:P1.0
AMX0N = 0x11; //单端,负端接地
ADC0CF = 0xf8; //转换时钟=SYSCLK/32,右对齐
ADC0CN = 0x80; //使能AD,ADC0BUSY置1启动转换
//-,-,-,-,REFSL,TEMPE,BIASE,REFBE
REF0CN = 0x0e; //
//启动转换获得初始温度值
}
/***************************************
温度值初始化
/***************************************/
/*void Temp_Init(void)//
{
UCHAR i;
UINT tt;
TempHead = 0;
TempTail = 0;
tt =Temp_Conver();
for(i=0;i<TT_WIDTH;i++)
Ttemp[i] = tt;
Temp0 = T_Compute();
}*/
/**************************************************
功能: 温度转换;
描述:温度转换取值存数组(循环);
/**************************************************/
Temp_Conver()
{
UINT tt;
AD0BUSY = 1;
while(AD0INT==0);
AD0INT = 0;
tt = ADC0H*256+ADC0L;
Ttemp[TempTail] = tt;
TempTail++;
if (TempTail>=TT_WIDTH)
//包长异常
{TempTail=0; } //重新开始
return (tt);
}
/**************************************************
功能: 温度值计算;
描述:
/**************************************************/
/*T_Compute()
{
UCHAR i,ta,tb;
UINT aa=0;
UINT kk=0;
ULONG Tempsum=0;
for (i=0;i<TT_WIDTH;i++)
Tempsum += Ttemp[i];
Tempsum = Tempsum/TT_WIDTH;
aa = (UINT)Tempsum;
kk = aa*10/32;
//kk = (aa*32/10-776)*10/29;
ta = (UCHAR)kk;
//
tb = ta/10; //
ta = ta-tb*10;
tb = tb<< 4;
tb = tb|ta;
return(tb);
}*/
/**************************************************
功能: 温度数据包发送转换;
描述:
/**************************************************/
Temp_Send()
{
//Temp = T_Compute();
if (Temp !=Temp0)
{
Temp0 = Temp;
tx_buf[0] = 0xAA; //包头
tx_buf[1] = 0x08; //包长度
tx_buf[2] = 0x81; //目标地址
tx_buf[3] = 0x92; //源地址
tx_buf[4] = 0x03; //'03',前端事件包
tx_buf[5] = 0x54; //温度标示
tx_buf[6] = Temp0; //温度值(十进制)
tx_buf[7] = 0XBB; //包尾
//
// TX_Mode(); //发送温度包到无线口
//tx_to_com(); //发送事件包到本板COM口
//SPI_RW_Reg(WRITE_REG+STATUS,SPI_Read(READ_REG+STATUS)); // 清 TX_DS
Delay1ms(200);
}
}
//********************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -