Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

programme



  1. #1
    mathias123

    programme

    je viens de trouver un programme assembleur pour telecommande infrarouge mais je comprend pas grand chose quelqu'un peu le convertir en c stp pour que je puisse le comprendre stp


    Tele16s.asm

    .title "interface serie 16 sorties"
    .vers "st6225"
    .input "6225_reg.asm"
    .w_on


    ; ============================== ============================== ====
    ; | Telecommande I.R. 16 sorties asynchrone 300 bauds |
    ; ============================== ============================== ====
    ;
    ; microcontroleur ST6 de SGS-THOMSON
    ;
    ; PROTOCOLE DE COMMUNICATION
    ;
    ;
    ; $Ax : Activation de la sortie numero x ( x = 0, 1, ..., 15 )
    ; $Dx : desactivation de la sortie numero x ( x = 0, 1, ..., 15 )
    ; $FA : Activation de toutes les sorties
    ; $FD : Desactivation de toutes les sorties
    ;
    ; TRANSMISSION SERIE ASYNCHRONE
    ;
    ; Vitesse de transmission determinee par le temps d'execution des instructions
    ;
    ; 13
    ; Temps d'un cycle instruction Tcy = -------
    ; Fquartz
    ;
    ; Toutes les instructions necessite 4 cycles Tcy sauf :
    ;
    ; - JRxx (sauts relatifs), RET, RETI, STOP, WAIT : 2 Tcy
    ; - JRR,JRS ( sauts relatifs selon etat d'un bit ) : 5 Tcy
    ;
    ; 1
    ; Temps de transmission d'un bit Tbit = ----
    ; baud
    ;
    ;
    ; RECEPTION: DETERMINATION DES CONSTANTES DE TEMPORISATION
    ;
    ; Tbit Fquartz
    ; 1/2 START BIT: ---- = ( 15* Tempbit0) * Tcy ==> Tempbit0 = -----------
    ; ------------- 2 390 * Baud
    ;
    ; Fquartz
    ; BIT 0 : Tbit = (10* Tempbit1 + 24) * Tcy ==> Tempbit1 = ------- - 2,4
    ; --- 130*Baud
    ;
    ; Fquartz
    ; BIT 1 … 7 : Tbit = (10* Tempbit1 + 47) * Tcy ==> Tempbit1 = ------- - 4,7
    ; --- 130*Baud
    ;
    ; cette derniŠre est utilis‚e pour d‚terminer Tempbit1
    ; Fquartz
    ; STOP BIT: Tbit = (10* Tempbit2 + 08) * Tcy ==> Tempbit2 = ------- - 0,8
    ; ---------- 130*Baud
    ;
    ;
    ;
    ; tableau recapitulatif pour une vitesses de transmission de 300 bauds avec
    ; un quartz de 8,000 Mhz
    ;
    ; ------------------------------------------------
    ; | Baud | tempbit0 | tempbit1 | tempbit2 |
    ; |--------|------------|------------|-----------|
    ; | 300 | 68 | 201 | 204 |
    ; ------------------------------------------------
    ;

    ;------------------------------------------------------------------------------
    ; Definition des constantes
    ;------------------------------------------------------------------------------

    chien .equ 0FEh ; valeur du chien de garde a la valeur maxi.
    tbit0_r .equ 68 ; tempo 1/2 start ( pour 1200 bauds )
    tbit1_r .equ 201 ; tempo bit ( pour 1200 bauds )
    tbit2_r .equ 204 ; tempo stop bit ( pour 1200 bauds )
    rx .equ 6 ; PC6 = RX

    ;------------------------------------------------------------------------------
    ; Definition des variables en ram $84 … $BF
    ;------------------------------------------------------------------------------


    copypa .def 084h ; pour maniplation bits du port A
    copypb .def copypa+1 ; pour maniplation bits du port B
    copypc .def copypb+1 ; pour maniplation bits du port C
    caracter .def copypc+1 ; Sauvegarde caractere emis./recep.
    commande .def caracter+1 ; commande recue.

    ;------------------------------------------------------------------------------
    ; Programme
    ;------------------------------------------------------------------------------

    .org 080h


    ; -- Definition de la table des bits de masquage --

    maskbit1 .byte 1 , 2 , 4 , 8 , 16 , 32 , 64 , 128
    maskbit0 .byte 0FEh , 0FDh , 0FBh , 0F7h , 0EFh , 0DFh , 0BFh , 7Fh



    ; -- initialisation PC4 a PC7 = entree avec resistance de pull-up
    ; PB et PA = sortie push-pull ( 16 sorties logiques )
    ; PA0 … PA7 = S1 … S8
    ; PB0 … PB7 = S9 … S16

    init_pgm ldi wdr,chien
    clr a
    ld pcdir,a
    ld pcopt,a
    ld pc,a
    ld copypc,a
    ldi padir,0FFh
    ldi paopt,0FFh
    ld pa,a
    ld copypa,a
    ldi pbdir,0FFh
    ldi pbopt,0FFh
    ld pb,a
    ld copypb,a
    clr ior

    interp call recep ; attend commande
    ld commande,a ; memorise la commande
    andi a,0F0h ; Teste la nature de la commande
    cpi a,0F0h ; commande globale ?
    jrz CmdGlob ; oui, alors traitement global
    jp interp0 ; non, autre commande...

    CmdGlob ld a,commande ; activation ou desactivation globale ?
    andi a,0Fh
    cpi a,0Ah ; activation ?
    jrnz Glob_0 ; non, va tester si desactivation
    clr a ; oui, alors toutes les sorties a 1
    com a
    ld copypa,a
    ld pa,a
    ld copypb,a
    ld pb,a
    jp FinGlob
    Glob_0 cpi a,0Dh ; Desactivation ?
    jrnz FinGlob ; non, alors c'est visiblement une erreur!
    clr a ; oui, alors toutes les sorties a 0
    ld copypa,a
    ld pa,a
    ld copypb,a
    ld pb,a
    FinGlob jp interp ; retour a la case depart

    interp0 cpi a,0A0h ; commande activation locale ?
    jrz CmdAcLoc ; oui, traitement de la commande
    jp interp1 ; non, autre commande...

    CmdAcLoc ld a,commande ; recupere numero de sortie
    andi a,0Fh
    jrs 3,a,AcLocB ; teste si port B concerne
    jp AcLocA ; sinon, c'est le port A
    AcLocB andi a,07h ; Port B concerne
    ldi drwr,maskbit1.w ; pointe, via reg. X, la table des masques
    ldi x,maskbit1.d
    add a,x ; adresse le bon masque
    ld x,a ; X pointe masque relatif au bit … mettre … 1
    ld a,copypb ; le port B est concerne...
    and a,(x)
    jrz AcLocB0 ; si le bit est deja a 1, on ne fait rien !
    jp AcLocFin
    AcLocB0 ld a,copypb
    add a,(x)
    ld copypb,a
    ld pb,a
    jp AcLocFin

    AcLocA andi a,07h ; Port A concerne
    ldi drwr,maskbit1.w ; pointe, via reg. X, la table des masques
    ldi x,maskbit1.d
    add a,x ; adresse le bon masque
    ld x,a ; X pointe masque relatif au bit a mettre a 1
    ld a,copypa ; le port A est concerne...
    and a,(x)
    jrz AcLocA0 ; si le bit est deja a 1, on ne fait rien !
    jp AcLocFin
    AcLocA0 ld a,copypa
    add a,(x)
    ld copypa,a
    ld pa,a
    AcLocFin jp interp ; retour a la case depart

    interp1 cpi a,0D0h ; commande de desactivation locale ?
    jrz CmdDesLoc ; oui, traitement de la commande
    jp interp ; non, c'etait une erreur...retour case depart

    CmdDesLoc ld a,commande ; recupere numero de sortie
    andi a,0Fh
    jrs 3,a,DsLocB ; teste si port B concerne
    jp DsLocA ; sinon, c'est le port A
    DsLocB andi a,07h ; le port B est concerne
    ldi drwr,maskbit0.w ; pointe, via reg. X, la table des masques
    ldi x,maskbit0.d
    add a,x
    ld x,a ; X pointe masque relatif au bit a mettre a 0
    ld a,copypb ; port B concerne...
    and a,(x) ; mise a 0 du bit.
    ld copypb,a
    ld pb,a
    jp DsLocFin

    DsLocA andi a,07h ; le port A est concerne
    ldi drwr,maskbit0.w ; pointe, via reg. X, la table des masques
    ldi x,maskbit0.d
    add a,x
    ld x,a ; X pointe masque relatif au bit a mettre a 0
    ld a,copypa ; port A concerne...
    and a,(x) ; mise a 0 du bit.
    ld copypa,a
    ld pa,a
    jp DsLocFin
    DsLocFin jp interp ; retour a la case depart

    -----


  2. Publicité
  3. #2
    Gérard

    Re : programme

    Bonjour à toi aussi !
    1 L'asm du ST est vraiment simple
    2 Ce prog est bien commenté en FRANCAIS
    3 Avec les instructions asm ... yapluska !

    Bonnes traductions.

    PS : un titre explicite, ça aide de même que Bonjour et Merci.

  4. #3
    mathias123

    Re

    je fais pas de programation c'est pour ca c'est possible d'avoir algorithme merci

  5. #4
    Gérard

    Re : Re

    Citation Envoyé par mathias123 Voir le message
    je fais pas de programation c'est pour ca c'est possible d'avoir algorithme merci
    Bonjour à toi aussi !

    Et tu attends que l'on fasse la traduction pour toi ?

  6. #5
    mathias123

    Re : programme

    Juste Algo Pour Que Je Puisse Le Traduire

  7. A voir en vidéo sur Futura
  8. #6
    Gérard

    Re : programme

    Citation Envoyé par mathias123 Voir le message
    Juste Algo Pour Que Je Puisse Le Traduire
    Bonjour à toi aussi !
    L'algo est dans l'assembleur, yaplus traduire.

  9. Publicité
  10. #7
    mathias123

    Re : programme

    JE comprends pas grand chose

  11. #8
    Gérard

    Re : programme

    Citation Envoyé par mathias123 Voir le message
    JE comprends pas grand chose
    Bonjour,
    Quand on ne comprends pas, on apprend !
    Montre ce que tu as déjà fait, si ce n'est pas juste et/ou pas clair, je pourrai te donner des tuyaux.
    Je n'ai aucune intention de faire le boulot à ta place.

Sur le même thème :

Discussions similaires

  1. programme
    Par macally dans le forum Logiciel - Software - Open Source
    Réponses: 11
    Dernier message: 16/01/2008, 22h28
  2. programme en vb
    Par souma29 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 24/03/2007, 16h51
  3. Programme C
    Par traxxa dans le forum Électronique
    Réponses: 3
    Dernier message: 21/03/2007, 21h02
  4. Programme en VB
    Par jkidd dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 16/03/2007, 16h24
  5. programme
    Par sifepolik dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 26/04/2006, 13h13