智能车制作
标题:
大家看一段XS128的神奇但却跑得很稳的一段程序
[打印本页]
作者:
阳光里的孩子
时间:
2012-3-15 11:18
标题:
大家看一段XS128的神奇但却跑得很稳的一段程序
先说功能,实现T[0:6]口实现按键扫描的程序
/*
* T[4:6]配置为输出,扫描时为高电平
* T[0:3]配置为输入,极性为下拉
*/
void an_jian_init(void)
{
DDRT=0x70;
PERT=0x8f;
PPST=0x8f;
PTT=0x70;
}
void an_jian(unsigned char *anjian)
{
// 0 4 8
PTT=0x10;
if(PTT_PTT0==1)
{
delay_12864(1);
if(PTT_PTT0==1)
{
beep=1;
while(PTT_PTT0==1)
{
delay_12864(1);
}
beep=0;
*anjian=0;
}
}
else if(PTT_PTT0==1)
{
delay_12864(1);
if(PTT_PTT0==1)
{
beep=1;
while(PTT_PTT0==1)
{
delay_12864(1);
}
beep=0;
*anjian=0;
}
}
else if(PTT_PTT1==1)
{
beep=1;
delay_12864(1);
if(PTT_PTT1==1)
{
while(PTT_PTT1==1)
{
delay_12864(1);
}
beep=0;
*anjian=4;
}
}
else if(PTT_PTT2==1)
{
beep=1;
delay_12864(1);
if(PTT_PTT2==1)
{
while(PTT_PTT2==1)
{
delay_12864(1);
}
beep=0;
*anjian=8;
}
}
else if(PTT_PTT3==1)
{
beep=1;
delay_12864(1);
if(PTT_PTT3==1)
{
while(PTT_PTT3==1)
{
delay_12864(1);
}
beep=0;
*anjian=0;
}
}
PTT=0x20;
if(PTT_PTT0==1)
{
delay_12864(1);
if(PTT_PTT0==1)
{
beep=1;
while(PTT_PTT0==1)
{
delay_12864(1);
}
beep=0;
*anjian=0;
}
}
else if(PTT_PTT0==1)
{
delay_12864(1);
if(PTT_PTT0==1)
{
beep=1;
while(PTT_PTT0==1)
{
delay_12864(1);
}
beep=0;
*anjian=0;
}
}
else if(PTT_PTT1==1)
{
beep=1;
delay_12864(1);
if(PTT_PTT1==1)
{
while(PTT_PTT1==1)
{
delay_12864(1);
}
beep=0;
*anjian=4;
}
}
else if(PTT_PTT2==1)
{
beep=1;
delay_12864(1);
if(PTT_PTT2==1)
{
while(PTT_PTT2==1)
{
delay_12864(1);
}
beep=0;
*anjian=8;
}
}
else if(PTT_PTT3==1)
{
beep=1;
delay_12864(1);
if(PTT_PTT3==1)
{
while(PTT_PTT3==1)
{
delay_12864(1);
}
beep=0;
*anjian=0;
}
}
PTT=0x40;
if(PTT_PTT0==1)
{
delay_12864(1);
if(PTT_PTT0==1)
{
beep=1;
while(PTT_PTT0==1)
{
delay_12864(1);
}
beep=0;
*anjian=0;
}
}
else if(PTT_PTT0==1)
{
delay_12864(1);
if(PTT_PTT0==1)
{
beep=1;
while(PTT_PTT0==1)
{
delay_12864(1);
}
beep=0;
*anjian=0;
}
}
else if(PTT_PTT1==1)
{
beep=1;
delay_12864(1);
if(PTT_PTT1==1)
{
while(PTT_PTT1==1)
{
delay_12864(1);
}
beep=0;
*anjian=4;
}
}
else if(PTT_PTT2==1)
{
beep=1;
delay_12864(1);
if(PTT_PTT2==1)
{
while(PTT_PTT2==1)
{
delay_12864(1);
}
beep=0;
*anjian=8;
}
}
else if(PTT_PTT3==1)
{
beep=1;
delay_12864(1);
if(PTT_PTT3==1)
{
while(PTT_PTT3==1)
{
delay_12864(1);
}
beep=0;
*anjian=0;
}
}
}
这段程序看着很畸形,但却是我一个上午的结晶哈,无论是自操作还是其他操作,大家如果能在T口上写出来矩阵键盘程序的话分享下,大家谈论下程序中各个问题都很奇怪的啊!?
作者:
我是北丐
时间:
2012-3-15 14:10
建议参考下51单片机的键盘程序
作者:
sonwendi
时间:
2012-3-15 20:36
很奇怪吗?
T口本来就可以用做GPIO口
建议用反转法吧,代码少
作者:
天弈
时间:
2012-3-16 20:28
无语
作者:
阳光里的孩子
时间:
2012-3-18 16:03
51的配置根本就出不来,不信的话可以试试,仔细的看看,你会发现程序根本不执行第一个if而是执行else后的,但是if和else是完全一样的代码!可以试试,这是我一个晚上试出来的,拿出来让大家看的,呵呵
作者:
erchowyo
时间:
2012-3-24 22:17
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2