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

📄 llg95.c

📁 电动机保护测量程序,用的是DSP2407,
💻 C
字号:

#include   "2407CD.h"
#include   "bianliang.h"
#include   "math.h"

int i,k,test1;


void main ()
{
     unsigned int i,j,k,t,ch; 
     int uptr;
     
     initdsp();
     asm(" clrc	INTM  "); 
     DingzhipingKL();
     test1=0;
     KouLingPingYX();
     test1=0;
     KouLingPing();
     test1=0;
     

        
 
 }

void interrupt nothing()
{
   return;
}
void initdsp()
{
     asm(" setc	INTM "); /* 禁止所有中断 */	
     asm(" setc SXM " ); //符号位扩展有效
     asm(" clrc OVM " );  //累加器中结果正常溢出
     asm(" clrc CNF " );  // B0被配置为数据存储空间
     
     SCSR1 = 0x00fd; //0x00cd
     WDCR=0x06f;     // 使能看门狗 
     kick_dog();     // 看门狗程序
     WSGR=0xfe00;    // 三总线速度最快
     IMR=0x0016;     //INT1,INT2,INT5
     IFR=0x0ffff;    //清除全部中断标志
     
     /*IO口配置*/
     MCRA=0x3FC3;
     MCRB=0xfe00;
     MCRC=0x0000;  

     PADATDIR=0xff00;
     PBDATDIR=0xff00;
     PCDATDIR=0x00ff;
      PEDATDIR=0x00ff; //keyboard 
     PFDATDIR=0xff00;  //iopf2,iopf1为输出, 且输出为零
     /* 定时器1采样中断(每周波36)  定时器2-2ms周期中断 初始化 */
     EVAIFRA = 0xFFFF;
     EVAIFRB = 0xFFFF;
     T1PR = 0x500;
     T2PR = 0x1200;
     T1CNT = 0;
     T2CNT = 0x480;
     T2CON = 0x148c;
     T1CON = 0x144c;
     EVAIMRA = 0x0080; 
     EVAIMRB = 0x0001;   

     /* 液晶初始化 */   
     wcom(0x30);
     wcom(0x30);
     wcom(0x30);
     wcom(0x08);
     wcom(0x01);
     wcom(0x06);
     wcom(0x0c);
}

  
void delayms(uint v)
{ 
  uint j;
  for(j=v;j>0;j--)
  {
    asm( " nop " );//while(v!=0)v--;
  } 
 }

void delay(unsigned int n)
{
  unsigned int p,j;
  for(j=n;j>0;j--)//while(n-->0)
  {  for(p=1;p<2;p++)
     {
      asm( " nop " );
     }
  }
}


void check_busy()
{
   int yjflag=0;

   PADATDIR=0x0FF00;//RS=0;
   PBDATDIR=0xFF80;//RRW=1;
   PCDATDIR=0x00ff;
   do
   {
     PBDATDIR|=0X0040;
     yjflag=PCDATDIR&0x80;
     PBDATDIR&=0x0FFBF;//P1=0xff;P1=ACC;E=1;delayms(3);E=0;
   }
   while(yjflag==0x80);//while(BF==1);
}
void wcom(unsigned int C)
{
  check_busy();
  PADATDIR=0xff00;
  PCDATDIR=0xff00|C;
  PBDATDIR=0xff40;
  PBDATDIR&=0x0FFBF;//RS=0;RRW=0;P1=C;E=1;E=0;
}
void wdata(unsigned int D)
{
  check_busy();
  PADATDIR=0X0FF04;
  PCDATDIR=0xff00|D;
  PBDATDIR=0xff40;
  PBDATDIR&=0X0FFBF;//RS=1;RRW=0;P1=D;E=1;E=0;
}
void ADSOC()
{
   T4CON=T4CON|0x40;
}


void delays(void)
{
	while(acc<108); 
	sampflag=1;
	return;
}


 







