本帖最后由 dyjhy 于 2015-6-13 10:49 编辑
下面两段内容中, 红 {MOD}表示的, code 和static 不能同时存在,如果同时存在程序就死机,只要去掉任何一个程序都能正常运行。 不知道为什么?
当然,static去掉的话,那一行要移到外面作全局变量,按键才会有效。
补充一下:板了上电,所有都正常,只要按下按键就会死机,我把key_scan里的所有东西注释掉,只留static那一条语句也会死机,这条也删掉的话就会正常。
/*7段共阴字形码表*/
const unsigned char code DB[]={ 0x3F , /*0-----0*/
0x06 , /*1-----1*/
0x5B , /*2-----2*/
0x4F , /*3-----3*/
0x66 , /*4-----4*/
0x6D , /*5-----5*/
0x7D , /*6-----6*/
0x07 , /*7-----7*/
0x7F , /*8-----8*/
0x6F , /*9-----9*/
0x77 , /*A-----10*/
0x7C , /*B-----11*/
0x39 , /*C-----12*/
0x5E , /*D-----13*/
0x79 , /*E-----14*/
0x71 , /*F-----15*/
0xBF , /*0.-----16显示小数点就是原数+16*/
0x86 , /*1.-----17*/
0xDB , /*2.-----18*/
0xCF , /*3.-----19*/
0xE6 , /*4.-----20*/
0xED , /*5.-----21*/
0xFD , /*6.-----22*/
0x87 , /*7.-----23*/
0xFF , /*8.-----24*/
0xEF , /*9.-----25*/
0x00 , /*关闭-----26*/
0x73 , /*P-----27*/
0x3E , /*U-----28*/
0x6E , /*Y-----29*/
0x76 , /*H-----30*/
0x38 , /*L-----31*/
0x40 /*'-'-----32*/
} ;
void key_scan (void) //
{
static unsigned int key_count;//SW1按键判断计数。
if(SW1==0&&key_count==0)
{
sw1_time=0;
key_count=1;
}
if(SW1&&key_count) //按键放开
{
key_count=0;
if(sw1_time>10000) key=3;
else if(sw1_time>5000) key=2;
else if(sw1_time>20) key=1;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
晚上回家试试,谢谢!
问题找到了,静态变是初始一下就好了, static unsigned char key_count=0;
但是为什么会这样呢,原因还是想不通。 不初始化默认不是0吗,code 不加时程序运行很正常的。
这次用char了。
启动函数里面是有吧data清零的,不知道是否可以。
我昨天实验时也没有初始化,也没发现问题。
一周热门 更多>