Beruflich Dokumente
Kultur Dokumente
RGN_GetKeyCode
Función que obtiene el Código de Tecla (1..16) del Keypad (4x4)de Proteus KEYPAD-SMALLCALC
0 : Tecla NO presionada
1..16: Corresponde a una de las 16 teclas del Keypad
RGN_GetKeyMask
Función que obtiene el Caracter correspondiente al KEYPAD-SMALLCALC
RGN_InputByte( variable tipo Byte)
Función que obtiene un Byte del Keypad
"=" es la tecla de ingreso ENTER
"C" es la tecla de retroceso SUPR
RGN_InputDato(variable tipo RGN_StructDato )
Procedimiento que obtiene un Dato controlado del Keypad
La primera fila del LCD muestra el Texto del Dato a ingresar
La segunda fila muestra el Valor actual y el Rango (Mínimo … Máximo) permitido
En caso de que el Dato introducido este fuera de Rango, se muestra un mensaje de error y se vuelve a pedir el Dato
Estructura de la variable RGN_StructDato usada por procedimiento RGN_InputDato:
DTxt: Texto a mostrar en el LCD
DVal: Valor por default del dato
DMin: Rango Mínimo del dato
DMax: Rango Máximo del dato
program TestRGNKeyLcd
include "RGNKeyLCD"
main:
Lcd_Init()
Keypad_Init()
LCD_Cmd(_LCD_CURSOR_OFF)
implements
'---------------------------------------------------------------------------
'Funcion que obtiene el Codigo de Tecla del Keypad de Proteus KEYPAD-SMALLCALC
' 0 : Tecla NO presionada
' 1..16: Corresponde a una de las 16 teclas del keypad
' 1 5 9 13
' "7" "8" "9" "-"
' 2 6 10 14
' "4" "5" "6" "*"
' 3 7 11 15
' "1" "2" "3" "-"
' 4 8 12 16
' "C" "0" "=" "+"
'---------------------------------------------------------------------------
'Funcion que obtiene el Caracter correspondiente al KEYPAD-SMALLCALC
sub function RGN_GetKeyMask as char
result=RGN_KeyMask[RGN_GetKeyCode-1]
end sub
'---------------------------------------------------------------------------
'Funcion que obtiene un Byte del keypad
' "=" es la tecla de ingreso ENTER
' "C" es la tecla de retroceso SUPR
sub function RGN_InputByte(dim Dato as byte) as byte
dim Cont as byte
dim Tecla as char
dim DatoStr as string[3]
Cont=0
DatoStr=""
do
Tecla=RGN_GetKeyMask
select case Tecla
case "=","/","*","-","+" 'Hacer NADA
'---------------------------------------------------------------------------
'Procedimiento que obtiene un Dato controlado del keypad
'La primera fila del LCD muestra el Texto del Dato a ingresar
'La segunda fila muestra el Valor actual y el Rango (Minimo..Maximo) permitido
'En caso de que el Dato introducido este fuera de Rango, se muestra un
'mensaje de error y se vuelve a pedir el Dato
sub procedure RGN_InputDato(dim byref SDato as RGN_StructDato)
dim SDatoStr as string[3]
dim Dato,Range_Ok as byte
do
Lcd_cmd(_Lcd_Clear)
Lcd_Out(2,1,"val= .. ")
ByteToStr(SDato.DVal,SDatoStr)
Lcd_Out(2,5,SDatoStr) 'Mostrar Valor en fila 2
ByteToStr(SDato.DMin,SDatoStr)
Lcd_Out(2,9,SDatoStr) 'Mostrar Minimo en fila 2
ByteToStr(SDato.DMax,SDatoStr)
Lcd_Out(2,14,SDatoStr) 'Mostrar Maximo en fila 2
Lcd_Out(1,1,SDato.DTxt) 'Mostrar Texto en fila 1
Lcd_cmd(_Lcd_Blink_Cursor_On)
Dato=RGN_InputByte(SDato.Dval) 'Obtener Dato
Lcd_cmd(_Lcd_Cursor_Off)
'Comprobar el rango
Range_Ok=(Dato>=SDato.DMin) and (Dato<=SDato.DMax)