Exemple #1
0
/* alinea 7 */
int main(void)
{
    unsigned char sw_tmp=0;
    
    Inic();
    Sistema = OFF;
    PORTA &= 0xF7; // Led OFF
    
    while(1)
    {
        sw_tmp = PINA & 0x07; // ler switches
        
        switch (sw_tmp)
        {
            case sw_ON: // se S1 activado
                if ((Leitura_AD > 461) && (Leitura_AD < 562))
                {
                    Sistema = ON;
                    PORTA |= 8; // Led ON
                }
                break;
                
            case sw_OFF: // se S2 activado
                if ( (Leitura_AD > 461) && (Leitura_AD < 562))
                {
                    Sistema = OFF;
                    PORTA &= 0xF7; // LED OFF
                }
                break;
                
            case STOP: // se S3 activado
                OCR2 = 0; // motor OFF
                Sistema=OFF;
                PORTA &= 0xF7; // LED OFF
        }
        
        if (Sistema == ON)
        {
            if (Fim_Conversao)
            {
                Calcula_PWM();
                Fim_Conversao = 0;
            }
            
            if (Flag_TX == ON)
            {
                Print();
                Flag_TX = OFF;
            }
        }
    }
}
Exemple #2
0
int main() {
    double X, Y, Z;
    double max, N, t1, t2;
    double owx, owy, owz, c, e;
    double Fi, Fj, Fk, F1;

    int i, j, k, mi, mj, mk;
    int R, fl, fl1, fl2;
    int it,f, L0, L1;
    long int osdt;
    struct timeval tv1, tv2;
    it = 0;
    X = 2.0;
    Y = 2.0;
    Z = 2.0;
    e = 0.00001;
    L0 = 1;
    L1 = 0;
    /* Размеры шагов */
    hx = X / in;
    hy = Y / jn;
    hz = Z / kn;

    owx = pow(hx,2);
    owy = pow(hy,2);
    owz = pow(hz,2);
    c = 2 / owx + 2 / owy + 2 / owz + a;
    gettimeofday(&tv1, NULL);
    /* Инициализация границ пространства */
    Inic();
    /* Основной итерационный цикл */
    do {
        f = 1;
        L0 = 1 - L0;
        L1 = 1 - L1;
        for (i = 1; i < in; i++) {
            for (j = 1; j < jn; j++) {
                for(k = 1; k < kn; k++) {
                    Fi = (F[L0][i+1][j][k] + F[L0][i-1][j][k]) / owx;
                    Fj = (F[L0][i][j+1][k] + F[L0][i][j-1][k]) / owy;
                    Fk = (F[L0][i][j][k+1] + F[L0][i][j][k-1]) / owz;
                    F[L1][i][j][k] = (Fi + Fj + Fk - Ro(i*hx,j*hy,k*hz)) / c;
                    if (fabs(F[L1][i][j][k] - F[L0][i][j][k]) > e)
                        f = 0;
                }
            }
        }

        it++;
    } while (!f);

    gettimeofday(&tv2, NULL);
    osdt = (tv2.tv_sec - tv1.tv_sec)*1000000 + tv2.tv_usec - tv1.tv_usec;
    printf("in = %d ; iter = %d ; E = %f ; T = %ld\n", in, it, e, osdt);

    /* Нахождение максимального расхождения полученного приближенного решения
* и точного решения */
    max = 0.0;
    for(i = 1; i < in; i++) {
        for(j = 1; j < jn; j++) {
            for(k = 1; k < kn; k++) {
                if ( (F1 = fabs(F[L1][i][j][k] - Fresh(i*hx,j*hy,k*hz))) > max ) {
                    max = F1;
                    mi = i;
                    mj = j;
                    mk = k;
                }
            }
        }
    }

    printf("Max differ = %f\n in point(%d,%d,%d)\n", max, mi, mj, mk);

    return 0;
}