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

[复制链接]
4577|2
 楼主| zkkov2000 发表于 2009-2-19 10:13 | 显示全部楼层 |阅读模式
本人使用AT89C51控制CH452,只用到其键盘功能.但程序写好后,一直的不到LOAD产生的中断信号,有能人帮忙解决下吗:<br />//////----------------<br />sbit&nbsp;DCLK=P1^5;<br />sbit&nbsp;DIN=P1^4;<br />sbit&nbsp;LOAD=P1^6;//暂时由P1.6作为CH452的LOAD信号输入<br />sbit&nbsp;DOUT=P3^2;<br />/////------------<br />#define&nbsp;CH452_KEY_LOAD_SET&nbsp;&nbsp;LOAD=1<br />#define&nbsp;CH452_KEY_LOAD_CLR&nbsp;&nbsp;LOAD=0<br />#define&nbsp;CH452_KEY_DIN_SET&nbsp;&nbsp;DIN=1<br />#define&nbsp;CH452_KEY_DIN_CLR&nbsp;&nbsp;DIN=0<br />#define&nbsp;CH452_KEY_DCLK_SET&nbsp;&nbsp;DCLK=1<br />#define&nbsp;CH452_KEY_DCLK_CLR&nbsp;&nbsp;DCLK=0<br />///----------------51初始化<br />void&nbsp;AT89C51_Init()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TCON|=0x01;//中断0下降沿触发;<br />&nbsp;&nbsp;&nbsp;&nbsp;EA=1;//全局中断允许;<br />&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_INT0_ON;//中断0允许;<br />}<br />/////////////////////CH452初始化<br />void&nbsp;CH452_Init()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Uint&nbsp;CH452_SYS_SET=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;CH452_SYS_SET=CH452_SYS_COM|CH452_KEY_KEYB_ON|CH452_KEY_INTM_ON;//CH452系统参数设置:开键盘功能边沿中断<br />&nbsp;&nbsp;&nbsp;&nbsp;WriteCH452(CH452_RESET);<br />&nbsp;&nbsp;&nbsp;&nbsp;WriteCH452(CH452_SYS_SET);<br />}<br />/////////////向CH452发命令<br />void&nbsp;WriteCH452(Uint&nbsp;command)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Uchar&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_INT0_OFF;//51禁止452产生的中断<br />&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_LOAD_CLR;//LOAD低电平<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt12;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(command&0x0001)CH452_KEY_DIN_SET;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;CH452_KEY_DIN_CLR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//DIN=command&0x0001;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_DCLK_CLR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command&gt&gt=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_DCLK_SET;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_LOAD_SET;//LOAD上升沿加载命令<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP;<br />&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_INT0_ON;//51允许452产生的中断<br />}<br />///////////////读CH452<br />Uchar&nbsp;ReadCH452()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Uchar&nbsp;i,j;<br />&nbsp;&nbsp;&nbsp;&nbsp;Uchar&nbsp;key=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;Uchar&nbsp;read;<br />&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_INT0_OFF;<br />&nbsp;&nbsp;&nbsp;&nbsp;read=CH452_R_COM;<br />&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_LOAD_CLR;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt4;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(read&0x01)CH452_KEY_DIN_SET;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;CH452_KEY_DIN_CLR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//DIN=read&0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_DCLK_CLR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;read&gt&gt=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_DCLK_SET;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_LOAD_SET;//LOAD上升沿加载命令<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(j=0;j&lt7;j++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key&lt&lt=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key|=DOUT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_DCLK_CLR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_DCLK_SET;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;CH452_CLR_INT_FLAG;<br />&nbsp;&nbsp;&nbsp;&nbsp;CH452_KEY_INT0_ON;<br />&nbsp;&nbsp;&nbsp;&nbsp;return(key);<br />}<br />/////////////中断处理<br />void&nbsp;CH452_INT0()&nbsp;interrupt&nbsp;0<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;key_int_flag=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;keyboard=ReadCH452();<br />}<br />///////----main()----忽略
blueskycoco 发表于 2009-12-4 23:41 | 显示全部楼层
没在单片机上用过,在s3c2440的wince下用过,好像不用怎么初始化,你的0x2a这个ID能读出来吗?
 楼主| zkkov2000 发表于 2010-4-23 10:57 | 显示全部楼层
已经搞定
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

306

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部