CH454显示问题

您好,我调试键盘和数码管的时候,中断出现了问题,刚开始我让数码管全部点亮,然后想通过键盘中断让某一位数码管闪烁,运行开始时,数码管全部点亮,我摁一个键,某位闪烁后,但是一直闪烁,不停,我在摁其他键不管用,相对应的数码管耶不执行闪烁命令,请问怎么回事?时我的中断有问题吗?

CH454_Write( CH454_TWINKLE | 0x01 );//Dig0控制的数码管闪烁 //此命令发出后Dig0控制的数码管会一直闪烁

CH454_Write( CH454_TWINKLE | 0x00 );//Dig0控制的数码管不闪烁 //此命令发出后Dig0控制的数码管会停止闪烁

要想只闪烁一小会,可以这样 CH454_Write( CH454_TWINKLE | 0x01 );//Dig0控制的数码管闪烁 DelaymS( 0xXX ); CH454_Write( CH454_TWINKLE | 0x00 );//Dig0控制的数码管不闪烁

使用中断的话,注意在执行CH454_Write( 0xXXXX )命令之前先关闭中断,执行完再打开中断。执行CH454_Read( 0xXXXX )命令之前先关闭中断,执行完再打开中断。


Ashin: 您好,我按您说的方法实验了一下还是不行,刚开始上电的时候,我的中断线为高电平,中断一次后,就一直没低电平,然后不论我怎么按,都没有效果,我怀疑是中短线INT没有恢复为高电平,导致没法执行以后的中断程序,你说对吗? 芯片中的INT线在中断后应该是自动置为高电平的吗???如果这样的话,为什么我测的一直为低电平那?我可不可手动将它恢复为高电平那?


上边打错了 中断一次后,就一直为低电平 请您尽快恢复,急。。。。


INT线为高电平,按下按键后INT线变为低电平,CH454_Read( 0x0700 )命令读取按键键值后,INT线恢复为高电平。


谢谢。。问题已解决。。十分感谢。。。。


不客气。


还有一问题: 我按照下边耶就是从网站上下载的程序进行实验时,为什么没反应那?

while(1) { ch454_key = 0xff; while( ch454_key == 0xff ); //等待中断

a = ch454_key & 0x3F;//按键数值 b = a;//转换十进制数据 a /= 10;//十位 b %= 10;//个位

//移位 vL[3] = vL[2]; vL[2] = vL[1]; vL[1] = vL[0]; vL[0] = a; vH[3] = vH[2]; vH[2] = vH[1]; vH[1] = vH[0]; vH[0] = b; ch454_write( CH454_DIG1_LO | mBCD[vL[0]] ); ch454_write( CH454_DIG0_LO | mBCD[vH[0]] ); ch454_write( CH454_DIG3_LO | mBCD[vL[1]] ); ch454_write( CH454_DIG2_LO | mBCD[vH[1]] ); ch454_write( CH454_DIG5_LO | mBCD[vL[2]] ); ch454_write( CH454_DIG4_LO | mBCD[vH[2]] ); ch454_write( CH454_DIG7_LO | mBCD[vL[3]] ); ch454_write( CH454_DIG6_LO | mBCD[vH[3]] );

while(1) { a = CH454_Read( 0x0700 ); if( a & 0x40 )//未释放 { ch454_write( CH454_TWINKLE | 0xff );//全闪烁 } else//释放 { ch454_write( CH454_TWINKLE );//全不闪烁 break; } } } 我的中断程序是这样的: { ch454_key = CH454_Read( 0x0700 ); ch454_write( CH454_DIG0_LO | mBCD[7] ); DELAY(200); ch454_write( CH454_DIG0_LO | mBCD[0] ); } 按键后只执行中断,不执行WHILE语句,怎么办????????、 烦请您帮忙。。。。。。。十分感谢。。。。。。。。。。


怀疑你读出的ch454_key是0xFF

这样,中断里面 ch454_key = CH454_Read( 0x0700 ); ch454_write( CH454_DIG0_LO | mBCD[ ch454_key & 0x0F ] ); DELAY(200); ch454_write( CH454_DIG0_L1 | mBCD[ (ch454_key>>4) & 0x0F ] ); }

看看读出的按键是什么?

如果读出的值是0xFF,那就说明你的CH454_Read函数里面有问题。检查哪里写错了,可参考CH454的AVR例子中的CH454_Read函数。


只有登录才能回复,可以选择微信账号登录