这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ㄐ偶际?PS 接收PS/2条形码扫描器数据源程序,有问题!!

共2条 1/1 1 跳转至

ㄐ偶际?PS 接收PS/2条形码扫描器数据源程序,有问题!!

院士
2006-09-17 18:14:16     打赏
ㄐ偶际?PS 接收PS/2条形码扫描器数据源程序,有问题!!



关键词: ㄐ偶     接收     条形码     扫描器     数据     源程序     有问题    

院士
2006-12-22 22:43:00     打赏
2楼
问 用外部中断去读取PS/2接口的数据端,但是发现从头到尾的数据位都为1,显然是有错误,请大家看看有什么问题!!

//========================================================
//            读取条形码扫描器传送的编码数据程序
//========================================================
#include "SPCE061A.h"
#define  CLK_Port         0x0004    //IOB2接时钟口   
#define  Data_Port        0x0001    //IOB0接数据口
void main()
{
int i;
int clkinput=0x0001,datainput;
char getchar=0x00;
//设置IOB口为悬浮式输入
*P_IOB_Dir=0x0000;
*P_IOB_Attrib=0xffff;
*P_IOB_Data=0xffff;

for(i=0;i<8;i++)
{
  while(clkinput)//等待时钟线变低,即产生下降沿
  {
     *P_Watchdog_Clear=0x0001;
     clkinput=*P_IOB_Data;
     clkinput&=CLK_Port;
  }
  datainput=*P_IOB_Data; //立刻读数据端获得数据位
  datainput&=Data_Port;
  getchar|=datainput;
  getchar<<=1;           //左移一位准备接收下一位
  getchar&=0xfffe;      
  while(!clkinput)//等待时钟线变高,一位数据接受完毕准备下次接收
  {
   *P_Watchdog_Clear=0x0001;
   clkinput=*P_IOB_Data;
   clkinput&=CLK_Port;
  }
     *P_Watchdog_Clear=0x0001;
}
while(1)
{
  *P_Watchdog_Clear=0x0001;
}
}
1: 这样试试for(i=0;i<8;i++)
{
  getchar<<=1;           //左移一位准备接收下一位
  getchar&=0xfffe;     
  while(clkinput)//等待时钟线变低,即产生下降沿
  {
     *P_Watchdog_Clear=0x0001;
     clkinput=*P_IOB_Data;
     clkinput&=CLK_Port;
  }
  datainput=*P_IOB_Data; //立刻读数据端获得数据位
  datainput&=Data_Port;
  getchar|=datainput;

  while(!clkinput)//等待时钟线变高,一位数据接受完毕准备下次接收
  {
   *P_Watchdog_Clear=0x0001;
   clkinput=*P_IOB_Data;
   clkinput&=CLK_Port;
  }
     *P_Watchdog_Clear=0x0001;
}
2: 请问这样跟上面的有什么不同吗?请问这样跟上面的有什么不同吗? 3: 按照你原来的程序,8位的最低一位会丢失

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]