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

📄 ad.c

📁 基于DSP2000的AD采样及SCI程序
💻 C
字号:
#include  "register.h"
#include  "sintab.h"
#include  "math.h"
int       ADRESULT[1080];         //定义一个数组用于保存AD转换的结果
float     array[1080];
int       flag;
volatile  unsigned   int  *tmpj;
int       tmpk;
//屏蔽中断子程序
void  inline  disable()
{
   asm(" setc INTM");
}
//开关中断子程序
void  inline  enable()
{
   asm(" clrc INTM");
}
//系统初始化子程序
void  initial()
{
   asm(" setc  SXM");   //符号位扩展有效
   asm(" clrc  OVM");   //累加器中结果正常溢出
   asm(" clrc  CNF");   //B0被配置为数据存储空间
   *SCSR1=0x82FF;       //CLKIN=16 M,CLKOUT=2*CLKIN=32 M
   *WDCR=0x0E8;         //不使能看门狗
   *IMR=0x0011;         //INT1,INT5中断
   *IFR=0xFFFF;         //清楚全部中断标志,写1清0
   WSGR=0X00;
}
void  scirec()
{
   *SCICCR=0X7;                //1个停止位,不使能奇偶校验,空闲线多处理器模式,8位字符
   *SCICTL1=0X13;              //#0013H 使能接收和发送,SLEEP=0 禁止休眠方式 , 禁止接
                               //收错误中断,TXWAKE=0 即没有选定的发送特征
   *SCICTL2=0X3;               //使能接收中断
   *SCIHBAUD=0X1;
   *SCILBAUD=0Xa0;             //波特率=9600B/S
   *SCICTL1=0X33;              //使SCI脱离复位状态
   *SCIPRI=0X60;               //SCI中断(接收和发送中断)为低优先级中断
   *PADATDIR=0x100;
   *MCRA=*MCRA|0X0003;
}
//AD初始化子程序
void  ADINIT()
{
   *T4CNT=0x0000;              //计数器清零
   *T4CON=0xc800;              //T4为连续增减计数模式,128分频,且选用内部时钟源
   *T4PR=0x0400;               //设置T4的周期寄存器
   *GPTCONB=0x400;             //T4周期中断标志触发AD转换
   *EVBIFRB=0x0FFFF;           //清除EVB中断标志,“写1清0”
   *ADCTRL1=0X10; 
   *ADCTRL2=0Xc400;
   *MAXCONV=0X00;
   *CHSELSEQ1=0X3;
}
//AD中断服务子程序
void  interrupt  adint()
{
   static int adptr=0;
   int tmpi;
   asm(" clrc  SXM");
   tmpj=RESULT0; 
   ADRESULT[adptr]=*tmpj>>6;
   adptr++; 
   if(adptr>=1080) {
       adptr=0;
       if(flag==0) {
             for(tmpi=0;tmpi<1080;tmpi++) {
                   array[tmpi]=ADRESULT[tmpi];
             }
       }
   }
   *ADCTRL2=*ADCTRL2|0X4200;
   flag=1;
   enable();
//   return;
}
void   uartrec()
{
  static  int  tmpchar;
  int  tmpi;
  tmpi=*SCIRXBUF;
  if (reccommand==1)return;
  if(tmpi==0x57) {
     tmpchar=0;
  }
  receive[tmpchar++]=tmpi;
  if(tmpi==0x0d) {
     reccommand=1;
  }
  *IFR=0x0010;
  enable();
//  return;
}  
void  uartsent()
{  
    if(flag==1) {      
           *SCITXBUF=array[tmpk++];
           if(tmpk>strlen(array)){tmpk=0;flag=0;}     
   }
   *IFR=0X0010;
   enable();
} 
void  interrupt uarttr()
{
    switch(*PIVR) 
    { 
       case 6 : uartrec();
       case 7 : uartsent();   
    }   
} 
//该中断服务程序主要为了防止干扰,不做任何其他操作
void  interrupt  nothing()
{ 
   return;                     //中断直接返回
}
main()
{
   
   OUTno=0;
   OUTno1=0;
   fac=0;
   *SCITXBUF=array[0];
   disable();
   initial();
   ADINIT();
   scirec();
   enable();
   *T4CON=*T4CON|0X0040;
   while(1)
   {
     ;
   }
}

⌨️ 快捷键说明

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