转载 钽电容起火、钽电容爆炸、钽电容烧了
CSDN-Ada助手:
非常感谢CSDN博主的分享,“钽电容起火、钽电容爆炸、钽电容烧了”这篇博客提醒了我们在电子设计时要注意安全问题。我觉得下一篇博客可以从电子设计的安全性角度出发,分享一些常见电子器件的安全性问题及其解决方法,这样的技术文章对其他用户也非常有用。相信会有更多读者受益于您的分享。期待您的下一篇博客哦!
为了方便博主创作,提高生产力,CSDN上线了AI写作助手功能,就在创作编辑器右侧哦~(https://mp.csdn.net/edit?utm_source=blog_comment_recall )诚邀您来加入测评,到此(https://activity.csdn.net/creatActivity?id=10450&utm_source=blog_comment_recall)发布测评文章即可获得「话题勋章」,同时还有机会拿定制奖牌。
[转]新型的按键扫描程序
vid2005:
我想我的方法也差不多,只不过是在定时器中断中使用的:定时器中断时间为10ms,即10ms检查一次按键。按键在PA的低四位下拉接法,其中的变量都是全局变量,其中flag为位变量。
char key,key_cnt,key_tmp;
bit flag;
interrupt [TIM0_COMP] void timer0_comp_isr(void)
{
key_tmp=PINA&0x0F;
if(key_tmp!=0x0F){key_cnt++;key=key_tmp;}
else if((key_cnt>=3)){flag=1;}
}
即10毫秒检查一次按键,如果检测到有按键(key_tmp不为0x0F),所以开始计数,当按键才放开时,检查键按下的时间是否超过30ms,如果是,即确认有一次按键事件,flag设置。至于在主程序中,如果有程序需要使用按键功能,就检查flag标志,如果为1就表示有按键,否则继续执行其他功能。
[转]新型的按键扫描程序
vid2005:
楼主处的程序还不是最精妙的。把程序稍改一下,可以兼容所有的电平变化:
unsigned char PreKey;
unsigned char NowKey;
volaitile unsigned char KeyCode;
void ReadKey(void)
{
PreKey = NowKey;
NowKey = PINx;
KeyCode = PreKey^NowKey^KeyCode; //注意:等式左边的KeyCode是本次读按键的结果,等式右边的KeyCode是上次读按键的结果
}
KeyCode 是全局变量,和LZ位处的Cont一样。
[转]新型的按键扫描程序
vid2005:
在这个基础上再增加一个按键释放检测功能,程序如下:
volatile unsigned char Trg;
volatile unsigned char Cont;
volatile unsigned char Release;
void KeyRead( void )
{
unsigned char ReadData = PINB^0xff; // 1 读键值
Trg = ReadData & (ReadData ^ Cont); // 2 得到按下触发值
Release= (ReadData ^ Trg ^ Cont); // 3 得到释放触发值
Cont = ReadData; // 4 得到所有未释放的键值
}