Čítač inpulsu pro Pic 12F629

Mahoney> OK omlouvám se. já ty pravidla fóra ani moc nečet. :slight_smile: Nemám problém se zveřejněním kódu,ale ten kód je neodzkoušený a je spíchnutý na rychlo.Vzhledem k možnostem PNP pascalu jsem použil část kódu,který PMP (snad) chápe správně.Pokud by někldo chtěl tento kód použít do XC8,jde to napsat jinak.Celkově princip jsem použil ten nejjednodušší (pro příklad,inspiraci).Efektivnější je použít způsob,při kterém inkrementace i vyhodnocení probíhá na HW úrovni (s minimem prtogramového kódu). Je na tazateli samotném,aby kód přehodnotil a případně upravil podle svého.Fakt je že tazatel ani nenapsal jak se kód chová a jestli stíhá.

Takže program bez záruky funkčnosti:

[code]
(* for PMP Pascal compiler 2.1.4.111
http://www.pmpcomp.fr/
*)
program delicka;

{$PROCESSOR PIC12F629}
{$FREQUENCY 4 MHz}
{$CONFIG FOSC = INTRC_OSC_NOCLKOUT , CP=OFF ,CPD=OFF ,BOREN=OFF, MCLRE=OFF ,PWRTE=OFF ,WDTE=OFF}

var
Cykl: byte;
Vstup:boolean @ GPIO.GP2; //pin 5
Vystup:boolean @ GPIO.GP0;//pin 7

(Hlavní program)
begin
CMCON:=7; //zákaz komparátoru
VRCON := 0; // vref vypnuta
WPU:=0; //pull-up zakázáno
TRISIO.TRISIO2:=true; // GP2(pin 5) konfigurován jako vstup
TRISIO.TRISIO0:=false; //GP0(pin 7) konfigurován jako výstup
GPIO:=0; //nastavení IO portu do log 0
Cykl:=0; //pro jistotu
(* hlavní (nekonecná) smycka hlavního programu *)
while(1) do
begin
while(not vstup)do ; //ceká se na pulz
inc(Cykl); //inkrementace pocadla
if Cykl=10 then
begin
Vystup:=true; //zapnutí pulzu výstupu
// Delay(20); //Délka pulzu výstupu v mikrosekundách -použít podle potreby
// vystup:=false; //vypnutí výstupu -použít podle potreby
end;
while(vstup)do ; //ceká se až pulz skoncí
vystup:=false; //vypnutí výstupu -pokud je pouzita cast kódu Delay(20); tak neni treba
if cykl>=10 then cykl:=0; //nulování pocítadla v pomeru 10:1

end;

end.[/code]

:020000040000FA
:020000000528D1
:080008000900BF01073083125B
:1000100003139900831699019501051505108312A4
:100020008501A00183120313051D1228A00A2008D0
:100030000A3A031905148312031305191B28051026
:1000400020080A3C3E14031D031C3E103E181228D3
:06005000A00112280628A1
:08400000803F803F803F803FBC
:02400E00943FDD
:00000001FF