Вот, набросал небольшой примерчик по обработке одной кнопки, которая находится на P1.0 и при нажатии P1.0="0".
Код: Выделить всё
;========================;
retWaitP: jb P1.0,$ ;ждём нажатия кнопки...
;... кнопка нажата, делаем проверку достоверности нажатия через 1ms три или более раза
;.... таким образом уходим от дребезга контактов............................
call pause ; пауза не менее 1ms
jb P1.0,retWaitP ;если дребезг, то опять ждём...
call pause ; 1ms
jb P1.0,retWaitP ;
call pause ; 1ms
jb P1.0,retWaitP ;
;...............................................;
;....... кнопка нажата, что-то делаем или
;....... ждём когда кнопка будет отжата и
;....... потом будем что-то делать
;...............................................;
retWaitN: jnb P1.0,$ ;ждём когда кнопка будет отпущена...
call pause ; 1ms
jnb P1.0,retWaitN ;если дребезг, то опять ждём...
call pause ; 1ms
jnb P1.0,retWaitN ;
call pause ; 1ms
jnb P1.0,retWaitN ;
;...............................................;
;....... кнопка отпущена, что-то делаем.........;
;========================;Это с одной кнопкой..., у вас группа кнопок, обработка будет более ветеевато, но по такомуже принципу.
