导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→8279的应用问题[求助][flora_qqq]

 *第20539篇: 8279的应用问题[求助]

  
楼 主:flora_qqq 2008年4月25日11:41
 8279的应用问题[求助]
在用8279做一个键盘显示的东西,在调试中发现上电复位后,4位显示总是显示8,测试单片机的WR RD端总是输出高,按按键后8279的IRQ端没有输出,麻烦各位大侠,帮忙看看!程序如下:
//8279键盘和显示程序
#include  <at89x51.h>  
#include  <absacc.h>  
#include  <stdio.h>  
#define COM8279  XBYTE [0xF2FF]     //定义8279控制口
#define DATA8279 XBYTE [0xF0FF]    //定义8279数据口
#define uchar unsigned char   
#define uint unsigned int

uint keyval;   //定义键内码传递参数;
uint time;    //定义延时参数;

void delay(uint time);
void key(void);

void main()
 {
  delay(1300);                //开机延时
  COM8279 = 0xD3;             //清除RAM和FIFO
  delay(1);
  EA=1;
  EX1=1;                    //开总中断,开外部中断1;
  IT1=1;                   //外部中断1选用下降沿
  
  COM8279=0x00;         //8279键盘双键互锁,编码扫描,左端入口
  COM8279=0x32;        //时钟分频设置,分频数为18
  COM8279=0x70;     //设置读显示命令
  COM8279=0x90;    //设置写显示命令
  while(1);
 }                     

void delay (uint time)      //传递参数为time
 {
  uchar j;
  while (time--)          //用time-1来进行循环/
  {
   for (j=100;j>  0;j--)     //用j来进行125次循环,大约8us
    {;}
  }
 }


 void intsvr1(void) interrupt 2 using 1
 {
  keyval=DATA8279;
  key();
 }

//按键确认程序
void key(void)

 switch(keyval)
 {
  case 0xC3:   //0号键赋值;
  {
   P0=0x3F;      
   DATA8279=P0;
   break;
  }
  
  case 0xC2:   //1号键赋值;
  {
   P0=0x06;
   DATA8279=P0;
   break;
  }
  
  case 0xC1:   //2号键赋值;
  {
   P0=0x5B;
   DATA8279=P0;
   break;
  }
  
  case 0xc0:   //3号键赋值;
   {
    P0=0x4F;
 DATA8279=P0;
    break;
  }
  
  case 0xCB:   //4号键赋值;
   {
    P0=0x66;
 DATA8279=P0;
    break;
  }

  case 0xCC:   //5号键赋值;
   {
    P0=0x6D;
 DATA8279=P0;
    break;
  }
  
  case 0xC9:   //6号键赋值;
   {
    P0=0x7D;
 DATA8279=P0;
    break;
  }

  case 0xC8:   //7号键赋值;
   {
    P0=0x07;
 DATA8279=P0;
    break;
  }

  case 0xD3:   //8号键赋值;
   {
    P0=0x7F;
 DATA8279=P0;
    break;
  }

  case 0xD2:   //9号键赋值;
   {
    P0=0x6F;
 DATA8279=P0;
    break;
  }
 
  case 0xD1:   //A号键赋值;
   {
    P0=0x77;
 DATA8279=P0;
    break;
  }
  
  case 0xD0:   //B号键赋值;
   {
    P0=0x7C;
 DATA8279=P0;
    break;
  }
  
  case 0xE3:   //C号键赋值;
   {
    P0=0x39;
 DATA8279=P0;
    break;
  }
  
  case 0xE1:   //D号键赋值;
   {
    P0=0x5E;
 DATA8279=P0;
    break;
  }
  
  case 0xE2:   //E号键赋值;
   {
    P0=0x79;
 DATA8279=P0;
    break;
  }
 
  case 0xE0:   //F号键赋值;
   {
    P0=0x71;
 DATA8279=P0;
    break; 
   }
   default:
   break;
}
}

  
2楼:thywyj 2008年4月25日16:20
 
COM8279=0x00;         //8279键盘双键互锁,编码扫描,左端入口
  COM8279=0x32;        //时钟分频设置,分频数为18
  COM8279=0x70;     //设置读显示命令
  COM8279=0x90;    //设置写显示命令
  

直接就能输出?
后面得有写命令吧

  
3楼:flora_qqq 2008年4月28日14:44
 后面要有写命令是什么意思呀?
后面得有写命令,不太明白?

>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:用2051画了简单波形发生器电路图,请教程序在线等

[下一篇主题]:谁打开过*.A的库文件?