30 黑幣
主函數(shù)
#include <c8051f330.h> // SFR declarations
#include "string.h"
#include <stdio.h>
#include "SPI.h"
#include <intrins.h>
unsigned char index = 1;
unsigned char buf[2];
unsigned char flag = 0;
unsigned char UART_RX_idx = 0;
void re(unsigned char a);
void delay(unsigned long delaytime)
{
for(;delaytime>0;delaytime--)
_nop_();
}
void delay10000(unsigned long delaytime)
{
unsigned long i;
for(;delaytime>0;delaytime--)
for(i = 0;i <10000;i++)
_nop_();
}
void UART_Init()
{
EA = 0;
SCON0 = 0x50;
TCON = 0x40;
TMOD = 0x20;
TH1 = 0x96;
CKCON = 0x00;
TR1 = 1;
ET0= 1;
ES0 =1;
TI0 = 0;
RI0 = 0;
EA = 1;
UART_RX_idx = 0;
RXflage = 0;
}
void Send_data(unsigned char dat)
{
SBUF0 = dat;
TI0 = 1;
delay(10);
while(!TI0);
}
void uart() interrupt 4
{
unsigned char aa;
if(RI0)
{
EA = 1;
RI0 = 0;
aa = SBUF0;
re(aa);
}
}
void re(unsigned char a)
{
switch(index)
{
case 1://正在等待接受0xaa
if(a == 0xaa)
{
//繼續(xù)接受0x55;
index++;
}
else
{
index =0;
}
break;
case 2:
{
if(a == 0x55)
{
//繼續(xù)接受0x55;
index++;
}
else
{
index =0;
}
}
break;
case 3:
{
buf[0] = a;
index++;
}
break;
case 4:
{
buf[1] = a;
index++;
}
break;
case 5:
if(a == '$')
{
index++;
}
else
{
index =0;
}
break;
case 6:
if(a == '&')
{
flag = 1;
}
else
{
index =0;
}
break;
}
}
void main (void)
{
PCA0MD &= ~0x40;
OSCICN |= 0x03;
XBR0 = 0x01;
XBR1 = 0x40;
P0MDIN |= 0x00;
P1MDIN |= 0x00;
P0MDOUT|= 0xff;
P1MDOUT|= 0xff;
UART_Init();
delay10000(20);
init_dac8562();
cfg_dac8562_1();
{
while(1)
{
if(flag == 1)
{
cfg_dac8562_1(buf[0]*256+buf[1]);
flag = 0;
}
}
}
}
dac設(shè)置
#include <C8051F120.H>
#include "SPI.h"
#include "intrins.h"
unsigned char RX_dat[20];
unsigned char RXflage;
unsigned long Rx_Freq;
unsigned long HMC704_03;
double temp;
unsigned long temp_ulong;
unsigned long cfgdat;
void Set8562(unsigned long datin)
{
unsigned long dat;
unsigned char i = 0;
unsigned char ii = 0;
DAC8562_CS = 0;
dat = datin;
dat = dat << 8;
for(i = 0;i < 24;i++)
{
DAC8562_CLK = 1;
DAC8562_DAT = dat & 0x80000000;
dat = dat << 1;
DAC8562_CLK = 0;
}
DAC8562_DAT = 0;
DAC8562_CLK= 0;
dat = dat << 1;
DAC8562_CS = 1;
}
void init_dac8562()
{
cfgdat = 0x380001;
Set8562(cfgdat);
cfgdat = 0x184000;
Set8562(cfgdat);
cfgdat = 0x194000;
Set8562(cfgdat);
}
void cfg_dac8562_1(unsigned long datin)
{
cfgdat = 0x180000+datin;
Set8562(cfgdat);
}
我來回答