📄 ad.c
字号:
#include "config.h"
#include "data.h"
#include "pin.h"
#include "function.h"
#include <math.h>
/*
*********************************************************************************************************
** 函数名称 :IRQ_Timer0()
** 函数功能 :定时器0中断服务程序,取反LED9控制口。
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************
*/
unsigned short dac_cnt=0;
unsigned short turn_flags=0;
capmdata timer0_getdata;
void Sdelay(void){
unsigned int t;
for(t=0;t<500;t++);
}
void __irq IRQ_Timer0 (void)
{
int ADC_Data,point;
T0IR = 0x01; /* 清除中断标志 */
VICVectAddr = 0x00;
point=dac_cnt%1024; /* 通知VIC中断处理结束 */
DACR=(sintable[point] << 6);
ADC_Data = AD0DR; // 读取ADC结果
if(turn_flags==ZX_TURN){
timer0_getdata.Zx_data[point] = (ADC_Data >> 6) & 0x3ff;
timer0_getdata.Zx_Ref_data_point=point; //记录基准信号相位
}else if(turn_flags==R0_TURN){
timer0_getdata.R0_data[point] = (ADC_Data >> 6) & 0x3ff;
timer0_getdata.R0_Ref_data_point=point; //记录基准信号相位
}
if(dac_cnt<20478)
dac_cnt++;
else{
dac_cnt=0;
if(turn_flags==WAIT_TURN)
turn_flags=RUN_TURN;
else turn_flags=FINISH_TURN;
}
if(dac_cnt==1 && (turn_flags!=FINISH_TURN)){
SW_VOL_ZX;
turn_flags=ZX_TURN;
}else if(dac_cnt==10239 && (turn_flags!=FINISH_TURN)){
SW_VOL_R0;
turn_flags=R0_TURN;
}
}
/*读写万用表IC max134cpl OK!*/
int dmmTohost(int addr){
int temp;
IO0DIR &= ~(DMM_D0|DMM_D1|DMM_D2|DMM_D3);
if(addr&1) IO1SET = DMM_A0;
else IO1CLR = DMM_A0;
if(addr&2) IO0SET = DMM_A1;
else IO0CLR = DMM_A1;
if(addr&4) IO0SET = DMM_A2;
else IO0CLR = DMM_A2;
Sdelay();
IO0CLR = DMM_READ;
Sdelay();
temp=IO0PIN;
temp&=(DMM_D0|DMM_D1|DMM_D2|DMM_D3);
IO0SET = DMM_READ;
return temp>>17;
}
void hostTodmm(int addr, int data){
if(addr&1) IO1SET = DMM_A0;
else IO1CLR = DMM_A0;
if(addr&2) IO0SET = DMM_A1;
else IO0CLR = DMM_A1;
if(addr&4) IO0SET = DMM_A2;
else IO0CLR = DMM_A2;
Sdelay();
IO0DIR |= (DMM_D0|DMM_D1|DMM_D2|DMM_D3);
if(data&1) IO0SET = DMM_D0;
else IO0CLR = DMM_D0;
if(data&2) IO0SET = DMM_D1;
else IO0CLR = DMM_D1;
if(data&4) IO0SET = DMM_D2;
else IO0CLR = DMM_D2;
if(data&8) IO0SET = DMM_D3;
else IO0CLR = DMM_D3;
Sdelay();
IO1CLR = DMM_WRITE;
Sdelay();
IO1SET = DMM_WRITE;
Sdelay();
IO0DIR &= ~(DMM_D0|DMM_D1|DMM_D2|DMM_D3);
}
/////////////////////////////////////////////////////////
//file end//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -