Ejemplos PBP (PicBasic Pro)

<< < (7/15) > >>

torres.electronico:
Bueno, seguimos con el segundo ejemplo basico de comunicaciones seriales Pic a Pic, pero con la diferencia del ejemplo anterior, que en esta oportunidad, en el PIC transmisor, colocaremos un teclado (keypad)



Microcontrolador emisor:
Código:

TRISA=0                        
TRISB=%00001110                
CMCON=7                        
OPTION_REG.7=0                  


SYMBOL SALIDA=PORTA.0            
NUM VAR WORD                    
B1 VAR BYTE
SYMBOL P_A=PORTB.4
SYMBOL P_B=PORTB.5
SYMBOL P_C=PORTB.6
SYMBOL P_D=PORTB.7
SYMBOL P_1=PORTB.1
SYMBOL P_2=PORTB.2
SYMBOL P_3=PORTB.3

NUM=0
B1=0
PAUSE 500

INICIO:
PORTB=254
P_A=0
IF P_1=0 THEN
B1=10
GOSUB ENVIAR
WHILE P_1=0
WEND
ENDIF



IF P_2=0 THEN
B1=20
GOSUB ENVIAR
WHILE P_2=0
WEND
ENDIF



IF P_3=0 THEN
B1=30
GOSUB ENVIAR
WHILE P_3=0
WEND
HIGH P_A
ENDIF

P_B=0
IF P_1=0 THEN
B1=40
GOSUB ENVIAR
WHILE P_1=0
WEND
ENDIF


IF P_2=0 THEN
B1=50
GOSUB ENVIAR
WHILE P_2=0
WEND
ENDIF


IF P_3=0 THEN
B1=60
GOSUB ENVIAR
WHILE P_3=0
WEND
ENDIF

HIGH P_B


P_C=0
IF P_1=0 THEN
B1=70
GOSUB ENVIAR
WHILE P_1=0
WEND
ENDIF


IF P_2=0 THEN
B1=80
GOSUB ENVIAR
WHILE P_2=0
WEND
ENDIF


IF P_3=0 THEN
B1=90
GOSUB ENVIAR
WHILE P_3=0
WEND
ENDIF

HIGH P_C


P_D=0
IF P_1=0 THEN
B1=100
GOSUB ENVIAR
WHILE P_1=0
WEND
ENDIF


IF P_2=0 THEN
B1=110
GOSUB ENVIAR
WHILE P_2=0
WEND
ENDIF


IF P_3=0 THEN
B1=120
WHILE P_3=0
WEND
GOSUB ENVIAR
ENDIF
HIGH P_D
PAUSE 100
GOTO INICIO

ENVIAR:
SEROUT2 SALIDA,396,["U","C","O","N","T","R","O","L",B1]
SEROUT2 SALIDA,396,["U","C","O","N","T","R","O","L",B1]
SEROUT2 SALIDA,396,["U","C","O","N","T","R","O","L",B1]
SEROUT2 SALIDA,396,["U","C","O","N","T","R","O","L",B1]
RETURN                        
END

Microcontrolador receptor:
Código:

TRISA=%00001                        
TRISB=0                            
PORTA=0
PORTB=0
OPTION_REG.7=0
CMCON=7

DEFINE LCD_DREG     PORTB  
DEFINE LCD_DBIT     4      
DEFINE LCD_EREG     PORTB  
DEFINE LCD_EBIT     3      
DEFINE LCD_RSREG    PORTB  
DEFINE LCD_RSBIT    2      
DEFINE LCD_BITS     4      
DEFINE LCD_LINES    4      

b1 VAR BYTE                        
INTRO VAR PORTA.0

CLEAR                              
LCDOUT $FE,1
PAUSE 500                          
PORTB=0
LCDOUT $FE,$1,"www.ucontrol.com"
LCDOUT $FE,$C0,"M. A. Torres"
PAUSE 2000
LCDOUT $FE,1

INICIO:
SERIN2 INTRO,396,[WAIT("UCONTROL"),b1]
IF b1=10 THEN LCDOUT $FE,$86,"NUM1"
IF b1=20 THEN LCDOUT $FE,$86,"NUM2"
IF b1=30 THEN LCDOUT $FE,$86,"NUM3"
IF b1=40 THEN LCDOUT $FE,$86,"NUM4"
IF b1=50 THEN LCDOUT $FE,$86,"NUM5"
IF b1=60 THEN LCDOUT $FE,$86,"NUM6"
IF b1=70 THEN LCDOUT $FE,$86,"NUM7"
IF b1=80 THEN LCDOUT $FE,$86,"NUM8"
IF b1=90 THEN LCDOUT $FE,$86,"NUM9"
IF b1=100 THEN LCDOUT $FE,$86,"NUM*"
IF b1=110 THEN LCDOUT $FE,$86,"NUM0"
IF b1=120 THEN LCDOUT $FE,$86,"NUM#"
goto INICIO
END

torres.electronico:
Bueno, arrancamos con el 3er ejemplo de comunicacion, pero en este caso, les muestro que "tan"  :rolleyes: engorroso pueden llegar a ser las comunicaciones Rf empleando los modulos economicos RF de 433Mhz  ;D



Microcontrolador emisor:
Código:

@ DEVICE PIC16F628A
@ DEVICE INTRC_OSC
@ DEVICE WDT_OFF
@ DEVICE PWRT_OFF
@ DEVICE MCLR_OFF
@ DEVICE BOD_OFF
@ DEVICE LVP_OFF
@ DEVICE CPD_OFF
@ DEVICE PROTECT_OFF

DEFINE OSC 4
TRISB=%01
serout portb.1,4,[$10]
INICIO:
 IF PORTB.0 THEN
  pause 500
  SEROUT  PORTB.1,4,["A",84]    
 ENDIF
gOTO INICIO


Microcontrolador receptor:
Código:

@ DEVICE PIC16F628A
@ DEVICE INTRC_OSC
@ DEVICE WDT_OFF
@ DEVICE PWRT_OFF
@ DEVICE MCLR_OFF
@ DEVICE BOD_OFF
@ DEVICE LVP_OFF
@ DEVICE CPD_OFF
@ DEVICE PROTECT_OFF

DEFINE OSC 4
TRISB=%10
B0 var byte

INICIO:
  SERin  PORTB.1,4,["A"],B0
  if b0=84 then high PortB.0:pause 1000:low PortB.0
gOTO INICIO

torres.electronico:

Siberian Labs:
Martín, lo único que se me ocurre es que están tan bien explicados que no necesitan comentarios; aunque un "Muchas Gracias" o "Que bien" de vez en cuando no molesta  ;D

En serio, me sumo a Zek y te felicito por los post que aportaste!!!

Un abrazo!!

Gabriel.

Leon Pic:
Otra cosa que debes saber, es que si entra un usuario, no registrado; también sube el contador.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior