Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
program Onof
' El programa enciende LED en pin RB0 del PORTB del F84
' cada vez que se presiona un pulsdor colocado en pin RB1 del PORTB.
' La activación es un cambio de 1 a 0 y espera hasta que se libere el pulsante
' es decir un cambio de 0 a 1.
dim a as byte 'esta variable se emplea solo como una condicion del ciclo While
main:
'******************************************************************************
' INICIALIZACIÓN DE PUERTOS Y PERIFÉRICOS
'******************************************************************************
TRISB.0 = 0 ' Pin 0 del Puerto B salida
TRISB.1 = 1 ' Pin 0 del Puerto B entrada
a = 1
'******************************************************************************
' PROGRAMA PRINCIPAL
'******************************************************************************
while a < 2 'Se cumple condicion siempre que a sea menor que 1
if Button(PORTB,1,100,0) then ' Espera un pulso de 1 a 0
main:
T0CON = $00
INTCON2.INTEDG0 = 0
T0CON.TMR0ON = 1
INTCON = $01D5
iniciolcd
Interrupt
while true
Visualizacion
wend
end.
'DEFINO VARIABLES
dim X, BUFFER1 as byte
dim M as byte
'DIM TMP AS BYTE
DIM TeMP2 AS word
DIM TEXT1 AS CHAR[16]
DIM TEMP AS WORD
DIM TEMP_C AS WORD
DIM MAT1,MAT2,MAT3 AS LONGWORD
main:
'CONFIGURACION DE PUERTOS
ANSEL = $00
ANSELH = $00
'SSPCON = %00010000
'SSPSTAT = %01000001
WPUA = $00
IOCA = $00
TRISA = $00
PORTA = $00
WPUB = %00000000
IOCB = $00
TRISB = %00010000
PORTB = $00
TRISC = $00
PORTC = $00
LCD_INIT(PORTC)
LCD_CMD(LCD_CURSOR_OFF)
'SOFT_SPI_CONFIG(PORTB, 4,5,6)
PORTB.7 = 1
BUFFER1=$00
TEMP=0
TEMP_C=0
'PROGRAMA
P1:
LCD_CMD(LCD_CLEAR)
LCD_OUT(1,1, "loco por")
LCD_OUT(2,1,"INCORDIAR")
DELAY_MS(1000)
P2:
'aqui la rutina de leer el max manualmente
read2:
TRISB = %00010000 'CONFIG PORT B
portb.6=0 ' es el pin del reloj
'portb.7=1 'pin del cs
'delay_ms(10)
portb.7=0 'activamos leer
delay_ms(25)
portb.6=0
delay_ms(25)
portb.6=1
delay_ms(25)
for M = 0 to 15 'step -1
portb.6=1
delay_ms(200)
if portb.4 = 0 then temp.M=0 else temp.M=1 end if
delay_ms(200)
portb.6=0
delay_ms(25)
next M
'delay_ms(5)
portb.7=1
'PARA COLOCAR CADA BIT EN SU SITIO DENTRO DE UN WORD
FOR X = 0 TO 15
IF TeMP.X = 0 THEN TEMP2.15-X = 0 ELSE TEMP2.15-X = 1 END IF
NEXT X
TEMP=temp2
'PARA VER SI SE HA DESCONECTADO LA TERMOCOUPLA
IF TEMP.2 = 1 THEN
LCD_CMD(LCD_CLEAR)
LCD_OUT(1,1, "TERMOPAR")
LCD_OUT(2,1, "DESCONECTADO")
GOTO P2
ELSE GOTO BB
END IF
BB:
'ROTO TRES A LA DERECHA
TEMP= TEMP >>3
'FILTRO
MAT1=0
MAT2=0
'MAT3=0
'TEMP = TEMP AND $0FFF 'sobra
MAT1= TEMP * 1024
MAT2= MAT1 / 4096
'MAT3 = MAT2 /10
TEMP_C = MAT2-28
'TEMP_C = TEMP_C
'CONVIERTO A CADENA Y MUESTRO
WORDTOSTR(TEMP_C, TEXT1)
LCD_CMD(LCD_CLEAR)
LCD_OUT(1,1, "LECTURA:")
LCD_OUT(2,2, TEXT1 )
LCD_OUT(2,7, " C")
DELAY_MS(200)
GOTO P2
END.
Hola Anduri, te recomiendo que utilices la función WordToStr de MikroBasic para convertir un un numero
tipo word o long int a String.
GeSHi (freebasic):
1. ' adc_rd = ADC_read(0) ' get ADC value from 1st
channel
2. adc_rd = 200 ' valore caricato x debug
3. tlong = adc_rd*5000 ' trasformazione per fondo scala 5
volt
4. adc_rd = tlong >> 10 ' divisione per 1024 (10 bit)
5. ch = adc_rd div 1000 ' prepare value for diplay
6. Lcd_Chr(1, 3, 48+ch) ' write ASCII at 1st row, 9th
column
7. Lcd_Chr(1, 4, ".")
8. ch = (adc_rd div 100) mod 10
9. Lcd_Chr(1, 5, 48+ch)
10. ch = (adc_rd div 10) mod 10
11. Lcd_Chr(1, 6, 48+ch)
12. ch = adc_rd mod 10
13. Lcd_Chr(1, 7, 48+ch)
14. delay_ms(1)
15.
GeSHi (freebasic):
1. ' adc_rd = ADC_read(0) ' get ADC value from 1st
channel
2. adc_rd = 200 ' valore caricato x debug
3. tlong = adc_rd*5000 ' trasformazione per fondo scala 5
volt
4. adc_rd = tlong >> 10 ' divisione per 1024 (10 bit)
5. WordToStr(adc_rd,txt)
6. if(txt[0]=' ') then 'Si el primer elemento de la
cadena txt es un espacio
7. txt[0]='0' 'Lo debemos convertir a 0
8. end if
9. Lcd_Chr(1,3,txt[0]) 'Imprimimos el primer elemento
de la cadena
10. Lcd_Chr_Cp('.') 'Imprimimos el punto
11. Lcd_Out_Cp(txt[1]) 'Imprimimos el resto de la
cadena comenzando del segundo elemento.
12. ........
txt debe ser declarado como una cadena de la siguiente manera
Código
GeSHi (freebasic):
1. dim txt as string[5]
Si utilizas la version pro de MikroBasic puedes utilizar la funcion WordToStrWithZeros, con la cual podrías eliminar
la pregunta si es cero.
main:
INTCON = %00000000 ' Todo deshabilitado
GIE, PEIE, TMR0IE,INT0IE,RBIE
INTCON2 = 0xF5
INTCON3 = 0xC0
RCON.IPEN = 0 ' Desabilitar la
prioridad de interrupcion
PIE1 = 0
PIE2 = 0
PIR1 = 0
PIR2 = 0
TRISA = 0x00
TRISB = 0x00
TRISC = 0x00
LATA = 0
LATB = 0
LATC = 0
While true
PORTB=0xFF
Delay_ms(1000)
PORTB=0x00
Delay_ms(1000)
Wend
end.
dim kp, curX, curY as byte
dim keypadPORT as byte at PORTD ' Esta variable debe estar definida
en todos los proyectos por
' medio de la librería Keypad. Así se define el puerto
utilizado para conectar el teclado
kp = 0
while kp = 0
kp = Keypad_Key_Click()
Delay_ms(10)
wend
end.