void KouLingPing()
{
   wcom(0x01);
   for(i=0;i<6;i++)
   {
    wr_cnchar(KLPJ_site1[i],KLPJ_hazi[2*i],KLPJ_hazi[2*i+1]);
    }  
  
   
    
    for(i=0;i<6;i++)
   {
    wr_cnchar(KLPX_site1[i],KLPX_hazi[2*i],KLPX_hazi[2*i+1]);
    } 
   for(i=3;i>=0;i--)
   {
    wr_char(KLPX_site2[i],KLPX_data[i]);
    }
     for(i=3;i>=0;i--)
   {
    wr_char(KLPJ_site2[i],KLPJ_data[i]);
    }
    wcom(0x0f);//开游标   
   cursor_pw=0;
}
 void KouLingPingYX()
 {
   
   dispzkII(0x1,0xd0,0xc2);   /* 新 */
   dispzkII(0x2,0xbf,0xda);   /* 口 */
   dispzkII(0x3,0xc1,0xee);   /* 令*/
   dispzkII(0x4,0xd3,0xd0);   /* 有*/
   dispzkII(0x5,0xd0,0xa6);   /* 效*/
   wr_char(0x96,0x3f);   /*?*/
   wcom(0x0f);  /*开游标*/ 
  } 
void DingzhipingKL()
{
   wcom(0x01);
   for(i=0;i<5;i++)
   {
    wr_cnchar(DZPKL_site1[i],DZPKL_hazi[2*i],DZPKL_hazi[2*i+1]);
    } 
   for(i=3;i>=0;i--)
   {
    wr_char(DZPKL_site2[i],DZPKL_data[i]);
    } 
  wcom(0x0f);/*开游标,光标 */
  cursor_pw=0;
}

 void dispzkII(unsigned int offset,unsigned int m,unsigned int n )
{
  unsigned int w;
   wcom(0x90+offset);
   wdata(m);
   wdata(n);
} 




void kick_dog(void)
{
    WDKEY = 0x5555;
    WDKEY = 0xaaaa;
}


void initial()
{ 

   asm(" setc	INTM "); /* 禁止所有中断 */
   asm(" clrc	sxm  "); /* 抑制符号位扩展 */
   asm(" clrc	ovm  "); /* 累加器中结果正常溢出 */
   asm(" clrc	CNF  "); /* B0被配置为数据存储空间 */
   
   SCSR1 = 0x00fd; /* CLKOUT=4*CLKIN */
   WDCR=0x00E8;  /* 不使能看门狗,因为SCSR2中的WDOVERRIDE 即WD保护位复位后的缺省值为
                    1,故可用软件禁止看门狗 */
   IMR=0x0016;
   IFR=0x0FFFF;
   
   /* 定时器1采样中断(每周波36)  定时器2-5ms周期中断 初始化 */
    EVAIFRA = 0xFFFF;
    EVAIFRB = 0xFFFF;
    T1PR = 0x500;
    T2PR = 0x2d00;
    T1CNT = 0;
    T2CNT = 0x480;
    T2CON = 0x148c;
    T1CON = 0x144c;
    EVAIMRA = 0x0080; 
    EVAIMRB = 0x0001;   
   
   wcom(0x30);
  //delayms(19);
  wcom(0x30);
  //delayms(19);
  wcom(0x30);
  //delayms(19);
  wcom(0x08);
  //delayms(9);
  wcom(0x01);
  //delay(2);
  wcom(0x06);
  //delayms(9);
  wcom(0x0c);
  //delayms(9);
  } 
  
  void wr_cnchar(unsigned int linerow, unsigned int character1,unsigned int character2)
{
   int i;
  
      wcom(linerow);
      //wcom(add+offset);
      wdata(character1);
      wdata(character2);
   
} 
void wr_char(unsigned int linerow,unsigned int character1)
{
   int i;
   wcom(linerow);
   wdata(character1);
}  
  

⌨️ 快捷键说明

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