📄 adda_main.c
字号:
/******************************************************************************/
/*main.c */
/* */
/* This is proprietary information, not to be published -- DIGIPRO DATA */
/* Copyright (C) 2002, DigiPro Information Co.,Ltd. All Rights Reserved. */
/* */
/* Author: Wu DingMing & Li Fayue */
/* Date: August 12-28, 2002 */
/******************************************************************************/
#include <stdio.h>
#include "mmdrv.h"
#include "mcbsp.h"
#include "cpu_reg.h"
#include "lcd_86.h"
#include "adda.h"
ioport unsigned portefff;
#define IO_374 portefff
void init_exint1_interrupt();
void init_GPIO(void);
unsigned int dc_ADC(unsigned int Channel);
void ac_ADC(unsigned int Channel);
void ac_DAC(void);
void ac_sin_wave(unsigned int Channel);
unsigned int adcbuf[0x400];
unsigned int flag=0xffff;
void main(void)
{
unsigned int i,j,data;
unsigned int key_val;
SWWSR = 0x7fff;
SWCR = 0x0001;
BSCR = 0x8006;
CLKMD = PLL_DIV_INIT;
waitloop( 0x0400 );
CLKMD = PLL_LOCK_INIT_X(5);
waitloop( 0x0400 );
PMST = 0x0168;
init_exint1_interrupt();
Init_MCBSP_To_IO();
Init_ADC();
init_GPIO();
init_lcd();
LCD_clear(0);
cur_row=2;
cur_col=20;
LCD_pr_chars(" AD_DA TEST ",16);
cur_row=3;
cur_col=1;
LCD_pr_chars("=======================",23);
IO_374=0xffff; //374 enable
Close_LED_Data();
Close_LED_Traf();
Close_LED_sign();
waitloop( 0x0400 );
while(1)
{
i=Get_Key();
waitloop( 0x04000 );
j=Get_Key();
if(i==j)
{
flag=0xffff;
key_val=j; /*Save key_val*/
switch(key_val)
{
default:
break;
case 1:
cur_row=4;
cur_col=10;
LCD_pr_chars(" DC_Input: ADC ",17);
// cur_row=5;
// cur_col=15;
// LCD_pr_chars(" ",17);
dc_ADC(ADC_CHANNEL1);
break;
case 2:
cur_row=4;
cur_col=10;
LCD_pr_chars(" DAC_Ouput: Wave ",17);
cur_row=5;
cur_col=15;
LCD_pr_chars("/////////////////",17);
ac_DAC();
break;
case 3:
cur_row=4;
cur_col=10;
LCD_pr_chars(" AC_Intput ADDAC ",17);
cur_row=5;
cur_col=15;
LCD_pr_chars(" ~~~~~~~~~~~~~ ",17);
ac_sin_wave(ADC_CHANNEL0);
break;
}
}
}
}
void init_exint1_interrupt()
{
IFR =0xffff;
IMR =0x0002; //EXINT1=IMR.8
asm("\trsbx\tintm ");
}
interrupt void EXINT1_isr()
{
unsigned int i;
IFR =0xffff;
// while(!(GPIOSR&0x01))
{
asm("\tnop");
asm("\tnop");
}
flag=0; //~flag;
cur_row=5;
cur_col=1;
LCD_pr_chars(" ",23);
}
void init_GPIO(void)
{
GPIOCR =0xfffe; //EXINT1=GPIO.0=input=0,nand_cs=GPIO.6=output=1
GPIOSR =0x0040; //GPIO.6=output=1
}
unsigned int dc_ADC(unsigned int Channel)
{
unsigned int i,data;
char buf[12];
while(flag)
{
data =0;
for(i=0;i<16;i++)
data += read_ADC(Channel);
data = (unsigned int)(((unsigned long)data*0x699AL)/0xfff0);
cur_row=5;
cur_col=1;
LCD_pr_chars(" AD_val= ",23);
cur_row = 5;
cur_col = 55;
Float16_to_String(data,13,9,buf);
LCD_pr_chars(buf,11);
waitloop( 0x40000L );
}
return(data);
}
void ac_ADC(unsigned int Channel)
{
unsigned int data;
while(1)
{
data = read_ADC(Channel);
DAC_single_output(DAC_CHANNELA,data,DAC_2048V_REF,DAC_FAST_SPEED);
}
return;
}
void ac_DAC(void)
{
unsigned int i,j;
while(1)
{
for(i=0;i<3076;i++) //4096
{
DAC_double_output(i,4095-i,DAC_2048V_REF,DAC_FAST_SPEED);
//waitloop(0x100L);
if(!flag)
{
break;
}
}
if(!flag)
{
break;
}
}
DAC_power_down();
return;
}
void ac_sin_wave(unsigned int Channel)
{
unsigned int data;
unsigned int i=0;
for(i=0;i<1024;i++)
{
adcbuf[i]=0;
}
i=0;
while(1)
{
data = read_ADC_FAST(Channel);
DAC_single_output(DAC_CHANNELA,data,DAC_2048V_REF,DAC_FAST_SPEED);
adcbuf[i++]=data;
if(i==0x400)
{
i=0;
}
if(!flag)
{
break;
}
}
DAC_power_down();
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -