C'est bien !
Moi je suis toujours F6BXM depuis 1972 !!
J'ai passé l'examen ) à 17 ans
Yes !!!!jr-karr a écrit : Puisque l'auditoire semble davantage intéressé par mes sujets tehniques dont le dernier article remontait bien à' 7 ou 8 ans , je vais peut être en faire d'autres (ayant une bonne 1/2 douzaine de montages de tests et autres realisations à decrire ....)
Code : Tout sélectionner
; ---------------------------------------------------------------------------------
; Routine SERIAL_Out_Byte: Sort l'octet dans A sur la sortie série
; (e2DE9)
; ---------------------------------------------------------------------------------
SERIAL_Out_Byte:
BIT U4_PORTA ; La synchronisation est réalisée par le PA6:
BVS SERIAL_Out_Byte ; on attend, tant que PA6 est à 1
LDY #$08 ; Nombre de bits a sortir (= 8 pour un octet)
STY SERIAL_Cnt_Bytes
LDY #$11 ; Y = durée
LDA #$00 ; sortie à 0 (pré-synchro)
JSR SERIAL_Out
LDY #$A4 ; Y = durée (synchro)
JSR SERIAL_Out
LDY #$51 ; Y = durée
LDA #$01 ; Sortie à 1 (start bit)
JSR SERIAL_Out
SERIAL_Out_bits:
LDA Serial_byte ; Octet (code Ascii) a sortir
LSR Serial_byte ; on décale (pour le prochain bit)
DEC SERIAL_Cnt_Bytes
BEQ SERIAL_Out_Fin ; si on a fini de traiter tous les bits
AND #$01 ; Le bit à sortir est le bit 1.
EOR #$01 ; ou exclusif (inverse le bit 1).
JSR SERIAL_Out_bit ; -> sortie du bit de données
JMP SERIAL_Out_bits ; Passe au traitement du prochain bit
SERIAL_Out_Fin:
LDY #$00 ; Fin des données, sortie du stop bit (0)
STY U4_PORTB ; --> sortie série sur PB0
SERIAL_Wait:
BIT U4_PORTA ; On attend que la synchronisation sur PA6
BVC SERIAL_Wait ; repasse à 1
RTS ; FIN de la routine d'envoi série.
SERIAL_Out_bit: ; Sortie d'un bit de donnée
LDY #$A1 ; -> durée.
SERIAL_Out: ; Sortie d'un bit data/synchro (durée dans Y)
STA U4_PORTB ; --> sur la sortie série - PB0
SERIAL_Out_Tempo: ; Temporisation de sortie des bits série
NOP
NOP
DEY
BNE SERIAL_Out_Tempo
RTS