📄 ad421.c
字号:
#include <c8051f020.h>
#include <INTRINS.H>
void SYSCLK_Init (void);
void PORT_Init (void);
void Delay (int);
void da421_conv1(unsigned int);
void da421_conv2(unsigned int);
void da421_conv3(unsigned int);
void Delay_adda(int);
/* hardware connect configure */
sbit DA_data1=P2^6;
sbit DA_CLK1=P2^5;
sbit DA_CS1=P2^4;
sbit DA_data2=P1^4;
sbit DA_CLK2=P1^3;
sbit DA_CS2=P1^2;
sbit DA_data3=P1^1;
sbit DA_CLK3=P1^0;
sbit DA_CS3=P2^7;
sbit DA_data4=P1^7;
sbit DA_CLK4=P1^6;
sbit DA_CS4=P1^5;
void da421_conv1(unsigned int a)
{
unsigned int n;
unsigned int temp=0;
int i;
n=a;
for(i=16;i>0;i--)
{
DA_CLK1=0;
Delay_adda(10);
temp=a>>(i-1);
temp=temp&0x0001;
if(temp==0)DA_data1=0;
else DA_data1=1;
// DA_data1=1;
// Delay_adda(10);
DA_CLK1=1;
Delay_adda(10);
a=n;
}
DA_CS1=0;
Delay_adda(20);
DA_CS1=1;
}
void da421_conv2(unsigned int a)
{
unsigned int n;
unsigned int temp;
int i;
n=a;
// enable);
//DA_CS2=1;
for(i=16;i>0;i--)
{
DA_CLK2=0;
Delay_adda(10);
temp=a>>(i-1);
temp=temp&0x0001;
if(temp==0)DA_data2=0;
else DA_data2=1;
// DA_data2=1;
// Delay_adda(10);
DA_CLK2=1;
Delay_adda(10);
a=n;
}
DA_CS2=0;
Delay_adda(20);
DA_CS2=1;
//Delay_adda(10);
}
void da421_conv3(unsigned int a)
{
unsigned int n;
unsigned int temp=0;
int i;
n=a;
// enable);
//DA_CS3=1;
//DA_CLK3=0;
//DA_data3=0 ; // Initialize crossbar and GPIO
//DA_CS3=1;
//Delay_adda(2);
for(i=16;i>0;i--)
{
DA_CLK3=0;
Delay_adda(10);
temp=a>>(i-1);
temp=temp&0x0001;
if(temp==0)DA_data3=0;
else DA_data3=1;
// DA_data3=1;
// Delay_adda(10);
DA_CLK3=1;
Delay_adda(10);
a=n;
}
DA_CS3=0;
Delay_adda(20);
DA_CS3=1;
}
void da421_conv4(unsigned int a)
{
unsigned int n;
unsigned int temp;
int i;
n=a;
// enable);
//DA_CS4=0;
// DA_CLK4=0;
// DA_data4=0; // Initialize crossbar and GPIO
//DA_CS2=1;
for(i=16;i>0;i--)
{
DA_CLK4=0;
Delay_adda(10);
temp=a>>(i-1);
temp=temp&0x0001;
if(temp==0)DA_data4=0;
else DA_data4=1;
// DA_data4=1;
// Delay_adda(10);
DA_CLK4=1;
Delay_adda(10);
a=n;
}
DA_CS4=0;
Delay_adda(20);
DA_CS4=1;
//Delay_adda(10);
}
void main (void)
{
bit temp02=0;
SYSCLK_Init (); // 系统时钟初始化
PORT_Init (); // 交叉开关和通用I/O口初始化
//da421_conv(0x00ff;
//da421_conv3(0x0500);
//da421_conv1(0x6666);
//da421_conv2(0x7777);
//da421_conv3(0x9999);
da421_conv3(0xaaaa);
while(1){
//Delay_adda(200);
//DA_CS2=1;
//Delay_adda(200);
//DA_CS4=1;
//DA_CLK4=0;
//DA_data4=1;
//da421_conv3(0x8888);
//da421_conv3(0x6666);
}
}
void Delay(int count)
{
int i,j;
for (i=0;i<count;i++)
for(j=0;j<120;j++)
;
}
void SYSCLK_Init (void)
{
int i; // delay counter
OSCXCN = 0x67; // start external oscillator with
// 22.1184MHz crystal
for (i=0; i < 256; i++) ; // Wait for osc. to start up
while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
OSCICN = 0x88;
//OSCICN = 0x05; // 系统时钟初始化为片内的 24.5MHz / 8
}
void PORT_Init (void)
{
XBR0 = 0x00; // 没有选择数字外设
XBR2 = 0x40;
P2MDOUT = 0xff; // P2口设为推挽方式
P74OUT = 0xff;
P0MDOUT = 0xff;
P1MDOUT = 0xff;
P3MDOUT = 0xff;
}
void Delay_adda(int count)//da8501所用
{
int i,j;
for (i=0;i<count;i++)
for(j=0;j<120;j++)
;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -