📄 adc.c
字号:
/////////////////////////////////////////////////
// Example For ICETEK-VC5416-EDU //
// CTR Version : V4 //
// Filename: ADC.c //
// Project : ADC.pjt //
// Version : 2.00 //
// Write by: Daniel Hawk //
// Company : Realtimedsp Co.Ltd //
// //
// All Rights opened & no Onus 2005.06 //
/////////////////////////////////////////////////
#include "c5416regs.h"
#define TIM *(int *)0x24
#define PRD *(int *)0x25
#define TCR *(int *)0x26
#define REGISTERCLKMD *(int *)0x58
ioport unsigned int port3002;
#define LBDS port3002
ioport unsigned int port3006;
void interrupt time(void);
void initMcBSP2( void );
unsigned int nCount;
int flage;
int uWork;
int inp[256];
int length;
int channel;
main()
{
int j;
asm(" ssbx INTM"); // 关闭可屏蔽中断
*(int *)0x58=0x0;
j= PMST;
PMST = j&0xff;
IMR = 0x8;
TCR = 0x417; // 计数器分频系数=8
TIM = 8;
PRD = 0x157;
TCR = 0x427; //
IFR = 0x100; // 其中,时钟周期为8MHz
flage=0;
channel=0;
port3006=1;
*(int *)0x58=0x1007;
initMcBSP2();
asm(" rsbx INTM"); // 开中断进行转换
while ( 1 );
}
// 定时器中断服务程序,完成:保存转换结果、启动下次转换
void interrupt time(void)
{
if(channel)
{
DXR12=0xe000;
}
else
{
DXR12=0xc000;
}
/*DXR12=0xe000;*/
uWork=DRR12;
uWork=uWork>>4;
uWork&=0xff;
inp[length]=uWork;
length++;
length%=256;
if(length==0)
{
asm(" nop"); //此处设软件断点
}
LBDS=flage;
flage=1-flage;
}
void initMcBSP2( void )/*configuation the McBSP1 as SPI mode*/
{
SPSA2=SPCR1;
SPSD2=0;
SPSA2=SPCR2;
SPSD2=0;
SPSA2=RCR1;
SPSD2=0x40;
SPSA2=RCR2;
SPSD2=0x01;
SPSA2=XCR1;
SPSD2=0x40;
SPSA2=XCR2;
SPSD2=0x01;
SPSA2=SRGR1;
SPSD2=0x83;//
SPSA2=SRGR2;
SPSD2=0x2000;
SPSA2=PCR;
SPSD2=0xA08;
SPSA2=SPCR1;
SPSD2=0x5801;
SPSA2=SPCR2;
SPSD2=0xc1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -