2.单片机写的程序显示怎么和软件调试显示的过程不同一般不要直接判断整个P3端口的值 , 建议在中间加一个变量 , 延时去抖后应该用if语句 , 完成后用一个while语句做松手检测 , 等这一切结束后再送数据给数码管显示 , 还有 , num应该取0,1,2,3 , 是取不到4的 , 如果num=4 , 显示的将会是乱码 。(0xc=1100)
P3=0xfe;
temp=P3;
temp&=0xf0;
if(temp!=0xf0)
{
delay(20);
P3=0xfe;
temp=P3;
temp&=0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case 0xe0:num=0;
break;
case 0xd0:num=1;
break;
case 0xb0:num=2;
break;
case 0x70:num=3;
break;
}
while(temp!=0xfe) //松手检测不断读取P0口的值
temp=P3;
}
}
P1=table[num];
等键盘检测程序完善之后最好把它写成一段函数 , 方便调用例如KEYSCAN();也好写成一个.c函数 , 以后每次建立工程都可以直接调用 , 最好再把P3换成一个宏定义如#define KEYPORT P3 , 方便在硬件改动时修改代码 。像矩阵键盘还有一种行列反转扫描的检测方法 , 挺不错的 , 建议你学一学哦 。
3.单片机写的程序显示怎么和软件调试显示的过程不同一般不要直接判断整个P3端口的值 , 建议在中间加一个变量 , 延时去抖后应该用if语句 , 完成后用一个while语句做松手检测 , 等这一切结束后再送数据给数码管显示 , 还有 , num应该取0,1,2,3 , 是取不到4的 , 如果num=4 , 显示的将会是乱码 。
(0xc=1100)P3=0xfe;temp=P3;temp&=0xf0;if(temp!=0xf0){delay(20);P3=0xfe;temp=P3;temp&=0xf0;if(temp!=0xf0){switch(temp){case 0xe0:num=0;break;case 0xd0:num=1;break;case 0xb0:num=2;break;case 0x70:num=3;break;}while(temp!=0xfe) //松手检测不断读取P0口的值temp=P3;}}P1=table[num];等键盘检测程序完善之后最好把它写成一段函数 , 方便调用例如KEYSCAN();也好写成一个.c函数 , 以后每次建立工程都可以直接调用 , 最好再把P3换成一个宏定义如#define KEYPORT P3 , 方便在硬件改动时修改代码 。像矩阵键盘还有一种行列反转扫描的检测方法 , 挺不错的 , 建议你学一学哦 。
【软件调试怎么写】
文章插图