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)
Et enfin 3 exemples de fichiers binaires