//При нажатии на кнопку через 1 секунду к PORTB прибавляется единица.
#include<p18cxxx.h>
#include<delays.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config LVP=OFF
#pragma config MCLRE=OFF
#define MSEC Delay1KTCYx(1) //Функция задержки на 1 милисекунду
int counter;
void main(void)
{
ADCON1=0x7f;
TRISB=0;
PORTB=0;
TRISA=0xFF; //PORTA на вход
PORTA=0;
while(1){
counter=0; //Обнуляем счетчик
while((PORTA&16)==0){ //Проверяем RA4 = 00010000 = 16
MSEC; //Задержка на одну милисекунду
counter++; //Увеличиваем счетчик на единицу
if(counter==1000){ //Когда счетчик достигнет 1000=1секунда
PORTB++; //Увеличиваем на единицу PORTB
counter=0; //Обнуляем счетчик
}
}
}
}
//Пример 5.6 Проверка бита,вариант 2.
#include<p18cxxx.h>
#include<delays.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config LVP=OFF
#pragma config MCLRE=OFF
#define MSEC Delay1KTCYx(1)
int counter;
void main(void)
{
ADCON1=0x7f;
TRISB=0;
PORTB=0;
TRISA=0xFF;
PORTA=0;
while(1){
counter=0;
while(PORTAbits.RA4==0){ //Проверяем RA4
MSEC;
counter++;
if(counter==1000){
PORTB++;
counter=0;
}
}
}
}