这个东西第一次接触,肯跌的一笔,我跳了好几天,主要是硬件的问题,软件给大家,希望再调试的人不要出我这样的错误;
static void PI_82C54_Init( unsigned char chip , unsigned char channel)//?????????????? ??????????82c45??????
{
u8 control_data=0;
switch(channel)
{
case 0: control_data=0x30;break;
case 1: control_data=0x70;break;
case 2: control_data=0xb0;break;
default:control_data=0x30;break;
}
/*-----PE3 ??WR?????·???? PE5 RD???????·????-----*/
if(chip==0)
{
// GPIO_ResetBits(GPIOE,GPIO_Pin_3);//CLCOK ??0
GPIO_SetBits(GPIOI,GPIO_Pin_9);//?§????×?
GPIO_SetBits(GPIOE,GPIO_Pin_5); //RD????????1
GPIO_SetBits(GPIOF,GPIO_Pin_8);
GPIO_ResetBits(GPIOH,GPIO_Pin_3);//??254?è????A-->B
GPIO_SetBits(GPIOI,GPIO_Pin_10);//A1
GPIO_SetBits(GPIOF,GPIO_Pin_9);//A0 ??????×?A1 A0?? 11
GPIO_ResetBits(GPIOC,GPIO_Pin_13);//??????????;
PI_DATA_Send(control_data); //????????×???0x30??·???2????????·????è??????????
// PI_DATA_Send(0x70);
GPIO_ResetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
delay_10ns(10);//???????????±??2ns ?¨???±????120????
GPIO_SetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
GPIO_SetBits(GPIOC,GPIO_Pin_13);//?§??????
/*-----------?????????????÷????×???????----------------------------------*/
channel_change(channel);
// GPIO_ResetBits(GPIOI,GPIO_Pin_10);//A1
// GPIO_SetBits(GPIOF,GPIO_Pin_9);//A0 ??????×?A1 A0?? 00?????????¨??0??????
GPIO_ResetBits(GPIOC,GPIO_Pin_13);//??????????;
PI_DATA_Send(0x88);//????????????????0xaa;
GPIO_ResetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
delay_10ns(10);//???????????±??2ns ?¨???±????120????
GPIO_SetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
GPIO_SetBits(GPIOC,GPIO_Pin_13);//?§?????? ?????????????????????è??
/*------------????????????????×????????????????÷-------------------------*/
GPIO_ResetBits(GPIOC,GPIO_Pin_13);//??????????;
PI_DATA_Send(0x55);//????????????????0xaa;
GPIO_ResetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
delay_10ns(10);//???????????±??2ns ?¨???±????120????
GPIO_SetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
GPIO_SetBits(GPIOC,GPIO_Pin_13);//?§?????? ?????????????????????è??
/*------------------??????·?×???????????????????????????clock???ó????·?????
????????????clock????????????????????????±?????????????
???????è?????°????????
------------------------------------------------*/
// GPIO_ResetBits(GPIOH,GPIO_Pin_5);//CLCOK ??0
// delay_10ns(100);//???????????±??2ns ?¨???±????120????
// GPIO_SetBits(GPIOH,GPIO_Pin_5);//CLCOK ??1
// delay_10ns(100);//???????????±??2ns ?¨???±????120????
// GPIO_ResetBits(GPIOH,GPIO_Pin_5);//CLCOK ??0
}
if(chip==1)
{
// GPIO_ResetBits(GPIOE,GPIO_Pin_3);//CLCOK ??0
GPIO_SetBits(GPIOC,GPIO_Pin_13);//?§????×?(GPIOI,GPIO_Pin_9)
GPIO_SetBits(GPIOE,GPIO_Pin_5); //RD????????1
GPIO_SetBits(GPIOF,GPIO_Pin_8);
GPIO_ResetBits(GPIOH,GPIO_Pin_3);//??254?è????A-->B
GPIO_SetBits(GPIOI,GPIO_Pin_10);//A1
GPIO_SetBits(GPIOF,GPIO_Pin_9);//A0 ??????×?A1 A0?? 11
GPIO_ResetBits(GPIOI,GPIO_Pin_9);//??????????;(GPIOC,GPIO_Pin_13)
PI_DATA_Send(control_data); //????????×???0x30??·???2????????·????è??????????
GPIO_ResetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
delay_10ns(10);//???????????±??2ns ?¨???±????120????
GPIO_SetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
GPIO_SetBits(GPIOI,GPIO_Pin_9);//?§??????
/*-----------?????????????÷????×???????----------------------------------*/
channel_change(channel);
// GPIO_ResetBits(GPIOI,GPIO_Pin_10);//A1
// GPIO_ResetBits(GPIOF,GPIO_Pin_0);//A0 ??????×?A1 A0?? 00?????????¨??0??????
GPIO_ResetBits(GPIOI,GPIO_Pin_9);//??????????;
PI_DATA_Send(0xbb);//????????????????0xaa;
GPIO_ResetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
delay_10ns(10);//???????????±??2ns ?¨???±????120????
GPIO_SetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
GPIO_SetBits(GPIOI,GPIO_Pin_9);//?§?????? ?????????????????????è??
/*------------????????????????×????????????????÷-------------------------*/
GPIO_ResetBits(GPIOI,GPIO_Pin_9);//??????????;
PI_DATA_Send(0xaa);//????????????????0xaa;
GPIO_ResetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
delay_10ns(10);//???????????±??2ns ?¨???±????120????
GPIO_SetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
GPIO_SetBits(GPIOI,GPIO_Pin_9);//?§?????? ?????????????????????è??
/*------------------??????·?×???????????????????????????clock???ó????·?????
????????????clock????????????????????????±?????????????
???????è?????°????????
------------------------------------------------*/
// GPIO_ResetBits(GPIOH,GPIO_Pin_5);//CLCOK ??0
// delay_10ns(100);//???????????±??2ns ?¨???±????120????
// GPIO_SetBits(GPIOH,GPIO_Pin_5);//CLCOK ??1
// delay_10ns(100);//???????????±??2ns ?¨???±????120????
// GPIO_ResetBits(GPIOH,GPIO_Pin_5);//CLCOK ??0
}
}
uint16_t PI_Accept_Data(unsigned char chip , unsigned char channel) //±??????????????????¨?????????????????????? ?????????????¨??
{
uint16_t DATA_LOW=0,DATA_HELGHT=0,DATA_VALUE=0;
u8 control_data=0;
switch(channel)
{
case 0: control_data=0x00;break;
case 1: control_data=0x40;break;
case 2: control_data=0x80;break;
default:control_data=0x00;break;
}
if(chip==0)
{
//?è???¨??0
GPIO_SetBits(GPIOI,GPIO_Pin_10);//A1
GPIO_SetBits(GPIOF,GPIO_Pin_9);//A0 ??????×?A1 A0?? 11
GPIO_SetBits(GPIOF,GPIO_Pin_8);
GPIO_ResetBits(GPIOH,GPIO_Pin_3);//??254?è????A-->B
delay_10ns(10);//???????????±??2ns ?¨???±????120????
GPIO_ResetBits(GPIOC,GPIO_Pin_13);//??????????;
PI_DATA_Send(control_data); //????????×???0x30??·???2????????·????è??????????
// PI_DATA_Send(0x40);
GPIO_ResetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
delay_10ns(10);//???????????±??2ns ?¨???±????120????
GPIO_SetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
// GPIO_SetBits(GPIOC,GPIO_Pin_13);//?§??????
/*----------------???????????÷???????????÷??------------------------------------------------*/
// GPIO_ResetBits(GPIOC,GPIO_Pin_13);//?§??????
GPIO_ResetBits(GPIOF,GPIO_Pin_8);
GPIO_ResetBits(GPIOH,GPIO_Pin_3); //?????è??254??????·??ò??B-->A
delay_10ns(10);
channel_change(channel);
// GPIO_ResetBits(GPIOI,GPIO_Pin_10);//A1
// GPIO_SetBits(GPIOF,GPIO_Pin_9);//A0 ??????×?A1 A0?? 00 ?????¨??0
GPIO_ResetBits(GPIOE,GPIO_Pin_5); //RD=1 ·???????
delay_10ns(10);//???????????±??2ns ?¨???±????120????
DATA_LOW=PI_DATA_Accept() ; //??????????
// temp_test=PI_DATA_Accept();
GPIO_SetBits(GPIOE,GPIO_Pin_5);//W/R?è??????
GPIO_SetBits(GPIOC,GPIO_Pin_13);//?§??????
delay_10ns(20);//???????????±??2ns ?¨???±????240???? ·?????????????;
GPIO_ResetBits(GPIOC,GPIO_Pin_13);//?§??????
GPIO_ResetBits(GPIOE,GPIO_Pin_5); //RD=1 ·???????
delay_10ns(10);//???????????±??2ns ?¨???±????120????
DATA_HELGHT=PI_DATA_Accept(); //????????
// temp_test=PI_DATA_Accept();
GPIO_SetBits(GPIOE,GPIO_Pin_5);//W/R?è??????
GPIO_SetBits(GPIOC,GPIO_Pin_13);//?§??????
// count(1);
}
if(chip==1)
{
//?è???¨??0
GPIO_SetBits(GPIOI,GPIO_Pin_10);//A1
GPIO_SetBits(GPIOF,GPIO_Pin_9);//A0 ??????×?A1 A0?? 11
GPIO_SetBits(GPIOF,GPIO_Pin_8);
GPIO_ResetBits(GPIOH,GPIO_Pin_3);//??254?è????A-->B
delay_10ns(10);//???????????±??2ns ?¨???±????120????
GPIO_ResetBits(GPIOI,GPIO_Pin_9);//??????????;
PI_DATA_Send(control_data); //????????×???0x30??·???2????????·????è??????????
GPIO_ResetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
delay_10ns(10);//???????????±??2ns ?¨???±????120????
GPIO_SetBits(GPIOE,GPIO_Pin_3);//W/R?è??????
// GPIO_SetBits(GPIOC,GPIO_Pin_13);//?§??????
/*----------------???????????÷???????????÷??------------------------------------------------*/
// GPIO_ResetBits(GPIOC,GPIO_Pin_13);//?§??????
GPIO_ResetBits(GPIOF,GPIO_Pin_8);
GPIO_ResetBits(GPIOH,GPIO_Pin_3); //?????è??254??????·??ò??B-->A
delay_10ns(10);
channel_change(channel);
// GPIO_ResetBits(GPIOI,GPIO_Pin_10);//A1
// GPIO_ResetBits(GPIOF,GPIO_Pin_0);//A0 ??????×?A1 A0?? 00 ?????¨??0
GPIO_ResetBits(GPIOE,GPIO_Pin_5); //RD=1 ·???????
delay_10ns(10);//???????????±??2ns ?¨???±????120????
DATA_LOW=PI_DATA_Accept() ; //??????????
// temp_test=PI_DATA_Accept();
GPIO_SetBits(GPIOE,GPIO_Pin_5);//W/R?è??????
GPIO_SetBits(GPIOI,GPIO_Pin_9);//?§??????
delay_10ns(20);//???????????±??2ns ?¨???±????240???? ·?????????????;
GPIO_ResetBits(GPIOI,GPIO_Pin_9);//?§??????
GPIO_ResetBits(GPIOE,GPIO_Pin_5); //RD=1 ·???????
delay_10ns(10);//???????????±??2ns ?¨???±????120????
DATA_HELGHT=PI_DATA_Accept(); //????????
// temp_test=PI_DATA_Accept();
GPIO_SetBits(GPIOE,GPIO_Pin_5);//W/R?è??????
GPIO_SetBits(GPIOI,GPIO_Pin_9);//?§??????
// count(1);
}
DATA_VALUE=DATA_HELGHT*256+DATA_LOW;
return DATA_VALUE;
}
建议各位先看英文资料,千万不要看网上搜索的啥中文的资料,坑爹的一笔,哎,也希望各位多吧英文学好
阅读(1522) | 评论(0) | 转发(1) |