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

📄 main.c

📁 这是DSP2407的一个例子
💻 C
字号:

/****************************************************************************
10m晶振,定时器T1进行8分频,即定时器的指令周期为0.8us
时间:		0.5ms	1.5ms	2.5ms
十进制:	625	    1875	3125
十六进制:	271  	753		C35
****************************************************************************/
#include"2407regs.h" 
#include<stdlib.h>

extern int ad,mode,on_off,adflag,swimmode[20],swimtime;  //mode,速度模式,on_off,遥控开关
int adresult;				//读取AD转换的结果
char receive[10];			//读取无线通讯的结果
int flag;					//无线通讯的一个指令是否接收完毕
int workup,workdown,times;  //workup,workdown,丝杠电机的前后运动,times用来作在只有前方有障碍时左转弯的记数
char order,getorder;		//无线通讯接收到的指令
int m,count=0,j=0,test=0,which;//which,用来标记是无线通讯还是红外模式

void interrupt sci(){
	switch(PIVR){
		case 0x6:
			{
			receive[j]=SCIRXBUF;
			if(j==9) {j=0;flag=1;}
			else j++;
			}break;
		case 0x7:break;
		}

	IFR=0x0010;			//清除IFR中相应的中断标志
	enable();			//开总中断(因为当进入中断服务程序时总中断就会自动关闭)
}

//检测无线通讯接收到的命令    
int scicheck(char * p)
{
   int i=0;
   for(i=0;i<10;i++)
   {
   if(*(p+i)!='F' ) 
   	  continue;
   else
      if(*(p+i+1)=='I' && *(p+i+2)=='S' && *(p+i+3)=='H') 
      {
         switch(*(p+i+4))
         {
            case 'S':  for(i=0;i<10;i++) *(p+i)=0;return('S');   //停止
            case 's':  for(i=0;i<10;i++) *(p+i)=0;return('s');   //复位
            case 'I':  for(i=0;i<10;i++) *(p+i)=0;return('I');   //待机
            case 'F':  for(i=0;i<10;i++) *(p+i)=0;return('F');   //前进,摆幅较大,快
            case 'Q':  for(i=0;i<10;i++) *(p+i)=0;return('Q');   //前进,摆幅较小,快
            case 'R':  for(i=0;i<10;i++) *(p+i)=0;return('R');   //右转快
            case 'L':  for(i=0;i<10;i++) *(p+i)=0;return('L');   //左转快
            case 'f':  for(i=0;i<10;i++) *(p+i)=0;return('f');   //前进,摆幅较大,快
            case 'q':  for(i=0;i<10;i++) *(p+i)=0;return('q');   //前进,摆幅较小,慢
            case 'r':  for(i=0;i<10;i++) *(p+i)=0;return('r');   //右转慢
            case 'l':  for(i=0;i<10;i++) *(p+i)=0;return('l');   //左转慢
            case 'U':  for(i=0;i<10;i++) *(p+i)=0;return('U');   //上浮
            case 'D':  for(i=0;i<10;i++) *(p+i)=0;return('D');   //下沉
            default:for(i=0;i<10;i++) *(p+i)=0;return('\000');
         }//switch
      }//else if
   }//for

}   


 
void main(){

	initial();
	sciinitial();
	timerinitial();
	adinitial();

	WSGR=0x00;				// 禁止I/O引脚等待

⌨️ 快捷键说明

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