
;        PROGRAMME  ENVOI MESSAGE CW D'APRES UN TEXTE ASCII.
;              De Victor F1BIU, version 1.3  24 /06/ 1998.

;Affectations des ports du pic:
;rb0 = sortie cw  broche 6 du pic.              
;rb1 = sortie ptt broche 7 du pic.              
                    

;----------------------------------------------------------------------------
;La directive 'device' d�clare un pic 16c84, un oscillateur � xt, pas de
;watch-dog, pas de tempo de reset, pas de bit de protection.

                device pic16c84,xt_osc,wdt_off,pwrt_off,protect_off


                     id    '1BIU'        ; identificateur (pas obligatoire)

ptt    =   rb.1   ;sortie ptt, 1 = �mission porteuse, 0 pas d'�mission. 
cw     =   rb.0   ;sortie cw, sortie tout ou rien, pr�voir un oscillateur cw.


                     org     0CH         ;d�but de la ram disponible

pointeur             DS      1
mot_datas            DS      1
Count0               DS      1
Count1               DS      1
Count2               DS      1
longueur_lettre      DS      1


duree_point                 DS     1
duree_trait                 DS     1
intervalle_traits_points    DS     1
intervalle_lettres          DS     1
intervalle_mots             DS     1
duree_pause                 DS     1
duree_arret_porteuse        DS     1
duree_porteuse_seule        DS     1
duree_entre_cycles          DS     1
vite_1                      DS     1
vite_2                      DS     1
vite_3                      DS     1
temp1                       DS     1
 
            org     0                 ;origine du d�but programme.

             jmp    saute
             include 'param.dat'      ;c'est ici qu'est inclus le tableau
                                      ;du message ascii et mots de contr�les

saute        call   para
             mov    !RB,#11111100b            ;port RB0, RB1 en sortie.
             mov    RB,#0                     ;sorties � 0 au d�but.
             mov    pointeur,#0
             mov    longueur_lettre,#8
             mov    Count2,#2
             mov    Count1,#2
             mov    Count0,#2
debut
             mov   w, pointeur
             call  table
             mov   mot_datas,w
             cje   mot_datas,#'S',porteuse_seule
             cje   mot_datas,#'F',fin
             cje   mot_datas,#'P',pause
             cje   mot_datas,#' ',tempo_entre_mots
             cje   mot_datas,#'R',recommence_cycle
             cje   mot_datas,#'A',arret_porteuse
             cje   mot_datas,#'L',vitesse_1
             cje   mot_datas,#'V',vitesse_2
             cje   mot_datas,#'T',vitesse_3

 
suite1       call  codage_lettre
             call  envoi_lettre
             inc   pointeur
             jmp   debut


porteuse_seule
               setb  cw
               setb  ptt
               mov   Count2,duree_porteuse_seule
               call  tempo
               inc   pointeur
               jmp   debut


pause                 
             mov   Count2,duree_pause
             call  tempo
             inc   pointeur
             jmp   debut


tempo_entre_mots
             mov    Count2,intervalle_mots
             call   tempo
             inc    pointeur
             jmp    debut

recommence_cycle
             mov   RB,#0
             mov   pointeur,#0
             mov   Count2, duree_entre_cycles
             call  tempo
             jmp   debut

arret_porteuse
             clrb  cw
             clrb  ptt
             mov   Count2,duree_arret_porteuse
             call  tempo
             inc   pointeur
             jmp   debut

vitesse_1    mov   temp1, vite_1
             inc   pointeur
             jmp   debut

vitesse_2    mov   temp1, vite_2
             inc   pointeur
             jmp   debut

vitesse_3    mov   temp1, vite_3
             inc   pointeur
             jmp   debut


fin          mov   RB,#0
             jmp   fin  

;---------------------------------------------------------------------------

codage_lettre cje  mot_datas,#'0', _0
              cje  mot_datas,#'1', _1
              cje  mot_datas,#'2', _2
              cje  mot_datas,#'3', _3
              cje  mot_datas,#'4', _4
              cje  mot_datas,#'5', _5
              cje  mot_datas,#'6', _6
              cje  mot_datas,#'7', _7
              cje  mot_datas,#'8', _8
              cje  mot_datas,#'9', _9
              cje  mot_datas,#'a', _a
              cje  mot_datas,#'b', _b
              cje  mot_datas,#'c', _c
              cje  mot_datas,#'d', _d
              cje  mot_datas,#'e', _e
              cje  mot_datas,#'f', _f
              cje  mot_datas,#'g', _g
              cje  mot_datas,#'h', _h
              cje  mot_datas,#'i', _i
              cje  mot_datas,#'j', _j
              cje  mot_datas,#'k', _k
              cje  mot_datas,#'l', _l
              cje  mot_datas,#'m', _m
              cje  mot_datas,#'n', _n
              cje  mot_datas,#'o', _o
              cje  mot_datas,#'p', _p
              cje  mot_datas,#'q', _q
              cje  mot_datas,#'r', _r
              cje  mot_datas,#'s', _s
              cje  mot_datas,#'t', _t
              cje  mot_datas,#'u', _u
              cje  mot_datas,#'v', _v
              cje  mot_datas,#'w', _w
              cje  mot_datas,#'x', _x
              cje  mot_datas,#'y', _y
              cje  mot_datas,#'z', _z
              cje  mot_datas,#'.', point
              cje  mot_datas,#'#', erreur
              cje  mot_datas,#'>', debut_transmission
              cje  mot_datas,#'<', fin_transmission
             ;cje  mot_datas,#'!', reserve1
             ;cje  mot_datas,#'&', reserve2
             ;cje  mot_datas,#'@', reserve3
             ;cje  mot_datas,#'$', reserve4
             ;cje  mot_datas,#'�', reserve5
             ;cje  mot_datas,#'�', reserve6
             ;cje  mot_datas,#'*', reserve7
             ;cje  mot_datas,#'~', reserve8
             ;cje  mot_datas,#'+', reserve9
             ;cje  mot_datas,#'-', reserve10
              ret

_0            mov  mot_datas,#11111000b
              mov  longueur_lettre,#5
              ret
_1            mov  mot_datas,#01111000b
              mov  longueur_lettre,#5
              ret
_2            mov  mot_datas,#00111000b
              mov  longueur_lettre,#5
              ret
_3            mov  mot_datas,#00011000b
              mov  longueur_lettre,#5
              ret
_4            mov  mot_datas,#00001000b
              mov  longueur_lettre,#5
              ret
_5            mov  mot_datas,#00000000b
              mov  longueur_lettre,#5
              ret
_6            mov  mot_datas,#10000000b
              mov  longueur_lettre,#5
              ret
_7            mov  mot_datas,#11000000b
              mov  longueur_lettre,#5
              ret
_8            mov  mot_datas,#11100000b
              mov  longueur_lettre,#5
              ret
_9            mov  mot_datas,#11110000b
              mov  longueur_lettre,#5
              ret
_a            mov  mot_datas,#01000000b
              mov  longueur_lettre,#2
              ret
_b            mov  mot_datas,#10000000b
              mov  longueur_lettre,#4
              ret
_c            mov  mot_datas,#10100000b
              mov  longueur_lettre,#4
              ret
_d            mov  mot_datas,#10000000b
              mov  longueur_lettre,#3
              ret
_e            mov  mot_datas,#00000000b
              mov  longueur_lettre,#1
              ret
_f            mov  mot_datas,#00100000b
              mov  longueur_lettre,#4
              ret
_g            mov  mot_datas,#11000000b
              mov  longueur_lettre,#3
              ret
_h            mov  mot_datas,#00000000b
              mov  longueur_lettre,#4
              ret
_i            mov  mot_datas,#00000000b
              mov  longueur_lettre,#2
              ret
_j            mov  mot_datas,#01110000b
              mov  longueur_lettre,#4
              ret
_k            mov  mot_datas,#10100000b
              mov  longueur_lettre,#3
              ret
_l            mov  mot_datas,#01000000b
              mov  longueur_lettre,#4
              ret
_m            mov  mot_datas,#11000000b
              mov  longueur_lettre,#2
              ret
_n            mov  mot_datas,#10000000b
              mov  longueur_lettre,#2
              ret
_o            mov  mot_datas,#11100000b
              mov  longueur_lettre,#3
              ret
_p            mov  mot_datas,#01100000b
              mov  longueur_lettre,#4
              ret
_q            mov  mot_datas,#11010000b
              mov  longueur_lettre,#4
              ret
_r            mov  mot_datas,#01000000b
              mov  longueur_lettre,#3
              ret
_s            mov  mot_datas,#00000000b
              mov  longueur_lettre,#3
              ret
_t            mov  mot_datas,#10000000b
              mov  longueur_lettre,#1
              ret
_u            mov  mot_datas,#00100000b
              mov  longueur_lettre,#3
              ret
_v            mov  mot_datas,#00010000b
              mov  longueur_lettre,#4
              ret
_w            mov  mot_datas,#01100000b
              mov  longueur_lettre,#3
              ret
_x            mov  mot_datas,#10010000b
              mov  longueur_lettre,#4
              ret
_y            mov  mot_datas,#10110000b
              mov  longueur_lettre,#4
              ret
_z            mov  mot_datas,#11000000b
              mov  longueur_lettre,#4
              ret


point         mov  mot_datas,#01010100b
              mov  longueur_lettre,#6
              ret
erreur        mov  mot_datas,#00000000b
              mov  longueur_lettre,#8
              ret
debut_transmission
              mov  mot_datas,#10101000b
              mov  longueur_lettre,#5
              ret
fin_transmission
              mov  mot_datas,#01010000b
              mov  longueur_lettre,#5
              ret
;---------------------------------------------------------------------------
envoi_lettre
bou1         jnb   mot_datas.7, points             
             mov   Count2,duree_trait
             jmp   suite3
points       mov   Count2,duree_point
suite3       setb  cw
             call  tempo
             clrb  cw
             mov   Count2,intervalle_traits_points
             call  tempo
             rl    mot_datas
             djnz  longueur_lettre, bou1
             mov   Count2,intervalle_lettres
             call  tempo
             ret

;---------------------------------------------------------------------------
tempo
:Loop0       mov   Count1,temp1
:Loop1       mov   Count0,#255
:Loop2       djnz  Count0,:Loop2
             djnz  Count1,:Loop1
             djnz  Count2,:Loop0
             ret
