Enviar un byte en hexadecimal.

A ver es masomenos sencillo,

tienes tu palabra de 8 bits en una variable como dato.

lo que vas a hacer es mandar bit a bit, no lo veas como la palabra completa.

por ejemplo:

yo programo en ensamblador pero creo que es mas sencillo en C

movlw 0x61 ; que en binario seria b'10100001'
movwf dato ; se carga la variable

;necesitas un contador para checar que los 8 bits se han enviado

movlw 0x08
movwf contador

etiqueta1 decfsz contador ;decrementas en 1 a 1 al contador hasta que se cumplan los 8 bits
goto etiqueta2 ; sino se completan los 8 bits sigue enviando
goto new_dato ; si ya se completaron va por la sig palabra


;lo que vas a hacer es enviar la palabra completa al puerto b, puedes reducir los bits a usar
;enmascarando para que no uses todo el puerto

etiqueta2 movf dato,w ; guardas el valor de dato en el registro w
movwf portb ; y lo pasas al puerto b

rrf dato,w ; con esta instruccion rotas a la derecha la palabra un bit a la vez

goto etiqueta 1

espero te sirva, no recuerdo si al rotar puedes giardar en el registro w pero mas o menos funciona asi


Exito.
 
La verdad que con ASM se complica un poco pero no tanto... aunque se puede tener más rendimiento del firm.
En C de CCS , es más sencillo pero ocupas más código y capaz que el fim no hace exactamente lo que vos has programado.
Igual si vos sabés programar bien en assembler te admiro ya que es un lenguaje que a veces es un poco complicado de entender bien.

pd: Me gustaría manejar el usb del pic18f2550 en asm = un sueño de un programador muy loco..jaajaj
 
Gradmaster dijo:
A ver es masomenos sencillo,

tienes tu palabra de 8 bits en una variable como dato.

lo que vas a hacer es mandar bit a bit, no lo veas como la palabra completa.

por ejemplo:

yo programo en ensamblador pero creo que es mas sencillo en C

movlw 0x61 ; que en binario seria b'10100001'
movwf dato ; se carga la variable

;necesitas un contador para checar que los 8 bits se han enviado

movlw 0x08
movwf contador

etiqueta1 decfsz contador ;decrementas en 1 a 1 al contador hasta que se cumplan los 8 bits
goto etiqueta2 ; sino se completan los 8 bits sigue enviando
goto new_dato ; si ya se completaron va por la sig palabra


;lo que vas a hacer es enviar la palabra completa al puerto b, puedes reducir los bits a usar
;enmascarando para que no uses todo el puerto

etiqueta2 movf dato,w ; guardas el valor de dato en el registro w
movwf portb ; y lo pasas al puerto b

rrf dato,w ; con esta instruccion rotas a la derecha la palabra un bit a la vez

goto etiqueta 1

espero te sirva, no recuerdo si al rotar puedes giardar en el registro w pero mas o menos funciona asi


Exito.

Muchas gracias, voy a investigar.
 
Moyano Jonathan dijo:
La verdad que con ASM se complica un poco pero no tanto... aunque se puede tener más rendimiento del firm.
En C de CCS , es más sencillo pero ocupas más código y capaz que el fim no hace exactamente lo que vos has programado.
Igual si vos sabés programar bien en assembler te admiro ya que es un lenguaje que a veces es un poco complicado de entender bien.

pd: Me gustaría manejar el usb del pic18f2550 en asm = un sueño de un programador muy loco..jaajaj

Cuanto te metas a complicarte con ASM, luego en C es muy fácil de entender.
 
Atrás
Arriba