Значи треба да се прави склоп кој што ке дели плочки со дупка и без дупка на посебни места, сакам да користам пик за тоа и напишав некој ред во MikroC арно ама не функционира како што треба, дали е до пикот дали е до кодот стварно незнам. првин не функционираше како што треба па тоа else на крај од програмот што е го коментирав и делот за лево работеше ок, го тргнав коментарот од тоа Else и почна да зафркава пак, или само работеше делот за лево, само се пушташе, некој пат само еден излез ке беше на логичка единица, и правење на мали измени во кодот како додавање на delay скроз го менуваше функционирањето на склопот. па дали знае некој што би можело да биде проблемот?
bit oldstate;
bit loop;
void left()
{
oldstate=1;
RA0_bit = 1; //motor starts to turn left
do
{
if (PORTB.b2==0) // RA2=0 on left end position
{
PORTA = 0; //on left end position RA0=0
delay_ms (100); //motor stop time
RA1_bit = 1; //motor starts to turn right RA1=1
loop=1;
do
{
if (PORTB.b3==0) //home position of the motor
{
PORTA = 0;
delay_ms (50);
oldstate=0;
loop=0;
}}
while(loop==1);
}}
while(oldstate==1);
}
//////////////////////////////////////////////////////////////////////////////////////////////
void right()
{
oldstate=1;
RA1_bit = 1; //motor starts to turn right
do
{
if (PORTB.b4==0) // RA4=0 on right end position
{
PORTA = 0; //on right end position RA0=0
delay_ms (100); //motor stop time
RA0_bit = 1; //motor starts to turn right RA0=1
loop=1;
do
{
if (PORTB.b3==0) //home position of the motor
{
PORTA = 0;
delay_ms (50);
oldstate=0;
loop=0;
}}
while(loop==1);
}}
while(oldstate==1);
}
////////////////////////////////////////////////////////////////////////////////////
void main() { //pocetok na glavna programa
TRISB = 0xff; //PORTB Output
TRISA = 0x00; //PORTA Input
CMCON = 0x07; //turn off comparators
PORTA = 0; //PORTB==0
oldstate=0;
loop=0;
do
{
if (PORTB.b1==0) //is there a cube?
{
delay_ms (100);
if (PORTA.b0==0)
{ //is tere a hole in it?
left ();
} //if there is a hole in it it moves right
}
else (right ());
} while (1);
}
иначе користам PIC16F628a со внатрешен осцилатор од 4MHz