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

📄 step.c

📁 DSP5000实验箱上完整的实验程序,很有参考价值
💻 C
字号:
/*MOTERSTEP.c   */
/*;the HPI space in our system
;0x8008	HPIC0      bit 7   6   5  4  3   2   1       0
;0X8009	HPIC1                           TL1  TL0    BIL
;0X800a	HPID0(AUTO)                  1    00  HPIC
;0X800b	HPID1(AUTO)                  1    01  HPID  (ATO)
;0X800c	HPIA0                        1    10  HPIA
;0X800d	HPIA1                        1    11  HPID (NO ATO)
;0X800e	HPID0(NO AUTO)
;0X800f	HPID1(NO AUTO)
;result is 0x1002=AA 0x1003=DD

;A0-->HBIL    HBIL
;A1-->HCNTL0  HCNTL0
;A2-->HCNTL1  HCNTL1
;A15-->HCS    }C_HCS
;A3-->
;other pins connection
;HAS-->1
;HDS1-->IOSTRB   IOSTRB
;HDS2-->1
;HINT-->INT0     INT0
;HREADY-->BREADY BREADY 
;HR/W-->R/W      R/W    
;###########################################################*/
#include "math.h"
#include "stdio.h"
//IO定义
ioport unsigned int port8000;
ioport unsigned int port8001;
ioport unsigned int port8008;
ioport unsigned int port8009;
ioport unsigned int port800a;
ioport unsigned int port800b;
ioport unsigned int port800c;
ioport unsigned int port800d;
ioport unsigned int port800e;
ioport unsigned int port800f;
//函数定义
extern void InitMcBSP0(void);
extern void ms_delay(int);
extern void send_0(void);
extern void send_1(void);
extern void send_2(void);
extern void send_end(void);
extern void INT3_ISR(void);
extern void InitC5402(void);
extern void write_command(void);
extern void write_data(void);
extern void OpenMcBSP(void);
extern void CloseMcBSP(void);
extern void READAD50(void);
extern void WRITEAD50(void);
extern void Int(void);
extern void init_lcm(void);
extern void ddram_clear(void);
interrupt void key_int();
void  gdram_clear(void);
void send_byte( unsigned char out_byte);
void write7279(unsigned int cmd,unsigned int dta);
void long_delay(void);
void short_delay(void);
void SetDAdress(unsigned int Daddr);
void SetDCdata(unsigned int Ddata0,unsigned int Ddata1);
void send_voice(void);
void TranDaToHPI(int *DPOINTER1);
void SenToLcd(unsigned int SData0,unsigned int SData1);
//***HD7279定义指令***
#define CMD_RESET 0xa4
#define CMD_TEST  0xbf
#define DECODE0 0x80
#define DECODE1 0xc8
#define CMD_READ 0x15
#define UNDECODE 0x90
#define RTL_CYCLE 0xa3
#define RTR_CYCLE 0xa2
#define RTL_UNCYL 0xa1
#define RTR_UNCYL 0xa0
#define ACTCTL 0x98
#define SEGON 0xe0
#define SEGOFF 0xc0
#define BLINKCTL 0x88
#define INPUT   0x111
#define AC0  0x80
#define AC1  0x90
#define AC2  0x88
#define AC3  0x98
#define pi 3.1415927
#define Length 102
#define Len 8
  
//变量定义

int i,j;
unsigned int byteout;
unsigned int *a=(unsigned int *)0x0015;
unsigned char *data=(unsigned char *)0x1023;
unsigned int temp;
unsigned int R0,R1,R2,R3;
unsigned char *DPTR;
int *DPOINTER;
unsigned char key_a=0x22,key_b=0x22;
int inkey=0x22,kong;
unsigned int k=0,l=0,m=0,n=0;
unsigned char clear[64][16];
char high = 0,low = 0;
int Datacpu2=0,Datacpu20;
int key=0;
//主函数
void main(void)
{

	  
	  InitC5402(); /* initialize C5402 DSP */
      while(1)
      {
      	//SET HPIC
      	port8008=0x10;
      	port8009=0x10;
        port800c=0x00;
        port800d=0x00;
     	port8008=0x00;
		port8009=0x00;
		//SET ADDRESS
		port800c=0x10;
 		port800d=0x00;
 		//READ DATA FROM CPU2
 		kong=port800a;
 		kong=port800b;
 		
 		Datacpu2=port800e;
 		i=0;
 		i=0;
 		Datacpu20=port800f;
 		i=0;
 		i=0;
 		if (Datacpu20==0x55)
 		{
 		  for(i=0;i<100;i++)
 		  {
	 		port8001=0x0a;
	 		short_delay();
	 		port8001=0x06;
	 		short_delay();
	 		port8001=0x05;
	 		short_delay();
	 		port8001=0x09;
	 		short_delay();
 		  }
 		}
 		else if(Datacpu20==0xaa)
 		      {
 		       for(i=0;i<100;i++)
		 	    {
		 	    port8001=0x9;
		 		short_delay();
		 		port8001=0x5;
		 		short_delay();
		 		port8001=0x6;
		 		short_delay();
		 		port8001=0xa;
		 		short_delay();
		 		}
 		      }		
      }
}    

 void send_byte( unsigned char out_byte) //发送8位的控制指令
{
	unsigned char i;
	send_0();
	for(i=0;i<8;i++)
	{
		if(out_byte&0x80)
		{
			send_1();

		}
		else
		{
			send_2();
		}
		out_byte=out_byte*2;
	}
}

void write7279(unsigned int cmd,unsigned int dta)//向7279写控制指令及数据
{
	unsigned char i;
	unsigned int cmddata;
	dta=(dta&0x00ff);
	cmddata=((cmd<<8)|dta);
	send_0();
for (i=0;i<16;i++)
{
	if(cmddata&0x8000)
	{
		send_1();
	}
	else 
	{
		send_2();
	}
	cmddata=cmddata*2;
}
	send_end();
}
void long_delay(void)    //长延时
{
	unsigned char i,j;
	for (i=0;i<0xff;i++)
	{
		for(j=0;j<0xeff;j++)
		{}
	}

}
void short_delay(void)  //短延时
{
    unsigned char i,j;
	for(i=0;i<0xf;i++)
	{  for(j=0;j<0x5ff;j++)
	{}
	}
}
void SenToLcd(unsigned int SData0,unsigned int SData1)
{
       *data=SData0;
       write_data();
       *data=SData1;
       write_data();
      
}
void SetDAdress(unsigned int Daddr)
{

   *a=Daddr;
  write_command();
}
interrupt void key_int() //按键中断服务子程序
{   
        asm(" SSBX INTM");
        asm(" STM #0xFFFF, IFR ");
        INT3_ISR();
        key_b=*(unsigned char *)0x16;
        if(key_b==0xff)
        {
        ;
        }
        else
        {
        key_a=key_b;
        write7279(DECODE1,key_a);
        }
        asm(" STM #0x104, IMR ");
        asm(" RSBX INTM");
}

⌨️ 快捷键说明

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