// 读取键值, 若缓冲区为空则等待按键按下后再读取
unsigned char keyread(void)
{
while (keystat.head == keystat.rear)
feeddog();
keystat.rear++;
if (keystat.rear & 0x04)
return keypool[keystat.rear & 0x03].kva;
else
return keypool[keystat.rear & 0x03].kvb;
}
//////////////////////////////////////////////////////////
// 检测按键状态, 若有键按住返回1
/*[uncalled] bit keyisheld(void)
{
unsigned char c;
KEYBPORT |= 0x7F;
KEYBPORT &= 0x8F;
c = KEYBPORT | 0xF0;
KEYBPORT |= 0x7F;
return ~c;
}*/
////////////////////////////////////////////////////////////////
#pragma SAVE
#pragma NOAREGS
// 计算任意两次定时扫描之间的定时扫描次数
unsigned tdis(unsigned start, unsigned end)
{
if (start <= end)
return (end - start);
else
return (~(start - end) + 1);
}
#pragma RESTORE
/////////////////////////////////////////////////////////////////
各位大侠,前辈,你们好,小弟初学单片机,有些问题翻书也没有找到,比如此例中的:#pragma SAVE
#pragma NOAREGS,#pragma RESTORE
这三条语句是什么意思啊,承蒙各位前辈不吝赐教,小弟将感激不尽,不胜言表!
[此贴子已经被作者于2011-8-5 10:01:51编辑过]
|