En este hilo voy a ir incluyendo las referencias de las sentencias en BASCOM traducidas al Espanol.
Espero que esto sea de alguna utilidad para los lectores. Favor no hacer comentarios y contribuciones en este hilo para mantener lo usable.
Gracias
Referencia de sentencias en BASCOM
- Hellmut1956
- Miembro Leal
- Mensajes: 1305
- Registrado: Sab Nov 29, 2008 2:06 pm
- Ubicación: Mammendorf, Alemania
Referencia de sentencias en BASCOM
--------------------
Saludos Hellmut
Saludos Hellmut
- Hellmut1956
- Miembro Leal
- Mensajes: 1305
- Registrado: Sab Nov 29, 2008 2:06 pm
- Ubicación: Mammendorf, Alemania
PULSEIN var , PINX , PIN , STATE
Acción
Devuelve el número de unidades entre dos acaecimientos del flanco de un pulso.
Sintaxis
PULSEIN var , PINX , PIN , STATE
Comentarios
var Una variable Word a la cual se asigna el resultado
PINX El registro asociado con un pin, como ejemplo PIND
PIN El dígito del pin (0-7)del cual se desea saber la duración del pulso aplicado
STATE Puede ser 0 o 1.
0 significa registra el flanco de 0 a 1.
1 significa registra el flanco de 1 a 0.
A la variable ERR se le asignará el valor de 1 en el caso de un “time out”. El “time out” tiene lugar después de haberse contado 65535 unidades de tiempo. Con 10uS por unidad de tiempo esto tomaría lugar después de 655,35ms.
Usted puede poner adicionalmente la instrucción “bitwait” para asegurarse que la instrucción PULSEIN esperará a la condición de inicio antes de empezar a ser ejecutada. Pero atención, si Usted utiliza la instrucción BITWAIT y la condición de inicio no acontece nunca, entonces su programa permanecerá en un bucle indefinidamente.
La sentencia PULSEIN esperará el acaecimiento del flanco especificado.
Cuando se utiliza el STATE 0, la rutina esperará hasta que el nivel del pin especificado tome el valor 0. Entonces el contador es iniciado y será parado hasta que el nivel de entrada en este pin tome el valor de 1.
El contador usado es realizado en software, no se utiliza un contador en hardware. Este contador se incrementará cada 10 us. Esto depende del XTAL. Es posible que Usted modifique la rutina en la librería para adaptar el valor de las unidades.
Véase también
PULSEOUT
ASM
La siguiente rutina en ASM es llamada de la instancia en la librería mcs.lib
_pulse_in (calls _adjust_pin)
On entry ZL indica al registro PINx . R16 contiene el valor de STATE, R24 contiene el dígito del pin en el cual se registra el pulso.
On return XL + XH contiene el valor representado con 16 bits del contador.
Ejemplo
Dim w as Word
Pulsein w , PIND , 1 , 0 ‘registra el tiempo hasta el flanco de 0 a 1
Print w
End
Devuelve el número de unidades entre dos acaecimientos del flanco de un pulso.
Sintaxis
PULSEIN var , PINX , PIN , STATE
Comentarios
var Una variable Word a la cual se asigna el resultado
PINX El registro asociado con un pin, como ejemplo PIND
PIN El dígito del pin (0-7)del cual se desea saber la duración del pulso aplicado
STATE Puede ser 0 o 1.
0 significa registra el flanco de 0 a 1.
1 significa registra el flanco de 1 a 0.
A la variable ERR se le asignará el valor de 1 en el caso de un “time out”. El “time out” tiene lugar después de haberse contado 65535 unidades de tiempo. Con 10uS por unidad de tiempo esto tomaría lugar después de 655,35ms.
Usted puede poner adicionalmente la instrucción “bitwait” para asegurarse que la instrucción PULSEIN esperará a la condición de inicio antes de empezar a ser ejecutada. Pero atención, si Usted utiliza la instrucción BITWAIT y la condición de inicio no acontece nunca, entonces su programa permanecerá en un bucle indefinidamente.
La sentencia PULSEIN esperará el acaecimiento del flanco especificado.
Cuando se utiliza el STATE 0, la rutina esperará hasta que el nivel del pin especificado tome el valor 0. Entonces el contador es iniciado y será parado hasta que el nivel de entrada en este pin tome el valor de 1.
El contador usado es realizado en software, no se utiliza un contador en hardware. Este contador se incrementará cada 10 us. Esto depende del XTAL. Es posible que Usted modifique la rutina en la librería para adaptar el valor de las unidades.
Véase también
PULSEOUT
ASM
La siguiente rutina en ASM es llamada de la instancia en la librería mcs.lib
_pulse_in (calls _adjust_pin)
On entry ZL indica al registro PINx . R16 contiene el valor de STATE, R24 contiene el dígito del pin en el cual se registra el pulso.
On return XL + XH contiene el valor representado con 16 bits del contador.
Ejemplo
Dim w as Word
Pulsein w , PIND , 1 , 0 ‘registra el tiempo hasta el flanco de 0 a 1
Print w
End
--------------------
Saludos Hellmut
Saludos Hellmut
- Hellmut1956
- Miembro Leal
- Mensajes: 1305
- Registrado: Sab Nov 29, 2008 2:06 pm
- Ubicación: Mammendorf, Alemania
PULSOUT PORT , PIN , PERIOD
Acción
Genera un pulso en uno de los pines del portal especificado de duración equivalente al número de unidades de tiempo de 1 us de longitud para 4MHz.
Sintaxis
PULSOUT PORT , PIN , PERIOD
Comentarios
PORT Se refiere al nombre del portal. PORTB por ejemplo
PIN Variable o constante del dígito del pin (0-7).
PERIOD El número de unidades de tiempo de duración del pulso. Los periodos se definen en us basados al uso de un XTAL de 4 Mhz.
El pulso es generado invirtiendo el nivel del pin dos veces. Así el estado inicial del pin determina la polaridad.
El pin tiene que ser configurado como salida antes de poder usarse esta sentencia.
Véase también
PULSEIN
Ejemplo
Dim A as Byte
Config Portb = Output ‘PORTB todos los pines
Portb = 0 ‘Iniciar todos los pines a 0
Do
For A = 0 to 7
Pulseout Portb , A , 60000 ‘genera pulso
Waitms 250 ‘espera un poco
Next
Loop ‘espera indefinadamente
Genera un pulso en uno de los pines del portal especificado de duración equivalente al número de unidades de tiempo de 1 us de longitud para 4MHz.
Sintaxis
PULSOUT PORT , PIN , PERIOD
Comentarios
PORT Se refiere al nombre del portal. PORTB por ejemplo
PIN Variable o constante del dígito del pin (0-7).
PERIOD El número de unidades de tiempo de duración del pulso. Los periodos se definen en us basados al uso de un XTAL de 4 Mhz.
El pulso es generado invirtiendo el nivel del pin dos veces. Así el estado inicial del pin determina la polaridad.
El pin tiene que ser configurado como salida antes de poder usarse esta sentencia.
Véase también
PULSEIN
Ejemplo
Dim A as Byte
Config Portb = Output ‘PORTB todos los pines
Portb = 0 ‘Iniciar todos los pines a 0
Do
For A = 0 to 7
Pulseout Portb , A , 60000 ‘genera pulso
Waitms 250 ‘espera un poco
Next
Loop ‘espera indefinadamente
--------------------
Saludos Hellmut
Saludos Hellmut
- Hellmut1956
- Miembro Leal
- Mensajes: 1305
- Registrado: Sab Nov 29, 2008 2:06 pm
- Ubicación: Mammendorf, Alemania
LCD x
Acción
Mandar una constante o una variable a la pantalla LCD.
Sintaxis
LCD x
Comentarios
x Variable o constante a mandar a la pantalla.
Variables adicionales pueden ser mandadas a la pantalla con esta sentencia separándolas por “;”.
LCD a ; b1 ; “constante”
La sentencia LCD se comparta idénticamente a la sentencia PRINT. Por eso la sentencia SPC () también puede ser utilizada. La única diferencia entre PRINT es que LCD no agrega CR+LF cuando se mandan los datos a la pantalla.
Véase también
$LCD , $LCDRS , CONFIG LCD , SPC , CLS , INITLCD , SHIFTLCD , SHIFTCURSOR , CURSOR
Ejemplo
‘-------------------------------------------------------
‘nombre : lcd.bas
‘copyright : © 1995-2005, MCS Electronics
‘purpose : demo: LCD, CLS, LOWERLINE, SHIFTLCD,SHIFTCURSOR, HOME,
‘ CURSOR, DISPLAY
‘micro : Mega8515
‘suited for demo : yes
Commercial addon needed : no
‘-------------------------------------------------------
$regfile = “m8515.dat” ‘especifica el controlador usado
$crystal = 4000000 ‘cristal usado
$baud =19200 ‘velocidad de transmisión
$hwstack =32 ‘valor predeterminado para el stack de la hardware
$swstack = 10 ‘valor predeterminado para el stack de la software
$framesize = 40 ‘espacio predeterminado para el marco
$sim
‘Elimine esta sentencia en la versión final del programa!!
‘$sim es utilizado aquí únicamente para lograr una simulación más rápida.
‘Anotación: Este programa ha sido verificado en el modo Pin con 4 bits.
‘Anotación del traductor: Las interfaces de las pantallas LCD frecuentemente tienen una ancho del bus de datos de 8 bit y ofrecen la posibilidad de ser usados con solo 4 bits. Esto se hace para limitar el número de bits requeridos para conectar una pantalla LCD al controlador. No tiene ventaja alguna usar 8 bits por ser muy limitada la cantidad de datos que se deben transmitir.
'Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6
Rem Con la sentencia “CONFIG LCDPIN” se pueden redefinir las alocaciones estándar de los pines usados por el compilador.
Dim A As Byte
Config Lcd = 16 * 2 'Configuración de la pantalla LCD
‘otras opciones son 16 * 4, 20 * 4, 20 * 2, 16 * 1a
‘Si Usted no usa esta sentencia, entonces el compilador asume 16 * 2.
’16 * 1a se ofrece para pantallas de 16 dígitos con direcciones divididas sobre 2 líneas
‘$LCD = dirección pondrá la pantalla LCD en el modo con bus de datos de 8 bits de ancho
‘Utilice esto con controladores con memoria RAM externa y/o ROM
‘porque este no necesitará los pines del portal!
Cls 'borrar el contenido de la pantalla LCD
Lcd "Hola mundo." 'Muestra esta línea de texto en el primer renglón de la pantalla
Wait 1
Lowerline 'selecciona el renglón inferior de la pantalla
Wait 1
Lcd "Mueve esto" 'Muestra esta línea de texto en el segundo renglón de la pantalla
Wait 1
For A = 1 To 10
Shiftlcd Right 'mueve el texto en el renglón hacia la derecha
Wait 1 'espera un momento
Next
For A = 1 To 10
Shiftlcd Left 'mueve el texto en el renglón hacia la derecha
Wait 1 'espera un momento
Next
Locate 2 , 1 'define la posición del cursor
Lcd "*" 'pon esto en la pantalla
Wait 1 'espera un momento
Shiftcursor Right 'mueve el cursor hacia la derecha
Lcd "@" 'pon esto en la pantalla
Wait 1 'espera un momento
Home Upper 'selecciona el renglón uno y vuelve a home
LCD "Reemplazado." 'reemplaza el texto
Wait 1 'espera un momento
Cursor Off Noblink 'oculta el cursor
Wait 1 'espera un momento
Cursor On Blink 'muestra el cursor
Wait 1 'espera un momento
Display Off 'apaga la pantalla
Wait 1 'espera un momento
Display On 'enciende la pantalla
'-----------------NEW soporte para pantallas de 4-líneas ------
Thirdline
Lcd "Línea 3"
Fourthline
Lcd " Línea 4"
Home Third 'vete a home de la línea 3
Home Fourth
Home F 'la sentencia primer dígito también funciona
Locate 4 , 1 : Lcd " Línea 4"
Wait 1
‘Anotación del traductor: La sentencia “WAIT” se requiere, pues esta sentencia en BASCOM ha sido implementada de tal modo que no usa la posibilidad de verificar que la pantalla esta lista para aceptar el próximo dato, sino que espera este tiempo usando esta sentencia. Por esto no se conecta el pin de salida de la pantalla que indica que esta está lista para recibir el próximo dato.
'Ahora déjenos crear un dígito especial
'El primer dígito es el characternumber (0-7)
'Los otros dígitos son los valores de renglón rowvalues
'Utilice la herramienta LCD para insertar este renglón
Deflcdchar 1 , 225 , 227 , 226 , 226 , 226 , 242 , 234 , 228 ' reemplaza ? con un número (0-7)
Deflcdchar 0 , 240 , 224 , 224 , 255 , 254 , 252 , 248 , 240 ' reemplaza ? con un número (0-7)
Cls 'selecciona RAM de datos
Rem Es importante usar la sentencia CLS después de las sentencias deflcd, pues esta instancia vuelve a poner la pantalla en el modo de datos
Lcd Chr(0) ; Chr(1) 'pon el dígito especial en la pantalla
'----------------- Ahora usa una rutina interna ------------
_temp1 = 1 'valor al ACC
!rCall _write_lcd 'ponlo en la pantalla LCD
End
Mandar una constante o una variable a la pantalla LCD.
Sintaxis
LCD x
Comentarios
x Variable o constante a mandar a la pantalla.
Variables adicionales pueden ser mandadas a la pantalla con esta sentencia separándolas por “;”.
LCD a ; b1 ; “constante”
La sentencia LCD se comparta idénticamente a la sentencia PRINT. Por eso la sentencia SPC () también puede ser utilizada. La única diferencia entre PRINT es que LCD no agrega CR+LF cuando se mandan los datos a la pantalla.
Véase también
$LCD , $LCDRS , CONFIG LCD , SPC , CLS , INITLCD , SHIFTLCD , SHIFTCURSOR , CURSOR
Ejemplo
‘-------------------------------------------------------
‘nombre : lcd.bas
‘copyright : © 1995-2005, MCS Electronics
‘purpose : demo: LCD, CLS, LOWERLINE, SHIFTLCD,SHIFTCURSOR, HOME,
‘ CURSOR, DISPLAY
‘micro : Mega8515
‘suited for demo : yes
Commercial addon needed : no
‘-------------------------------------------------------
$regfile = “m8515.dat” ‘especifica el controlador usado
$crystal = 4000000 ‘cristal usado
$baud =19200 ‘velocidad de transmisión
$hwstack =32 ‘valor predeterminado para el stack de la hardware
$swstack = 10 ‘valor predeterminado para el stack de la software
$framesize = 40 ‘espacio predeterminado para el marco
$sim
‘Elimine esta sentencia en la versión final del programa!!
‘$sim es utilizado aquí únicamente para lograr una simulación más rápida.
‘Anotación: Este programa ha sido verificado en el modo Pin con 4 bits.
‘Anotación del traductor: Las interfaces de las pantallas LCD frecuentemente tienen una ancho del bus de datos de 8 bit y ofrecen la posibilidad de ser usados con solo 4 bits. Esto se hace para limitar el número de bits requeridos para conectar una pantalla LCD al controlador. No tiene ventaja alguna usar 8 bits por ser muy limitada la cantidad de datos que se deben transmitir.
'Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6
Rem Con la sentencia “CONFIG LCDPIN” se pueden redefinir las alocaciones estándar de los pines usados por el compilador.
Dim A As Byte
Config Lcd = 16 * 2 'Configuración de la pantalla LCD
‘otras opciones son 16 * 4, 20 * 4, 20 * 2, 16 * 1a
‘Si Usted no usa esta sentencia, entonces el compilador asume 16 * 2.
’16 * 1a se ofrece para pantallas de 16 dígitos con direcciones divididas sobre 2 líneas
‘$LCD = dirección pondrá la pantalla LCD en el modo con bus de datos de 8 bits de ancho
‘Utilice esto con controladores con memoria RAM externa y/o ROM
‘porque este no necesitará los pines del portal!
Cls 'borrar el contenido de la pantalla LCD
Lcd "Hola mundo." 'Muestra esta línea de texto en el primer renglón de la pantalla
Wait 1
Lowerline 'selecciona el renglón inferior de la pantalla
Wait 1
Lcd "Mueve esto" 'Muestra esta línea de texto en el segundo renglón de la pantalla
Wait 1
For A = 1 To 10
Shiftlcd Right 'mueve el texto en el renglón hacia la derecha
Wait 1 'espera un momento
Next
For A = 1 To 10
Shiftlcd Left 'mueve el texto en el renglón hacia la derecha
Wait 1 'espera un momento
Next
Locate 2 , 1 'define la posición del cursor
Lcd "*" 'pon esto en la pantalla
Wait 1 'espera un momento
Shiftcursor Right 'mueve el cursor hacia la derecha
Lcd "@" 'pon esto en la pantalla
Wait 1 'espera un momento
Home Upper 'selecciona el renglón uno y vuelve a home
LCD "Reemplazado." 'reemplaza el texto
Wait 1 'espera un momento
Cursor Off Noblink 'oculta el cursor
Wait 1 'espera un momento
Cursor On Blink 'muestra el cursor
Wait 1 'espera un momento
Display Off 'apaga la pantalla
Wait 1 'espera un momento
Display On 'enciende la pantalla
'-----------------NEW soporte para pantallas de 4-líneas ------
Thirdline
Lcd "Línea 3"
Fourthline
Lcd " Línea 4"
Home Third 'vete a home de la línea 3
Home Fourth
Home F 'la sentencia primer dígito también funciona
Locate 4 , 1 : Lcd " Línea 4"
Wait 1
‘Anotación del traductor: La sentencia “WAIT” se requiere, pues esta sentencia en BASCOM ha sido implementada de tal modo que no usa la posibilidad de verificar que la pantalla esta lista para aceptar el próximo dato, sino que espera este tiempo usando esta sentencia. Por esto no se conecta el pin de salida de la pantalla que indica que esta está lista para recibir el próximo dato.
'Ahora déjenos crear un dígito especial
'El primer dígito es el characternumber (0-7)
'Los otros dígitos son los valores de renglón rowvalues
'Utilice la herramienta LCD para insertar este renglón
Deflcdchar 1 , 225 , 227 , 226 , 226 , 226 , 242 , 234 , 228 ' reemplaza ? con un número (0-7)
Deflcdchar 0 , 240 , 224 , 224 , 255 , 254 , 252 , 248 , 240 ' reemplaza ? con un número (0-7)
Cls 'selecciona RAM de datos
Rem Es importante usar la sentencia CLS después de las sentencias deflcd, pues esta instancia vuelve a poner la pantalla en el modo de datos
Lcd Chr(0) ; Chr(1) 'pon el dígito especial en la pantalla
'----------------- Ahora usa una rutina interna ------------
_temp1 = 1 'valor al ACC
!rCall _write_lcd 'ponlo en la pantalla LCD
End
--------------------
Saludos Hellmut
Saludos Hellmut