打印

关于CH452键盘驱动无中断信号的问题

[复制链接]
3534|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zkkov2000|  楼主 | 2009-2-19 10:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人使用AT89C51控制CH452,只用到其键盘功能.但程序写好后,一直的不到LOAD产生的中断信号,有能人帮忙解决下吗:
//////----------------
sbit DCLK=P1^5;
sbit DIN=P1^4;
sbit LOAD=P1^6;//暂时由P1.6作为CH452的LOAD信号输入
sbit DOUT=P3^2;
/////------------
#define CH452_KEY_LOAD_SET  LOAD=1
#define CH452_KEY_LOAD_CLR  LOAD=0
#define CH452_KEY_DIN_SET  DIN=1
#define CH452_KEY_DIN_CLR  DIN=0
#define CH452_KEY_DCLK_SET  DCLK=1
#define CH452_KEY_DCLK_CLR  DCLK=0
///----------------51初始化
void AT89C51_Init()
{
    TCON|=0x01;//中断0下降沿触发;
    EA=1;//全局中断允许;
    CH452_KEY_INT0_ON;//中断0允许;
}
/////////////////////CH452初始化
void CH452_Init()
{
    Uint CH452_SYS_SET=0;
    CH452_SYS_SET=CH452_SYS_COM|CH452_KEY_KEYB_ON|CH452_KEY_INTM_ON;//CH452系统参数设置:开键盘功能边沿中断
    WriteCH452(CH452_RESET);
    WriteCH452(CH452_SYS_SET);
}
/////////////向CH452发命令
void WriteCH452(Uint command)
{
    Uchar i;
    CH452_KEY_INT0_OFF;//51禁止452产生的中断
    CH452_KEY_LOAD_CLR;//LOAD低电平
    for(i=0;i<12;i++)
    {
        if(command&0x0001)CH452_KEY_DIN_SET;
        else CH452_KEY_DIN_CLR;
        //DIN=command&0x0001;
        CH452_KEY_DCLK_CLR;
        command>>=1;
        CH452_KEY_DCLK_SET;
    }
    CH452_KEY_LOAD_SET;//LOAD上升沿加载命令
    NOP;
    CH452_KEY_INT0_ON;//51允许452产生的中断
}
///////////////读CH452
Uchar ReadCH452()
{
    Uchar i,j;
    Uchar key=0;
    Uchar read;
    CH452_KEY_INT0_OFF;
    read=CH452_R_COM;
    CH452_KEY_LOAD_CLR;
    for(i=0;i<4;i++)
    {
        if(read&0x01)CH452_KEY_DIN_SET;
        else CH452_KEY_DIN_CLR;
        //DIN=read&0x01;
        CH452_KEY_DCLK_CLR;
        read>>=1;
        CH452_KEY_DCLK_SET;
    }
    CH452_KEY_LOAD_SET;//LOAD上升沿加载命令
    NOP;
    for(j=0;j<7;j++)
    {
        key<<=1;
        key|=DOUT;
        NOP;
        CH452_KEY_DCLK_CLR;
        NOP;
        CH452_KEY_DCLK_SET;
    }
    CH452_CLR_INT_FLAG;
    CH452_KEY_INT0_ON;
    return(key);
}
/////////////中断处理
void CH452_INT0() interrupt 0
{
    key_int_flag=1;
    keyboard=ReadCH452();
}
///////----main()----忽略

相关帖子

沙发
blueskycoco| | 2009-12-4 23:41 | 只看该作者
没在单片机上用过,在s3c2440的wince下用过,好像不用怎么初始化,你的0x2a这个ID能读出来吗?

使用特权

评论回复
板凳
zkkov2000|  楼主 | 2010-4-23 10:57 | 只看该作者
已经搞定

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

306

帖子

1

粉丝