TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: Enigma en 20 de Junio de 2007, 20:45:46
-
Hola que tal amigos... :lol: escribo hoy porque estoy haciendo un programa que me genere un sonidito para un ascensor, la cosa es que encontre un ejemplo en proteus que se llama doorbell, he estado interpretandolo para ayudarme un poquito con mi programa, pero resulta que hay una instrucción que no entiendo para que sirve, le he preguntado hasta a el perro y nadie me da razón de ese operador.... Si alguno de ustedes me puede ayudar se lo agradeceria, aquí les copio la instrucción para que la vean...:
movlw tune1 / 0x100
movwf tptrh
movlw tune1 % 0x100
movwf tptrl
Para que sirven los operadores ( / ) y ( % )........????
Donde tune1 es una tabla que me retorna ciertos valores para producir una nota musical....
Muchas Gracias!!!!!!! :-)
Atte: Enigma... La llanerita de Guayana :P
-
Hola que tal amigos... :lol: escribo hoy porque estoy haciendo un programa que me genere un sonidito para un ascensor, la cosa es que encontre un ejemplo en proteus que se llama doorbell, he estado interpretandolo para ayudarme un poquito con mi programa, pero resulta que hay una instrucción que no entiendo para que sirve, le he preguntado hasta a el perro y nadie me da razón de ese operador.... Si alguno de ustedes me puede ayudar se lo agradeceria, aquí les copio la instrucción para que la vean...:
movlw tune1 / 0x100
movwf tptrh
movlw tune1 % 0x100
movwf tptrl
Para que sirven los operadores ( / ) y ( % )........????
Donde tune1 es una tabla que me retorna ciertos valores para producir una nota musical....
Muchas Gracias!!!!!!! :-)
Atte: Enigma... La llanerita de Guayana :P
Podes encontrar en la ayuda del MPLAB el significado de cada operador lógico o aritmético.
El "/" es una división, y el "%" un MOD(MOD significa que devuelve el resto de una división ENTERA)
EJ:
5 MOD 4 = 1 porque: dividendo- (divisor * resultado) = resto, entonces: 5 - 4*1 = 1
11 MOD 4 = 3 porque 11 - 4*2 = 3
17 MOD 2 = 1 porque 17 - 2*8 = 1
Etc...
Dichas operaciones se procesan pre-ensamblado del archivo, por lo que solo sirven para realizar cambios de configuracion de las instrucciones a generar en el archivo .hex, pero no creas que efectivamente son divisiones u operaciones logicas durante la ejecucion del programa.
Ejemplo:
Si defino asi:
tune1 EQU 0x101
y pongo:
movlw tune1 % 0x100
el MPASM, reemplazará y quedará:
movlw 0x101 % 0x100
y ejecutará las operaciones antes de ensamblarlo, quedando:
movlw 0x001
En definitiva, es util cuando necesitas cambiar el codigo fuente de manera rapida y simple cambiando solamente ciertos parametros(como el tune1)
Saludos.
-
Es decir, que el esta sacando el valor de la tabla y lo esta dividiendo entre 100??? y el resto de esa división lo esta guardando en tptrl...???? es eso?
Atte: Enigma... La llanerita de Guayana :P
-
Correcto! :-/
la parte entera movwf tptrh
y el resto en movwf tptrl :-/
Saludos
Norberto
-
Ahhhh!!! ya entendi!!!! :-) más fiiiinoo!!!! :mrgreen: jejejeje muchas gracias!!! se les quiere!!!! :-/
Atte: Enigma... La llanerita de Guayana :P