Programación Específica > Microcontroladores
Evaluacion De La Idea De Mi Proyecto
jgpeiro:
digamos que el LCD lo escribiria asi
primero de Y0,X7 hasta Y0,X83, Y1,X7 hasta Y1,X83...... Y5,X7 hasta Y5,X83, despues desde Y0,X0 hasta Y0,X6,Y1,X0 hasta Y1,X6,..........Y5,X0 hasta Y5,X6.
El metodo que planteo mas adelante permite enviar al LCD 7 lineas de texto, y aun me queda pensar como hacer para escribir en el LCD una barra(como un pequeño menu al borde de la pantalla)con 6 botones que apareceria en la posicio Y0,X0 hasta Y0,X6,Y1,X0 hasta Y1,X6,..........Y5,X0 hasta Y5,X6.
En la memoria RAM 4 bancos. Dos consecutivos de 38 (R1H y R2H)bytes y otros dos consecutivos de 39 bytes(R1L y R2L).
Primero generamos el texto que queremos mostrar en esos dos bancos leyendolo de la EEPROM.
Ponemos el LCD en la direccion Y0,X7.
Segundo cogemos la direccion del primer byte del banco 1 y lo metemos en el FSR. Despues copiamos INDF al TXREG. Sumamos 38 al FSR para desplzarlo al R2H. Rotamos 1 vez a la izq y testeamos "carry", si es 1 ponemos a 1 TXREG,7. enviamos TXREG al LCD.
ahora restamos 37 al FSR, restamos 38 y comprobamos si es 0, si no volvemos al principio.......bueno,mejor lo pongo en ASM y are un dibujo mejor...
Me gustaria saber si las operaciones del INDF provocan alteraciones en STATUS REG...alguien lo sabe
La primera linea de texto no se rota, la segunda se rota x1, la tercera x 2, la cuarta x 3, la quinta x 4, la sesta x -3 y la saeptima x -2.
;Screen Generator
;LCD XYB1H
;Generar B1L en R1L
;Generar B1H en R1H
;Generar B2L en R2L
;Generar B2H en R2H
;set LCD ADDR
;mov RlADDR to FSR
;mov indf to TXREG
;ADD 38 to FSR
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w ;!!!el resultado en W
;btfss STATUS,0
;goto LCD XYB1H
;LCD XYB1L
;mov R2ADDR to FSR
;mov indf to TXREG
;ADD 39 to FSR
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w ;!!!el resultado en W
;btfss STATUS,0
;goto LCD XYB1L
;LCD XYB2H
;Generar B3L en R1L
;Generar B3H en R1H
;set LCD ADDR
;mov RlADDR to FSR
;mov indf to TXREG
;ADD 38 to FSR
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,6
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w ;!!!el resultado en W
;btfss STATUS,0
;goto LCD XYB2H
;LCD XYB2L
;mov R2ADDR to FSR
;mov indf to TXREG
;ADD 39 to FSR
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,6
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w ;!!!el resultado en W
;btfss STATUS,0
;got LCD XYB2L
;LCD XYB3H
;Generar B4L en R2L
;Generar B4H en R2H
;set LCD ADDR
;mov RlADDR to FSR
;mov indf to TXREG
;ADD 38 to FSR
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,5
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,6
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w ;!!!el resultado en W
;btfss STATUS,0
;goto LCD XYB2H
;LCD XYB3L
;mov R2ADDR to FSR
;mov indf to TXREG
;ADD 39 to FSR
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,5
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,6
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w ;!!!el resultado en W
;btfss STATUS,0
;got LCD XYB2L
;LCD XYB4H
;Generar B5L en R1L
;Generar B5H en R1H
;set LCD ADDR
;mov RlADDR to FSR
;mov indf to TXREG
;ADD 38 to FSR
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,4
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,5
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,6
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w ;!!!el resultado en W
;btfss STATUS,0
;goto LCD XYB2H
;LCD XYB4L
;mov R2ADDR to FSR
;mov indf to TXREG
;ADD 39 to FSR
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,4
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,5
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,6
;RRF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w ;!!!el resultado en W
;btfss STATUS,0
;got LCD XYB2L
;LCD XYB5H
;Generar B6L en R2L
;Generar B6H en R2H
;set LCD ADDR
;mov RlADDR to FSR
;mov indf to TXREG
;ADD 38 to FSR
;RLF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,5
;RLF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,6
;RLF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w ;!!!el resultado en W
;btfss STATUS,0
;goto LCD XYB2H
;LCD XYB5L
;mov R2ADDR to FSR
;mov indf to TXREG
;ADD 39 to FSR
;RLF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,5
;RLF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,6
;RLF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w ;!!!el resultado en W
;btfss STATUS,0
;got LCD XYB2L
;LCD XYB6H
;Generar B3L en R1L
;Generar B3H en R1H
;set LCD ADDR
;mov RlADDR to FSR
;mov indf to TXREG
;ADD 38 to FSR
;RLF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,6
;RLF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w ;!!!el resultado en W
;btfss STATUS,0
;goto LCD XYB2H
;LCD XYB6L
;mov R2ADDR to FSR
;mov indf to TXREG
;ADD 39 to FSR
;RLF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,6
;RLF INDF,f ;esto funcionaria?
;BTFSS STATUS,c ;esto funcionaria?
;BSF TXREG,7
;SEND TO LCD
;SUB 37 to FSR
;sub 38 to FSR,w ;!!!el resultado en W
;btfss STATUS,0
;got LCD XYB6L
jgpeiro:
LCDXYB1L
movlw 100
movwf FSR,F
movwf INDF,w
movwf TXREG,f
movlw 39
addwf FSR,w
rrf INDF,f
bsf TXREG,7
btfss STATUS,c
bcf TXREG,7
movlw 37
subwf FSR,f ;(FSR-37=FSR)
subwf FSR,w ;(FSR-38=w)
btfss STATUS,z
goto LCDXYB1L
END
Me gustaria saber como conseguir las operaciones de FSR-38=w con los minimos ciclos posibles. con la instruccion subwf FSR,w ,lo que hago es restar el valor de FSR a 38, y lo que pretendo es restar 38 al valor de FSR. si despues de jecutar subwf FSR,w, ejecuto la intruccion de complement rega,w y en rega hay un valor de 0? o despues de subwf FSR,w le sumo 128 a w?
jgpeiro:
diagrama de flujo general del Acc. Interpreter
jgpeiro:
Las rutinas basicas:
1 LEDs controller:
Utiliza de 4 a 8 registros de la RAM. Se ejecuta cada x segundos por una interrupcion de TMRx.
2 Acc reader:
Utiliza 4 a 10 registros de la RAM
Se ocupa de leer datos analogicos de AccX y AccY
3 Acc interpreter:
Utiliza de 10 a 20 registros de la RAM
se ocupa interpretar los datos leidos por el Acc reader
4Cursor mov.:
se ocupa de variar la posicion del cursor en funcion de Acc interpreter
5 EEPROM R/W
se ocupa de acceder a la EEPROM externa para escribirla o leerla
6Menu pointer
Se ocupa de marcar que menu se muestra en primera inea de pantalla, que menu esta seleccionado
7Screen Gen
Se ocupa de decodificar los caracteres de cada menu, de pintar el cursor en el lugar adecuado y de invertir el menu seleccionado.
8LCD config
Se ocupa de configurar el LCD y de enviarle DATOS
Pegasux:
Yo no se mucho de pics, pero soy capaz de integrarlo en un "reloj" de pulsera con el display del telefono movil y hacer un boligrafo que aparte de escribir tenga pulsadores para controlar el reloj por infrarrojos. Eso si, el diseño tiene que ser un pic 16F877 + Eeprom 24LC64 (igualito que el 16F876 en funcionamiento) o un 16F84 + 24LC16B. Aparte estaria bien que el programa diese la hora para disimular... XDDD
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa