All pastes #430134 Raw Edit

Mine

public c v1 · immutable
·published 2007-04-08 19:27 UTC
rendered paste body
#include std84.h#include bit84.h#include "int16CXX.h"//Definition des ports en variables globales.//Sorties :    #define led_rouge porta.1    #define moteur_trigo porta.2    #define moteur_horaire porta.3//Entres :    #define erreur portb.0    #define presence_feuille portb.1    #define presence_tiroir portb.2    #define came_haute portb.3/*------------------------------Fonctions------------------------------*/void clignotement(){    led_rouge = 1;    delay(250);    delay(250);    led_rouge = 0;    delay(250);    delay(250);}void arrets() //On stoppe moteur, et la LED.{    moteur_horaire = 0;    moteur_trigo = 0;    led_rouge = 0;}void rotation(char sens[]){    led_rouge = 1; //On allume la LED.    delay(250);    delay(250);    do //On fait tourner le moteur.    {        if(sens="trigo"){ moteur_trigo = 1; }        else if(sens="horaire"){ moteur_horaire = 1;}    }    while (!came_haute); //Tant que la came n'est pas en position haute.    arrets(); //Et on arrte tout.}/*------------------------------Interruption------------------------------*/#pragma origin 4 //On crit  partir de l'adresse 4.interrupt probleme(void){    int_save_registers //On sauvegarde l'tat des registres importants.    if (INTE)//On vrifie qu'il y a toujours une erreur.    {        char condition; //On dclare la variable "condition".        //On configure les ports :        trisa = 0b00000; //Sorties.        trisb = 0b11111111; //Entres.        arrets();        do        {            clignotement();        }        while (!presence_tiroir); //On fait clignoter jusqu' ce qu'on remette le tiroir        rotation(trigo); //On remet la came dans sa position initiale.        INTF = 0; //On remet INTF  0 manuellement.    }    int_restore_registers //On restitue l'tat des registres importants.}/*------------------------------Fonction Principale------------------------------*/void main(){    //On configure les ports :    trisa = 0b00000; //Sorties.    trisb = 0b11111111; //Entres.    INTCON = 0b00010010; //L'interruption se fait en surveillant le changement de front de RB0.    OPTION = 0b01000000; //L'interruption se fait sur le front MONTANT de RB0.    for (;;) //Boucle infinie : pour un nombre de cycle de perforation infini.    {        arrets(); //On commence par couper le moteur et la LED.        while (!presence_tiroir) //Tant qu'il n'y a pas de tiroir on fait clignoter la LED.        {            clignotement();        }        if (!came_haute)//Ensuite on regarde si la came est en haut.        {            rotation(trigo); //Si elle ne l'est pas, on la remet en haut.        }        do            led_rouge = 0;        while (!presence_feuille); //On attend la prsence de feuilles        rotation(horaire);    }//Un cycle de perforation est termin, on retourne au dbut.}