📄 step.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 + -