Programmer le microcontroleur AT89S8252

C0017 Messages postés 3 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 mai 2007 - 22 mai 2007 à 09:36
C0017 Messages postés 3 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 mai 2007 - 22 mai 2007 à 10:11
Salut,
Je travail sur les microcontrôleur AT89S8252. Et j'ai
besoin un programme en VB ou C++ pour programmer le AT89S8252 en
utilisant le protocole de transmission série SPI (bus d'interface du
AT89*), l'envoi et la réception avec le PC avec le port parallèle
(RS232).


S.v.p n'hésiter de m'apporter de l'aide à faire ce programme. Car, j'en suis très besoin ! 

2 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
22 mai 2007 à 09:53
Salut,

As-tu déjà commencé ton programme ?

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
C0017 Messages postés 3 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 mai 2007
22 mai 2007 à 10:11
oui mais en C++ et il manque les definitions des fonctions. voila se que j'ai essayer de faire:
#include<stdio.h>
#include <windows.h>

void SPI_Out(int b);
void Ini_SPI(void);
int SPI_In(char cData);
void programming();
void erase();
void writecode(int addr,char b);
int readcode(int addr);
void writedata(int addr,char b);
int readdata(int addr);
void lock(int bit);

unsigned char cData;
main()
{
GIE=1;
PEIE=1;                // Valide toutes les interruptions peripheriques
TRISC=0b01010111;    // Configure les entrées sorties du Port C
Ini_SPI();        // Initialise les registres SPI

while(1)
    {
        cData=0x41;
    SPI_In(cData);    // Envoi le caractére cData dans la routine SPI en boucle
   
    }
}
/* Initialisation des registres SPI */
void Ini_SPI(void)
    {
    SSPSTAT = 0b00000010;
    //bit 6 CKE 0, Bit 7 SMP
   
    SSPCON = 0b00110010;
    //bit 0 ssmp0, 1 ssmp1, 2 ssmp2, 3 ssmp3
    //bit 4 CKP =1 , bit 5 sspen=1, bit 6 sspov, bit 7 wcol
    }
void SPI_Out(int b)
{
    int i;
    for (i=7;i>=0;i--)
    {
        if(b&(1<=0;i--)
    {
        SetSCK();
        waitmicrosec(2);
        if(GetMISO()) b|=1<>5) & 0xF8) | ((addr>>11) & 0x04));
    SPI_Out(addr & 0xFF); /* llll llll*/
    SPI_Out(b);
    waitmillisec(6);
}

int readcode(int addr)
{
    /* hhhh h001*/
    SPI_Out(0x01 | ((addr>>5) & 0xF8) | ((addr>>11) & 0x04));
    SPI_Out(addr & 0xFF);/* llll llll*/
    return SPI_In();
}

void writedata(int addr,char b)
{
    SPI_Out(0x06 | ((addr>>5) & 0xF8));
    SPI_Out(addr & 0xFF); /*llll llll*/
    SPI_Out(b);
}

int readdata(int addr)
{
    SPI_Out(0x05 | ((addr>>5) & 0xF8));
    SPI_Out(addr & 0xFF); /* llll llll*/
    return SPI_In();
}

void lock(int bit)
{
    int mask=0xff & ~byte;
    SPI_Out(0xAC);
    SPI_Out(mask | 0x07);
    SPI_Out(0);
    waitmillisec(9);
}
0
Rejoignez-nous