📄 sampioc.c
字号:
#include "AT91SAM7S128.h"
#include "lib_at91sam7s128.h"
#include "SAMpioc.h"
//#define FLEX_ADHIGH 0X03<<19
//==========baoji==================================
//============================================
void Delay(int x)
{
int i;
for(i=0;i<x;i++)
{
;
}
}
void PIOinit(void)
{
AT91F_PIOA_CfgPMC();//配置io口时钟
// AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,FLEX_SETOUT);
// AT91F_PIO_CfgInput(AT91C_BASE_PIOA,FLEX_SETIN);
// AT91F_PIO_CfgInput(AT91C_BASE_PIOA,FLEX_ADBUS);
// AT91F_PIO_CfgInput(AT91C_BASE_PIOA,FLEX_ADHIGH);
// AT91F_PIO_CfgDirectDrive(AT91C_BASE_PIOA,FLEX_ADBUS);
// AT91F_PIO_CfgDirectDrive(AT91C_BASE_PIOA,FLEX_ADHIGH);
AT91F_PIO_CfgInput(AT91C_BASE_PIOA,DABUS);
AT91F_PIO_CfgInput(AT91C_BASE_PIOA,KEY_IRQ);
AT91F_PIO_OutputEnable(AT91C_BASE_PIOA,DABUS);
AT91F_PIO_CfgDirectDrive(AT91C_BASE_PIOA,DABUS);
AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,LCD_SETOUT);
AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,STPM_SETOUT);
AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,RL1);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,RL1);
// rly1off();
// rly2off();
AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,BEEP);
//AT91F_PIO_SetOutput(AT91C_BASE_PIOA,STPMFW);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,STPMCK);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,STPMFW);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,STPMEN);
//AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,SSR_SETOUT);
// AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,ADC_SETOUT);
// AT91F_PIO_CfgInput(AT91C_BASE_PIOA,ADC_SETIN);
// AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,ACM_SETOUT);
// AT91F_PIO_CfgInput(AT91C_BASE_PIOA,MP3_SETIN);
}
//=============DRIVER=========================
void spmotor() //STEP MOTOR
{
int i;
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,STPMEN);
Delay(DLYMCK);
for(i = 0;i<200;i++) //1/8细分。故需要1600个脉冲。不细分,一圈需要200个脉冲
{
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,STPMCK);
Delay(DLYMCK);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,STPMCK);
Delay(DLYMCK);
}
// Delay(DLYMCK);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,STPMEN);
}
void beepon()
{
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,BEEP);
}
void beepoff()
{
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,BEEP);
}
void beepdida()
{
beepon();
Delay(DLY5);
beepoff();
}
void rly1off()
{
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,RL1);
}
void rly1on()
{
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,RL1);
}
/*
int GET_FBUS()
{
return((AT91F_PIO_GetInput(AT91C_BASE_PIOA) & FLEX_ADBUS) >> 11);
}
void SEND_FBUS(int x)
{
AT91F_PIO_OutputEnable(AT91C_BASE_PIOA,FLEX_ADBUS);
AT91F_PIO_ForceOutput(AT91C_BASE_PIOA,(x<<11));
}
int FLEX_READ(int addr)
{
int temp;
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,FLEX_ADN); //245 IS PUT ADDR
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,FLEX_DIR); //addr
Delay(100);
SEND_FBUS(addr);
Delay(100);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,FLEX_RWN);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,FLEX_CS);
Delay(200);
AT91F_PIO_OutputDisable(AT91C_BASE_PIOA,FLEX_ADBUS);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,FLEX_ADN);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,FLEX_DIR); //DATA
while(( AT91F_PIO_GetInput(AT91C_BASE_PIOA) &FLEX_RDY));
// Delay(200);
temp = GET_FBUS();
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,FLEX_CS);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,FLEX_DIR);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,FLEX_ADN);
return(temp);
}
int FLEX_MON()
{
int temp;
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,FLEX_CS);
AT91F_PIO_OutputDisable(AT91C_BASE_PIOA,FLEX_ADBUS);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,FLEX_ADN);
while(!( AT91F_PIO_GetInput(AT91C_BASE_PIOA) &FLEX_RDY));
// if(!MP3_DECT)
{
temp = GET_FBUS();
AT91F_DBGU_Printk(&temp);
while(( AT91F_PIO_GetInput(AT91C_BASE_PIOA) &FLEX_RDY));
temp = GET_FBUS();
AT91F_DBGU_Printk(&temp);
}
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,FLEX_CS);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,FLEX_ADN);
return(0);
}
void FLEX_WRITE(int addr,int x)
{
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,FLEX_ADN); //245 IS PUT ADDR
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,FLEX_DIR); //addr
Delay(100);
SEND_FBUS(addr);
Delay(100);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,FLEX_RWN);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,FLEX_CS);
Delay(100);
SEND_FBUS(x);
Delay(100);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,FLEX_DIR);//addr
while(( AT91F_PIO_GetInput(AT91C_BASE_PIOA) &FLEX_RDY));
AT91F_PIO_OutputDisable(AT91C_BASE_PIOA,FLEX_ADBUS);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,FLEX_CS);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,FLEX_RWN);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,FLEX_DIR);
}
void ACM_SWITCH_XY(int x,int y,int val)
{
int tmp;
tmp = x | (y<<4);
tmp = tmp | (val << 7);
SEND_FBUS(tmp);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,ACM_CS);
Delay(100);
AT91F_PIO_SetOutput(AT91C_BASE_PIOA,ACM_CS);
}
int MPe_ACK()
{
return(( AT91F_PIO_GetInput(AT91C_BASE_PIOA) &MP3_ACK));
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -