⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 da.c

📁 TMS2812F DA数模转换C代码
💻 C
字号:

#include "DSP28_Device.h"
#include "DSP28_Globalprototypes.h"

#define	  SetData	GpioDataRegs.GPFDAT.bit.GPIOF0 = 1
#define	  ClrData   GpioDataRegs.GPFDAT.bit.GPIOF0 = 0
#define	  SetClk	GpioDataRegs.GPFDAT.bit.GPIOF2 = 1
#define	  ClrClk	GpioDataRegs.GPFDAT.bit.GPIOF2 = 0

unsigned  int  *LedReg  = (unsigned int *)0x27FF;
unsigned  int  *Led8Lock = (unsigned int *)0x2BFF;
const	Uint16	LedCode[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};
Uint16	LedCount = 0;
Uint16	SpiCount = 0;

interrupt void ISRTimer0(void);

void	SendDac1Data(Uint16	data,Uint16	cha);
void	SendDac2Data(Uint16	data,Uint16	cha);

void main(void)
{

	/*初始化系统*/
	InitSysCtrl();

	/*关中断*/
	DINT;
	IER = 0x0000;
	IFR = 0x0000;
	/*初始化PIE*/
	InitPieCtrl();

	/*初始化PIE中断矢量表*/
	InitPieVectTable();	
	
	/*初始化外设*/
    InitPeripherals();
    
	InitGpio();
	EALLOW;	
	PieVectTable.TINT0 = &ISRTimer0;
	EDIS;   
    
	/*设置CPU*/
	ConfigCpuTimer(&CpuTimer0, 10, 1000000);	
	
 	StartCpuTimer0();

    /*开中断*/
	IER |= M_INT1;
	IER |= M_INT14;	
	PieCtrl.PIEIER1.bit.INTx7=1;
	

	EINT;   // Enable Global interrupt INTM
	ERTM;	// Enable Global realtime interrupt DBGM
	*Led8Lock = 0X07;
	*LedReg = 0xFF;
	SendDac1Data(0xFFF,1);
	SendDac1Data(0x800,2);
	SendDac2Data(0xFFF,1);
	SendDac2Data(0x800,2);

	for(;;);

} 	

interrupt void ISRTimer0(void)
{
	PieCtrl.PIEACK.bit.ACK7=1;
 	*LedReg = LedCode[LedCount];
	LedCount++;
	if (LedCount>8)	LedCount=0;
}


void	Delay(Uint16  data)
{
	Uint16	i;
	for (i=0;i<data;i++) { ; }	
}	

void	SendDac1Data(Uint16	data,Uint16	cha)
{
	Uint16	i,Temp;
	Temp = 0x8000;
	if (cha == 1)	data = data | 0x8000;
	
	ClrClk;
	ClrData;
	Delay(5);
	*Led8Lock = 0x06;
	for(i=0;i<16;i++)
	{
		if ((data & Temp)==0)	ClrData;
		else	SetData;
		Temp >>= 1;
		SetClk;		
		Delay(10);
		ClrClk;		
	}	
	*Led8Lock = 0x07;
	SetClk;
}	
void	SendDac2Data(Uint16	data,Uint16	cha)
{
	Uint16	i,Temp;
	Temp = 0x8000;
	if (cha == 1)	data = data | 0x8000;
	
	ClrClk;
	ClrData;
	Delay(5);
	*Led8Lock = 0x05;
	for(i=0;i<16;i++)
	{
		if ((data & Temp)==0)	ClrData;
		else	SetData;
		Temp >>= 1;
		SetClk;		
		Delay(10);
		ClrClk;		
	}	
	*Led8Lock = 0x07;
	SetClk;
}	
//===========================================================================
// No more.
//===========================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -