📄 motor.c
字号:
#include "2407c.h"
#include "scancode.h"
#include "math.h"
#include "LF2407A.h"
#define T46uS 0x0d40
void gp_init(void);
void Delay(unsigned int nTime);
void interrupt time(void);
char ConvertScanToChar(unsigned char cScanCode);
void ICETEKLF2407AInit();
//unsigned int T46uS;
ioport unsigned int port8000;
ioport unsigned int port8005;
ioport unsigned int port8001;
ioport unsigned int port8002;
ioport unsigned int port8003;
ioport unsigned int port8004;
ioport unsigned int port8007;
#define CTRGR port8000
#define CTRLCDCMDR port8001
#define CTRKEY port8001
#define CTRLCDCR port8002
#define CTRCLKEY port8002
#define CTRLCDLCR port8003
#define CTRLCDRCR port8004
#define CTRLA port8005
#define CTRLR port8007
ioport unsigned int portc;
unsigned int uWork,nCount;
unsigned int pwm1[8]={ 0x8e,0x8c,0x8d,0x89,0x8b,0x83,0x87,0x86 };
unsigned int pwm2[8]={ 0x86,0x87,0x83,0x8b,0x89,0x8d,0x8c,0x8e };
int nAddStep,nStep,z=0;
main()
{
unsigned int nScanCode,uWork,uWork1,i;
unsigned char cKey;
uWork1=(*PIVR);
ICETEKLF2407AInit();
CTRGR=0;
CTRGR=0x80;
CTRGR=0; // 使能CTR
CTRLR=0; CTRLR=0x40; CTRLR=0x0c0;
uWork1=port8002;
nStep=0; nAddStep=1; cKey=0;
CTRLR=0x0c2;
asm(" setc INTM"); // 关闭可屏蔽中断
(*PIRQR0)=0;
*EVAIMRA = 0x80;
*EVAIFRA = 0xffff;
*GPTCONA = 0x0100;
*T1PR = 0x1a00;
*T1CNT = 0;
*T1CON = 0x1340;
*IMR=0x3;
*IFR=0xffff;
asm(" clrc INTM");
while ( 1 )
{
if ( nCount==16 )
{
nCount=0;
nScanCode=CTRKEY;
nScanCode&=0x0ff;
uWork=CTRCLKEY;
CTRLR=0x0c2;
if ( nScanCode!=0 )
{
if ( nScanCode==SCANCODE_Enter ) break;
else
{
cKey=ConvertScanToChar(nScanCode);
}
cKey=ConvertScanToChar(nScanCode);
if ( cKey!=0 )
{
if ( cKey=='4' ) nAddStep=1;
else if ( cKey=='6' ) nAddStep=-1;
}
}
}
Delay(1);
}
}
void Delay(unsigned int nDelay)
{
int i,j,k=0;
for ( i=0;i<nDelay;i++ )
for ( j=0;j<64;j++ )
k++;
}
void interrupt gptime1(void)
{
uWork=(*PIVR);
switch(uWork)
{
case 0x27:
{
(*EVAIFRA)=0x80;
CTRLR=pwm2[nStep];
nStep+=nAddStep;
if ( nStep<0 ) nStep=7;
else if ( nStep>7 ) nStep=0;
nCount++;nCount%=18;
if(z==0)
{portc=0;
z=1;
}
else
{ z=0;
portc=1;
}
break;
}
}
}
void gp_init(void)
{
*EVAIMRA = 0x80;
*EVAIFRA = 0xffff;
*GPTCONA = 0x0100;
//*T1PR = T46uS;
*T1PR = 0x1a00;
*T1CNT = 0;
*T1CON = 0x1340;
}
char ConvertScanToChar(unsigned char cScanCode)
{
char cReturn;
cReturn=0;
switch ( cScanCode )
{
case SCANCODE_0: cReturn='0'; break;
case SCANCODE_1: cReturn='1'; break;
case SCANCODE_2: cReturn='2'; break;
case SCANCODE_3: cReturn='3'; break;
case SCANCODE_4: cReturn='4'; break;
case SCANCODE_5: cReturn='5'; break;
case SCANCODE_6: cReturn='6'; break;
case SCANCODE_7: cReturn='7'; break;
case SCANCODE_8: cReturn='8'; break;
case SCANCODE_9: cReturn='9'; break;
}
return cReturn;
}
void ICETEKLF2407AInit()
{
asm(" setc INTM");
(*PIRQR0)=0;
uWork=(*WSGR);
uWork&=0x0fe3f;
(*WSGR)=uWork;
*WDCR=0x6f;
*WDKEY=0x5555;
*WDKEY=0xaaaa;
*SCSR1=0x81fe; //40m
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -