Chinaunix首页 | 论坛 | 博客
  • 博客访问: 421749
  • 博文数量: 55
  • 博客积分: 167
  • 博客等级: 入伍新兵
  • 技术积分: 1167
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-28 10:20
个人简介

一个算是正常的中国码农!

文章分类

全部博文(55)

文章存档

2014年(1)

2013年(31)

2012年(23)

我的朋友

分类: C/C++

2013-10-29 11:29:59

这个东西第一次接触,肯跌的一笔,我跳了好几天,主要是硬件的问题,软件给大家,希望再调试的人不要出我这样的错误;


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;
}

建议各位先看英文资料,千万不要看网上搜索的啥中文的资料,坑爹的一笔,哎,也希望各位多吧英文学好










阅读(1526) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~