препоръчително използване на NOTEPAD++ с настройка за разпознаване на С/С++ код за да можете да видите различните регистри, променливи и другите особенности на езика за програмиране на пик процесорите.
симулацията е в програмата протеус, версия последна има я в нета, или си начертайте собствена схема според графиките в предните уроци. успех
#include <xc.h>
//#include <pic16f1829.h>
#include "initcpu.h"
#include "main.h"
#include "fuse.h"
#include "timers.h" // here is interrupt function
//#include "lcd.h" // for later use in this project
void main(void)
{ init_cpu();
//PORTB = 8;
while(1)
{
// increase Postscaler value 0<>15
if(T2OUTPS_plus == 1)
{ __delay_ms(350); //delay for button
T2CONbits.T2OUTPS++;
// sum + 16 for start count from RB4
PORTB = PORTB + 16; // indicator plus + 1
if(T2CONbits.T2OUTPS == 0)
{ PORTB = 0;} // null indicator
}
// decrease Postscaler value 0<>15
if(T2OUTPS_minus == 1)
{__delay_ms(350);//delay for button
T2CONbits.T2OUTPS--;
PORTB--; // indicator minus - 1
if(T2CONbits.T2OUTPS == 0)
{ PORTB = 0; } // null indicator
}
// increase Prescale value 0<>3
if(T2CKPS_plus == 1)
{__delay_ms(350);//delay for button
T2CONbits.T2CKPS++;PORTA++;
if(T2CONbits.T2CKPS == 0)
{
PORTA = 0;
}
}
} // END WHILE
} // END MAIN
========================= TIMERS.C =============================
функцята която обработва прекъсвате е предварително дефининирана в ХС8 и трябва само да я извиката както е показано в кода по-долу. вътре във функцията нулирате флага на таймера и след това изпълнявате командите който ви трябват. колкото и софтуер да напишете в таймера честотата на който и да използвате таймер няма да се промени. което е целта на задачата.
стартирането, инициализацията на таймера и настройката на делителите на таймера се правят във този файл. промяната на стойностите на делителите може да направите където и да е в софтуера, стига това да ви върши работа. четете внимателно пдф файловете кои регистри са само четене и кои може и да бъдат променяни ако се налага от смисъла на приложението.