OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5961|回复: 2

遇到PS/2的一点问题,望可教导

[复制链接]

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2012-8-5
在线时间
0 小时
发表于 2012-8-6 14:28:06 | 显示全部楼层 |阅读模式

程序只是读取PS2的键码,在数码管显示,问题出现在最后,发现复位后,第一个按键的键码是正确的,而再按其他按键时,开始出现乱码;而复位后,也就只是第一次按的按键的键码才正确,调试了很久都发现不了原因,有没有哪个人可以从代码中发现错误呢?
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define _Nop() _nop_()
sbit psdata=P3^0;
sbit psclk=P3^2;

uchar code num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
uchar  sled_data[2]={16,16}; /*缓冲值*/
uchar code light[2]={0xfe,0xfd};/*定义需要点亮的数码管*/

uchar numbit;
uchar keyv;
uchar key[3];
uchar keynum;

/*1MS为单位的延时程序*/
void delay_1ms(uchar x)
{
    uchar j;
    while(x--){
     for(j=0;j<125;j++) ;
    }  
}

void main()
{
    uchar i;
    IT0=1;//外部中断下降沿触发
    EX0=1;
    EA=1;
    while(1)
    {
         if(keynum==3) //读完键码后,取第一个键码
        {
             keynum=0;
             sled_data[0]=key[0]/16;
             sled_data[1]=key[0]%16;
         }
         for(i=0;i<2;i++)     //数码管显示
         {
              P2 = 0xff; /*关闭显示*/
             _Nop();
             _Nop();
             _Nop();
             0 = num[sled_data]; /*输出段码数据到数码管*/
             2 = light; /*输出位码数据到数码管*/
             delay_1ms(1);
          }
    }
}

void int0() interrupt 0       //读取键码
{
      if((numbit>0) && (numbit<9))
      {
            keyv=keyv>>1;
           if(psdata) keyv=keyv | 0x80; 
       }
       numbit++;
      if(numbit>10)
      {
           numbit=0;
           key[keynum]=keyv; //保存键码
           keynum++;
       }
}

我要…一步…一步…向前走…
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2012-8-5
在线时间
0 小时
 楼主| 发表于 2012-8-6 14:35:14 | 显示全部楼层
哎,在这里捣乱了,低级错误!!IT0应该设为低电平才对。
我要…一步…一步…向前走…
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-8-6 15:57:16 | 显示全部楼层
哦哦...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表