code Manchester> encodage en utilisant le code assembleur pour PIC

Salut,

codage Manchester est assez facile si vous le faites sur un octet par octet de base.Je suppose que
Faire connaître Codage Manchester, alors je vais me concentrer sur le code.
Parce que son manchester 2 bits pour les bits de données un, nous sommes doublement de la débits de données de sorte,
vous mettez un octet dans, et obtenez 2 octets de l'encodeur.

Tous vous avez vraiment besoin est une petite table de recherche, avec 16 entrées.Vous pouvez simplement écrire à la main, aussi longtemps que vous décidez de transistion pour chaque bit.J'utilise 0 = 10, et 1 = 01.
Donc une transition vers le haut pour un 1, et une baisse pour un 0.

0000 10101010
0001 10101001
0010 10100110 etc ...

Le code est simple.Heres quelques pseudo-code.

Move 'inbyte' en W; met dans le registre W.
ET avec '00001111 '; masques inférieurs grignoter, se débarrasser simplement 4 MSB.
table de consultation Appel; maintenant que nous avons un peu le numéro 4, vous entrée dans la table de recherche.
Déplacer W en «Lowbyte», et propose que dans le «Lowbyte 'inscrire.
SwapF 'inbyte, W; grignoter swaps de inbyte, et le résultat magasins en W.
ET avec '00001111 ', de nouveau, se débarrasse de 4 MSB.
table de recherche des appels.
Déplacer W en «highbyte '

de nombreuses méthodes Theres utilisant la table de recherche.Mais rappelez-vous, la recherche de tables de travail en cours de montage PIC, la valeur dans le reg W, est le nombre de lignes à "sauter", où elle tombe, met la valeur sur cette ligne dans le W et le rendement (avec la commande retlw) .Donc, parce que le LUT n'est que de 16 lignes de long, vous devez vous assurer que vous vous débarrasser des 4 premiers bits d'un octet lorsque vous appelez la LUT.(Valeur maximum 15).D'où la «ET avec '00001111 'en ligne.La commande swapf, est à portée de main, et nous permet de faire la même chose, mais pour les 4 premiers bits (highbyte).

Si vous avez l'intention d'envoyer des données en série, rapidement, vous pourriez vouloir mettre highbyte et lowbyte dans une mémoire tampon circuilar (haute premier octet).

Si vous effectuez une recherche de ce forum, vous trouverez de nombreuses infos, et beaucoup, beaucoup de liens vers des sites qui expliquent bien mieux que je peux.Avec le code source, pour toutes les langues.

Bonne chance

BuriedCode.

 

Welcome to EDABoard.com

Sponsor

Back
Top