//При нажатии на кнопку через 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;
            }
        }
    }
}



НАЗАД                                                                                                                                         ДАЛЕЕ