int main(){ // Equivalent au TP6-1, pour ecrire un message en memoire Memoire24CXXX mem; DDRB = 0xFF; char a[100]="Voici un message secret de la part de Antoine : QQ\n"; char temp; mem.ecriture(0x00,(unsigned char*)&a[0],strlen(a)); _delay_ms(5); mem.ecriture(strlen(a),0xFF); // Pour la fin de la lecture _delay_ms(5); // Eqiovalent au TP6-2, pour envoyer un message vers le PC initialisationUART(); uint8_t i=0; mem.lecture(i,(unsigned char*)&temp); while (temp != 0xFF) { transmissionUART ( temp ); i++; mem.lecture(i,(unsigned char*)&temp); } PORTB=0x01; //Verifiaction de la sortie du while apres la lecture du 0xFF }
int main (){ Memoire24CXXX mem; DDRB = 0xFF; char a[50]="*E*C*O*L*E* *P*O*L*Y*T*E*C*H*N*I*Q*U*E*"; char b[50]={'\0'}; uint8_t temp; uint8_t i=0; bool egalite=true; mem.ecriture(0x00,(unsigned char*)&a[0],strlen(a)); _delay_ms(5); mem.ecriture(strlen(a),0x00); _delay_ms(5); mem.lecture(0,&temp); while(temp!=0){ b[i]=temp; i++; mem.lecture(i,&temp); } //b[5]='a'; //Test pour non-egalite for (uint8_t j = 0; j<strlen(a); j++){ if (a[j]!=b[j]) egalite=false; } if(egalite) PORTB=0x01; else PORTB=0x02; return 0; }
int main(){ //Initialisation du USART initialisationUSART(); //Initialisation du port B en sortie DDRB = 0xFF; //Déclaration de la chaîne que l'on veut écrire en mémoire, et d'une chaîne vide pour lire. uint8_t machaine[255]="Le robot du groupe 0340\n"; //Construction (initialisation) d'un objet de type mémoire. Memoire24CXXX memoire; //Écriture de la chaîne en mémoire LETTRE PAR LETTRE: for(uint16_t i=0 ; i<255; i++){ memoire.ecriture(i, machaine[i]); _delay_ms(5); //Délais pour permettre a la mémoire de se placer. } char *data; for(int i=0; i<255; i++){ memoire.lecture(i,(uint8_t *) data,1); transmissionUSART (*data); } return 0; }
void Commande::charger(uint16_t indexMemoire) { //Lire instruction dans la memoire Memoire24CXXX maMemoire; maMemoire.lecture(indexMemoire, &instruction); maMemoire.lecture(indexMemoire+1, &operande); }
/** * The main function. It does the logic. */ int main() { init(); bool begin = false; bool stop = false; // Instanciate all classes ledManager leds = ledManager(); MoteurManager engines = MoteurManager(); Piezoelectrique son = Piezoelectrique(); Memoire24CXXX mem = Memoire24CXXX(); Instruction instr; uint16_t base_pointer = 0; uint8_t boucle_iter = 0; for (uint16_t i = 0; i < program_size && !stop; i=i+2 ) { // Read the program data uint8_t program_data[2]; mem.lecture(i, program_data, 2); instr = Instruction(program_data[0], program_data[1]); // If we received a dbt inscruction if (begin) { switch (instr.opcode) { case 0x2: // att (25ms * operand) msleep(25*instr.operand); break; case 0x44: // dal (led number) leds.lightOn(instr.operand); break; case 0x45: // det (led number) leds.lightOff(instr.operand); break; case 0x48: // sgo (fréquence) son.setFrequency(instr.operand); son.start(); break; case 0x09: // sar son.stop(); break; case 0x60: // mar case 0x61: // mar engines.arreter(); break; case 0x62: // mav (speed) engines.avancer(instr.operand); break; case 0x63: // mre (speed) engines.reculer(instr.operand); break; case 0x64: // trd engines.tournerDroite(); break; case 0x65: // trg engines.tournerGauche(); break; case 0xC0: // dbc (iterations) base_pointer = i; boucle_iter = instr.operand; break; case 0xC1: // fbc (iterations) if (boucle_iter > 0) { boucle_iter--; i = base_pointer; } break; case 0xff: // fin //son.stop(); //engines.arreter(); stop = true; } } else if (instr.opcode == 0x01) { begin = true; } //usb.send(instr.opcode); //usb.send(instr.operand); } for(;;){} return 0; }
int main() { initialiser(); del led(0); midi piezzo(&PORTB, &DDRB, 2, 0); Memoire24CXXX mem; // objet mémoire uint8_t lu = 0, pointLecture = 0; // variables de lecture uint8_t compteur = 0, temp = 0; // variable boucle bool verifBoucle = false; led.clignoter(10,10); while(lu != 0x01) //dbt { mem.lecture(pointLecture,&lu); pointLecture ++ ; } pointLecture++; mem.lecture(pointLecture, &lu); pointLecture++; while(lu != 0xFF) //fin { switch(lu) { case 0x02 : //att mem.lecture(pointLecture, &lu); delais(25*(uint16_t)lu); pointLecture++; break ; case 0x44 : //dal mem.lecture(pointLecture, &lu); led.allumer(1); pointLecture++; break; case 0x45 : //det mem.lecture(pointLecture, &lu); led.eteindre(); pointLecture++; break; case 0x48 : //sgo mem.lecture(pointLecture, &lu); piezzo.jouerNote(lu-40); pointLecture ++; break; case 0x09 : //sar piezzo.arreterNote(); pointLecture++; break; case 0x62 : // mav mem.lecture(pointLecture, &lu); PORTD |= 0x0C; //0000 1100 ajusterPWM(lu<<1, lu<<1); pointLecture++; break; case 0x60 : //mar1 case 0x61 : //mar2 ajusterPWM(0, 0); delais(400); pointLecture++; break; case 0x63 : //mre mem.lecture(pointLecture, &lu); PORTD &= (unsigned char) ~(3<<(2)); ajusterPWM(lu<<1, lu<<1); pointLecture++; break; case 0x64 : //trd ajusterPWM(200, 0); _delay_ms(985); ajusterPWM(0, 0); delais(400); pointLecture++; break; case 0x65 : //trg ajusterPWM(0, 200); _delay_ms(831); ajusterPWM(0, 0); delais(400); pointLecture++; break; case 0xC0 : //dbc mem.lecture(pointLecture, &lu); pointLecture++; compteur = lu + 1; temp = pointLecture; verifBoucle = true; case 0xC1 : //fbc if(verifBoucle && compteur) { compteur-- ; pointLecture = temp; } else { pointLecture++; verifBoucle = false; } break; } mem.lecture(pointLecture, &lu); pointLecture ++; } return 0; }