📄 main.c
字号:
#include <spce061a.h>
extern void write(int,int);
extern void delay(int);
void AD_inti()
{
*P_IOA_Dir|=0xf000; //A0-A11为12位数据输入 A12-A15为CE.R/C.A0.CS
*P_IOA_Dir&=0xf000; //ce为片选信号
*P_IOA_Attrib|=0xf000; //
*P_IOA_Attrib&=0xf000; //
*P_IOA_Data=0x0000;
*P_IOB_Dir|=0x7fff; //B15为STS 上拉方式 B14为12/8
*P_IOB_Dir&=0x7fff;
*P_IOB_Attrib|=0x7fff;
*P_IOB_Attrib&=0x7fff;
*P_IOB_Data|=0x8000;
}
void TEP_inti(void)
{
*P_IOA_Dir=0xf000; //A0-A11为12位数据输入 A12-A15为CE.R/C.A0.CS
*P_IOA_Attrib=0xf000;
*P_IOA_Data=0x0000;
*P_IOB_Dir&=0x7fff; //B15为STS 上拉方式 B14为12/8
*P_IOB_Dir|=0x4000;
*P_IOB_Attrib&=0x7fff;
*P_IOB_Attrib|=0x4000;
*P_IOB_Data|=0x8000;
*P_IOB_Data&=0xbfff;
}
void converter()
{
*P_IOA_Data&=0xefff; //关闭转换 CE=0
*P_IOA_Data&=0x7fff; //片选 A15置0 CS=0
*P_IOA_Data&=0xdfff; //转换 A13置0 R/C=0
*P_IOA_Data&=0xbfff; //12位转换 A0=0
*P_IOA_Data|=0x1000; //启动转换 cs=1
delay(1); //等待STS变高
*P_IOA_Data&=0xefff; //关闭转换 CE=1
}
int read_data()
{
int AD_data;
*P_IOA_Data&=0xefff; //关闭转换 CE=0
*P_IOA_Data&=0x7fff; //片选 A15置0 CS=0
*P_IOA_Data|=0x2000; //读数 A13置1 R/C=1
//在12位时 A0任意状态
*P_IOA_Data|=0x1000; //启动读 CE=1
// AD_data=*P_IOA_Data; //?????????????????
delay(1);
*P_IOA_Data&=0xefff; //关闭 CE=0
AD_data=*P_IOA_Data; //????????????
return(AD_data);
}
void dis_AD(int ADnum1)
{
int thou1,hund1,ten1,one1,volt1;
float volt;
volt=((float)ADnum1/4095)*3300;
volt1=(int)volt;
thou1=volt1/1000;
hund1=(volt1%1000)/100;
ten1=(volt1%100)/10;
one1=volt1%10;
write(0x0001,one1);
write(0x0002,ten1);
write(0x0003,hund1);
write(0x0004,thou1);
}
void main(void)
{
int ADnum;
AD_inti();
while(1)
{
converter();
while(1)
{
if((*P_IOB_Data|0x7fff)==0x7fff)
{
ADnum=read_data();
break;
}
}
dis_AD(ADnum);
delay(200);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -