Сообщение от
Евгений Кислов
Вот пример.
Example_MacroRtrig.txp
Для каждого бита потребуется доп. бит, чтобы помнить о предыдущем состоянии.
Зуммер может быть глобальным - тогда будет работать независимо от открытого экрана.
Сложность еще в том что биты у меня храняться в PSW. Написал следующую функцию:
Код:
void AlarmEdge(WORD NumWord, WORD NumBit){
if( (PSW[NumWord]&(1<<NumBit)) && !(PSW[NumWord+50]&(1<<NumBit)) )
{
Beep();
PSW[NumWord+50] = 1 | (1<<NumBit);
}
else if ((PSW[NumWord]&(1<<NumBit))!=0)
{
PSW[NumWord+50] = 0 | (1<<NumBit);
}
}
Работает если только один бит сработал, если при включенном бите сработает еще один, то тогда начинает пищать постоянно.