PIC16F874A
Код: Выделить всё
#include "htc.h"
#include "pic.h"
__CONFIG (LP & WDTDIS & PWRTEN & LVPDIS & PROTECT);
#define _XTAL_FREQ 16000000
#define D0 RB0
#define bs(var, bitno) ((var) |= 1UL << (bitno))
#define bc(var, bitno) ((var) &= ~(1UL << (bitno)))
unsigned int n, count, freq, d1;
bit cnt_rd=0;
void interrupt encod (void){
if (INTF){
INTF=0;
count++;
}
if (T0IF) {
T0IF=0;
TMR0=100; //предустановка таймера для 10мс
n=count;
count=0;
cnt_rd=1;
}
}
void init (void){
OPTION=0b01000111;
PORTA=0;
PORTB=0;
PORTC=0;
PORTD=0;
PORTE=0;
TRISA=0b00101111;
TRISB=255;
TRISC=0;
TRISD=0;
TRISE=0b00000100;
ADCON1=6;
INTCON=0b10110000;
TMR0=7;
}
void main(void){
init ();
while (1){
if (cnt_rd) {
freq=83.34*n/10;
cnt_rd=0;
d1=freq;
}
}
}