Postovana gospodo treba mi pomoc oko jednog problema. Napisao sam program u C-u i on na prvi pogled radi odlicno medjutim po startovanju programa se posle odredjenog vremena ukljuci disasembler i poruka *** error 65: access violation at C:0xFF00 : no 'execute/read' permission .U cemu je fora, trazio sam razna objasnjenja na netu ali bez mnogo uspeha.
Evo i koda:
#include <REG2051.H>
// po startovanju programa P1_4, P1_6 i P1_7 treba da se postavi na "0"
#define SL P1_4 // ulaz - detektor otvorene kapije
#define SR P1_5 // ulaz - detektor zatvorene kapije
#define A P1_6 // izlaz - biranje smera obrtanja motora
#define EN P1_7 // izlaz - pokretanje motora
unsigned char F = 0x00;
unsigned char PF = 0;
void Go_To_Sleep (void)
{
PCON = 0x01;
}
void main (void)
{
IT0 = 0; // Configure interrupt 0 for rising edge on /INT0 (P3.2)
EX0 = 1; // Enable EX0 Interrupt
EA = 1; // Enable Global Interrupt Flag
Go_To_Sleep ();
}
void Ext_Int (void) interrupt 0
{
F=~F;
if(F==0x00) // provera polozaja kapije
{
A=0; // biranje smera obrtanja motora
}
else
{
A=1; // biranje smera obrtanja motora
}
while(PF==0) // vrti dok kapija ne dodje u krajnji desni(zatvoreni) ili levi(otvoreni) polozaj
{
EN=1; // paljenje motora
if(A==0) // provera smera obrtanja motora
{
if(SR==1) // proverava se da li je kapija dosla u krajnji desni(zatvoreni) polozaj
{
PF=1; // postavlja pomocni fleg na 1 za prekida rada motora
}
}
else
{
if(SL==1) // proverava se da li je kapija dosla u krajnji levi(otvoreni) polozaj
{
PF=1; // postavlja pomocni fleg na 1 za prekid rada motora
}
}
}
EN=0; // gasenje motora
PF=0;
}
[Ovu poruku je menjao Brelak dana 17.10.2009. u 11:17 GMT+1]