📄 ad77.c
字号:
#include "C:\Cygnal\IDEfiles\C51\Inc\c8051F020.h"
#define NUM 50
sbit AD7CS=P2^2;
sbit ADRST=P2^3;
sbit DRDY=P3^7;
void spi0_init(void);
void sysclock_init(void);
void port_init(void);
void delay(unsigned long time);
void write_reg(unsigned char com);
void read(unsigned char *pointer);
unsigned char xdata gbuf[3];
void dac1_init(void);
void uart0_init();
void timer2_init();
unsigned int val=0;
void main(void)
{
EA=0;
WDTCN=0x0de;
WDTCN=0x0ad;
EA=1;
sysclock_init();
port_init();
spi0_init();
dac1_init();
uart0_init();
timer2_init();
/* ADRST=0;
delay(300);
ADRST=1;
delay(300);
write_reg(0x11); //写COMM REG,确定下一次操作是对SETUP REG的写,GAIN=2
write_reg(0x64);*/ //对SETUP REG的进行写,单端,50hz
while(1)
{
delay(3000);
/* while(DRDY);
write_reg(0x39); //对COMM REG写,确定下一次是对DATA REG的读操作
read(gbuf);
SBUF0=gbuf[0];
while(!TI0);
TI0=0;
SBUF0=gbuf[1];
while(!TI0);
TI0=0;*/
SBUF0=DAC1H;
while(!TI0);
TI0=0;
SBUF0=DAC1L;
while(!TI0);
TI0=0;
SBUF0=' ';
while(!TI0);
TI0=0;
/* val+=3;
DAC1L=val;
DAC1H=val>>8;
if(val>60000) val=0;*/
}
}
void spi0_init(void)
{
SPI0CFG=0xc7; //CKPHA=1,CKPOL=1
SPI0CN =0x03; //3线方式
SPI0CKR=0x92; //50khz
EIE1=0; //不允许SPI0中断
}
void sysclock_init(void)
{
OSCXCN=0x67; //晶体振荡器方式1分频,fsysclock=14.7456mhz;
delay(300); //延时1ms
while(!(OSCXCN&0x80)); //检查XTLVLD=1?
OSCICN=0x08; //切换到外部振荡器
}
void port_init(void)
{
XBR0=0x06; //UATR,SPI0
XBR1=0;
XBR2=0xc0; //弱上拉禁止
P0MDOUT=0x15;
P2MDOUT=0xcf;
}
void delay(unsigned long time)
{
while(time--);
}
void write_reg(unsigned char com)
{
AD7CS=0;
delay(NUM);
SPI0DAT=com;
while(!SPIF);
SPIF=0;
AD7CS=1;
delay(NUM);
}
void read(unsigned char *pointer)
{
unsigned char i;
AD7CS=0;
delay(NUM);
for(i=0;i<2;i++)
{
SPI0DAT=0; //给SPI0发送一个时钟
while(!SPIF);
SPIF=0;
*pointer++=SPI0DAT;
}
AD7CS=1;
delay(NUM);
}
void dac1_init(void)
{
DAC1CN=0x80;
REF0CN=0x03;
DAC1L=0x00;
DAC1H=0x00;
}
void timer2_init() //用作UATR0波特率发生器 ,波特率为4800
{
T2CON =0x30; //自动重载,定时器2溢出产生波特率
//时间基准信号为系统时钟的2分频,fsysclk/2
TL2=0xa0; //初值
TH2=0xff;
RCAP2L=0xa0; //重载值
RCAP2H=0xff;
EA=1;
TR2=1;
}
void uart0_init()
{
PCON=0;
SCON0=0xd0; // UART方式3,REN=1;
ES0=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -