Programmateur pour 68705P3S

Bon, d'accord, la photo est un peu floue...

Le micro-contrôleur 68705P3S a été très utilisé il y a quelques années. Il se fait vieux, mais suffit toujours dans certaines applications. Il faut normalement le programmer via une Eprom, et j'ai réalisé pour gagner un peu de temps ce petit programmateur qui envoie directement le fichier binaire du PC au microcontrôleur, par l'intermédiaire du port parallèle.

schéma théorique

typon (à remettre à l'échelle: trait extérieur 100 * 80 mm)

schéma d'implantation

Petit programme Basic associé

        '   Logiciel de programmation d'un micro-controleur 68705P3
        '                  dB 21/04/2000
        '        Pour carte spécifique sur port parallèle

Init:
        DIM Octet%(2048)
        DIM Message$(12)
        DIM Tampon AS STRING * 1
       
        REM Donneeprn% = 956         '3BCh           data
        REM Statusprn% = 957         '3BDh           status
        REM Commdeprn% = 958         '3BEh           commande
       
        Donneeprn% = 888         '378h           data
        Statusprn% = 889         '379h           status
        Commdeprn% = 890         '37Ah           commande
       
        Message$(1) = "Couper l'alimentation carte puis presser une touche     "
        Message$(2) = "Fermer K1 K2,placer micro, alimenter, presser une touche"
        Message$(3) = "Ouvrir l'interrupteur K2 (22V), presser une touche      "
        Message$(4) = "Ouvrir l'interrupteur K1 (démarrage micro)              "
        Message$(5) = "Programmation octet N°       (touche pour échappement)  "
        Message$(6) = "Mauvais déroulement de la programmation                 "
        Message$(7) = "Vérification  octet N°       (touche pour échappement)  "
        Message$(8) = "Mauvais déroulement de la vérification                  "
        Message$(9) = "Microcontroleur correctement programmé (presser touche) "
        Message$(10) = "Refermer K2 (22V), puis K1 (reset) et presser une touche"
        Message$(11) = "Couper l'alimentation, et retirer le microcontroleur    "

        COLOR 15, 1
        CLS
              
        LOCATE 1, 25: PRINT "Logiciel de programmation de 68705P3"
        LOCATE 6, 10: PRINT "Programme 68705.bin chargé"
        LOCATE 8, 10: PRINT "Opération en cours : "

        OPEN "c:\temp\68705.bin" FOR BINARY AS #1
       
        IF LOF(1) <> 2048 THEN LOCATE 10, 10: PRINT "Fichier non valide": END

        FOR Pointeur% = 1 TO 2048
                GET #1, Pointeur%, Tampon
                Octet%(Pointeur%) = 255 - ASC(Tampon)
        NEXT

        CLOSE

        LOCATE 10, 10: PRINT Message$(1)
        WHILE INKEY$ = ""
        WEND

        LOCATE 10, 10: PRINT Message$(2)
        WHILE INKEY$ = ""
        WEND

        LOCATE 10, 10: PRINT Message$(3)
        WHILE INKEY$ = ""
        WEND

        LOCATE 10, 10: PRINT Message$(4)
        WHILE (INP(Statusprn%) AND 16) = 16
        WEND
       
        Pointeur% = 1
        Clock% = 32
        Mem% = Clock%

        LOCATE 10, 10: PRINT Message$(5)
        WHILE (INKEY$ = "") AND (Pointeur% < 2049)
                LOCATE 10, 32: PRINT Pointeur%
                OUT Donneeprn%, Octet%(Pointeur%)
                Clock% = (INP(Statusprn%) AND 32)
                IF (Clock% = 0) AND (Mem% = 32) THEN
                        Pointeur% = Pointeur% + 1
                END IF
                Mem% = Clock%
        WEND

        IF (Pointeur% <> 2049) OR ((INP(Statusprn%) AND 64) <> 64) THEN
                LOCATE 10, 10: PRINT Message$(6): END
        END IF

        Pointeur% = 1
        Clock% = 32
        Mem% = Clock%

        LOCATE 10, 10: PRINT Message$(7)
        WHILE (INKEY$ = "") AND (Pointeur% < 2049) AND ((INP(Statusprn%) AND 128) <> 0)
                LOCATE 10, 32: PRINT Pointeur%
                OUT Donneeprn%, Octet%(Pointeur%)
                Clock% = (INP(Statusprn%) AND 32)
                IF (Clock% = 0) AND (Mem% = 32) THEN
                        Pointeur% = Pointeur% + 1
                END IF
                Mem% = Clock%
        WEND

        LOCATE 10, 10
        PRINT Message$(8)
       
        IF ((INP(Statusprn%) AND 128) = 0) THEN
                LOCATE 10, 10
                PRINT Message$(9)
        END IF
       
        WHILE INKEY$ = ""
        WEND
       
        LOCATE 10, 10: PRINT Message$(10)
        WHILE INKEY$ = ""
        WEND
       
        LOCATE 10, 10: PRINT Message$(11)
        WHILE INKEY$ = ""
        WEND
       
        END
Le même, compilé (vu de DOS), à télécharger (33 ko)
Télécharger le logiciel compilé pour fenêtre DOS
Et enfin 3 exemples de fichiers binaires
Que des 0 0123... Exemple
Fichier binaire avec 2048 octets nuls Fichier binaire avec 2048 octets 0 1 2 3 4 ... Exemple de je ne sais plus quelle application