智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1737|回复: 1
打印 上一主题 下一主题

想把51上的矩阵键盘程序该用飞思卡尔的做一遍,发现不行了,至今还不知道哪里有问题

[复制链接]

5

主题

76

帖子

0

精华

高级会员

Rank: 4

积分
816
QQ
威望
406
贡献
252
兑换币
236
注册时间
2013-1-22
在线时间
79 小时
跳转到指定楼层
1#
发表于 2013-2-27 14:55:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

#define uchar unsigned char
#define uint  unsigned int
#define dula PORTK_PK0
#define wela PORTK_PK1
#define dula_dir DDRK_DDRK1
#define wela_dir DDRK_DDRK0
#define DATA  PORTA
#define DATA_dir DDRA
#define  KEY     PORTB
#define KEY_dir  DDRB

byte shuma[20]={
0x03,0x9f,0x25,0x0d,
0x99,0x49,0x41,0x1f,
0x01,0x09
};


/*************************************************************/
/*                        延时函数                           */
/*************************************************************/
void delay(uint xms)
{
uint i,j;
for(j=xms;j>0;j--)
for(i=110;i>0;i--);
}


/*************************************************************/
void display(uchar num) {

  DATA=shuma[num];
  dula=1;
  dula=0;
  
  
}
/*************************************************************/

void keyscan() {

uchar temp,n;

KEY  =  0Xfe;
temp =  KEY;
temp =temp&0xf0;
if(temp!=0xf0)
{
  delay(10) ;
  temp = KEY;
  switch(temp)
  {  case 0xee :n=0;break;
     case 0xde :n=1;break;
     case 0xbe :n=2;break;
     case 0x7e :n=3;break;
  }
  while(temp!=0xf0)
   {
    temp = KEY;
    temp =temp&0xf0;
   }
   
   display(n);
}


KEY  =  0Xfd;
temp =  KEY;
temp =temp&0xf0;
if(temp!=0xf0)
{
  delay(10) ;
  temp = KEY;
  switch(temp)
  {  case 0xed :n=4;break;
     case 0xdd :n=5;break;
     case 0xbd :n=6;break;
     case 0x7d :n=7;break;
  }
  while(temp!=0xf0)
   {
    temp = KEY;
    temp =temp&0xf0;
   }
   
   display(n);
}



KEY  =  0Xfb;
temp =  KEY;
temp =temp&0xf0;
if(temp!=0xf0)
{
  delay(10) ;
  temp = KEY;
  switch(temp)
  {  case 0xeb :n=8;break;
     case 0xdb :n=9;break;
     case 0xbb :n=10;break;
     case 0x7b :n=11;break;
  }
  while(temp!=0xf0)
   {
    temp = KEY;
    temp =temp&0xf0;
   }
   
   display(n);
}



KEY  =  0Xf7;
temp =  KEY;
temp =temp&0xf0;
if(temp!=0xf0)
{
  delay(10) ;
  temp = KEY;
  switch(temp)
  {  case 0xe7 :n=12;break;
     case 0xd7 :n=13;break;
     case 0xb7 :n=14;break;
     case 0x77 :n=15;break;
  }
  while(temp!=0xf0)
   {
    temp = KEY;
    temp =temp&0xf0;
   }
   
   display(n);
  }

  
}

/*************************************************************/
void init()
{
dula_dir  =  1;
wela_dir  =  1;
DATA_dir  =  0xff;
KEY_dir   =  0xff;


}



/*************************************************************/
void main(void) {

   init();
   dula = 1;
   DATA = 0xff;
   dula = 0;
   wela = 1;
   DATA = 0xff;
   wela = 0;

  for(;;)
   {
   keyscan();
     
  }

}

5

主题

76

帖子

0

精华

高级会员

Rank: 4

积分
816
QQ
威望
406
贡献
252
兑换币
236
注册时间
2013-1-22
在线时间
79 小时
2#
 楼主| 发表于 2013-2-27 16:46:10 | 只看该作者
还是出不来  好纠结啊  希望有高手指教指教 :'(
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 01:00 , Processed in 0.048235 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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