BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

download BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

of 372

Transcript of BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    1/371

     

    BASIC PARABASIC PARABASIC PARABASIC PARA

    MICROCONTROLADORES PICMICROCONTROLADORES PICMICROCONTROLADORES PICMICROCONTROLADORES PIC

    Christian Bodington Esteva

    Ingeniero en Electrónica

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    2/371

     

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    3/371

     

    i

    CONTENIDO

    Prólogo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 

    Capítulo I. Herramientas de Diseño. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 

    Capítulo II. MicroCode Studio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 

    Capitulo III. Microcontroladores PIC.

    3.1.- ¿Que es un PIC? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21

    3.2.- El Oscilador Externo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25

    3.3.- El Circuito de Reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    3.4.- Consideraciones técnicas de diseño. . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    3.4.1.- Estado Lógico de un pin I/O. . . . . . . . . . . . . . . . . . . . . . . . . . 31

    3.4.2. Lectura de un estado lógico en un pin I/O. . . . . . . . . . . . . . . 33

    3.4.3. El Opto-acoplador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    3.4.4. Fuente de poder, 5Vdc / 3.3Vdc. . . . . . . . . . . . . . . . . . . . . . . 37

    Capítulo IV. Estructura de un programa. Componentes y operadores en

    PicBasic.

    4.1.- Estructura de un programa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    4.2.- Subrutinas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    4.3.- Componentes y operadores en PicBasic. . . . . . . . . . . . . . . . . . . . . . . .41

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    4/371

     

    ii

    4.3.1.- Define. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    4.3.2.- Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42

    4.3.3.- Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    4.3.4.- Constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    4.3.5.- Símbolos o Alias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 

    4.3.6.- Operadores Aritméticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . .45 

    4.3.7.- Operadores Binarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45 

    4.3.8.- Operadores de Comparación. . . . . . . . . . . . . . . . . . . . . . . . 46 

    4.3.9.- Operadores Lógicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 

    Capitulo V. Primeros Programas con el PIC16F84.

    5.1.- Proyecto #1. Implementación de las instrucciones de programa High,

    Low Goto y Pause. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47

    5.2.- Proyecto #2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    5.3.- Proyecto #3. Implementación de la instrucción If-Them-Else. . . . . . . .60

    5.4.- Proyecto #4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625.5.- Proyecto #5. Implementación de la instrucción For-Next. . . . . . . . . . . 65

    5.6.- Proyecto #6. Implementación de la instrucción Frecout. . . . . . . . . . . . 68

    5.7.- Proyecto #7. Implementación de la instrucción Button . . . . . . . . . . . . .76

    5.7.1.- Proyecto #7.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

    5.7.2.- Proyecto #7.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

    5.7.3.- Proyecto #7.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    5/371

     

    iii

    5.8.- Proyecto #8. Implementación de la instrucción Branch . . . . . . . . . . . . 91

    5.9.- Proyecto #9. Implementación de la instrucción PWM . . . . . . . . . . . . . 94

    Capitulo VI. Módulos LCD.6.1.- Pantallas LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

    6.2.- Identificación de los pines de una pantalla LCD . . . . . . . . . . . . . . . . . 98

    6.3.- Conexión de una pantalla LCD en Pic Basic. . . . . . . . . . . . . . . . . . . . 99

    6.4.- Proyecto #10. Implementación de la instrucción Lcdout . . . . . . . . . . 103

    6.5.- Proyecto #11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

    6.6.- Proyecto #12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109

    6.7.- Proyecto #13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111

    6.8.- Proyecto #14. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114

    6.9.- Proyecto #15. Implementación de la instrucción Count. . . . . . . . . . . 115

    6.10.- Proyecto #16. Implementación de la instrucción Pulsin. . . . . . . . . . 122

    6.11.- Proyecto #17. Implementación de la instrucción Pot. . . . . . . . . . . . 124

    6.12.- Memoria CGRAM en la Pantalla LCD. . . . . . . . . . . . . . . . . . . . . . . .127

    6.13.- Proyecto #18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130

    6.14.- Proyecto #19. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137

    Capitulo VII. Teclado Matricial.

    7.1.- Teclado Matricial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149

    7.2.- Proyecto #20. Aplicación de un teclado 3x4. . . . . . . . . . . . . . . . . . . .154

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    6/371

     

    iv

    Capitulo VIII. Memoria de Datos.

    8.1.- Memoria de Datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157

    8.2.- Proyecto #21. Implementación de la instrucción Read. . . . . . . . . . . .161

    8.3.- Proyecto #22. Implementación de la instrucción Write. . . . . . . . . . . .163

    8.4.- Proyecto #23. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165

    8.5.- Proyecto #24. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168

    Capitulo IX. Interrupciones.

    9.1.- ¿Qué son las Interrupciones?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175

    9.2.- Fuentes de Interrupciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175

    9.3.- Registro INTCON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175

    9.4.- Activación de interrupción a través del pin RB0/INT. . . . . . . . . . . . . . 177

    9.5.- Proyecto #25. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

    9.6.- Interrupción TMR0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180

    9.7.- Registro OPTION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181

    9.8.- Proyecto #26. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

    9.9.- Interrupción por cambio de estado de uno de los pines mássignificativos del puerto B (RB4-RB7). . . . . . . . . . . . . . . . . . . . . . . . . . . . .186

    9.10.- Proyecto #27. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187

    Capitulo X. Memoria Serial I2C.

    10.1.- ¿Qué es el bus I2C?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190

    10.2.- Proyecto #28. Implementación de las instrucciones I2Cwrite, I2Cread . . 192

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    7/371

     

    v

    10.3.- Proyecto #29. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196

    10.4.- Proyecto #30. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198

    Capitulo XI. Conversor A/D en el PIC16F877. 11.1.- Conversor A/D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202

    11.2.- El registro ADCON0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .209

    11.3.- El registro ADCON1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210

    11.4.- Proyecto #31. Implementación de la instrucción ADCin. . . . . . . . . . 214

    Capitulo XII. Comunicación Serial. Transmisión y Recepción de Datos. 

    12.1.- Comunicación Serial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

    12.2.- Instrucción SerIn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

    12.3.- Proyecto #32. Implementación de la instrucción SerIn. . . . . . . . . . . 221

    12.4.- Instrucción SerOut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233

    12.5.- Proyecto #33. Implementación de la instrucción SerOut. . . . . . . . . .233

    12.6.- Proyecto #34 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .240

    Capitulo XIII. Servomotor. 

    13.1.- ¿Qué es un Servomotor?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268

    13.2.- Proyecto #35. Implementación de la instrucción PauseUs. . . . . . . . .272

    13.3.- Proyecto #36. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .276

    13.4.- Proyecto #37. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280

    13.5.- Proyecto #38. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    8/371

     

    vi

    Capitulo XIV. Módulos RF para comunicaciones. 

    14.1.- Módulos RF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .293

    14.2.- Proyecto #39. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .296

    14.3.- Proyecto #40. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .300

    14.4.- Proyecto #41. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .305

    Capitulo XV. Instrucciones de programa de PicBasic.

    @. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

    ADCin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

    Asm… EndAsm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311

    Branch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .312

    Button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

    Call. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

    Clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .315

    ClearWDT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .316

    Count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 

    Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

    DTMFout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

    EEPROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321

    End. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

    FreqOut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321

    For… Next. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .323

    Gosub. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    9/371

     

    vii

    Goto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .324

    High. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .324

    I2Cread. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

    I2Cwrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .326IF-Then-Else. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

    Input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .328

    LCDin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329

    LCDout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .330

    Low. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331

    NAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

    Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

    Pause. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333

    PauseUs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333

    Pot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

    PulsIn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335

    PulsOut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336

    PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336

    Random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337

    Read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

    Return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

    Reverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .340

    Select Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .340

    SerIn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .342

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    10/371

     

    viii

    SerOut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .343

    Sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .344

    Swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .344

    Toggle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .345

    While-Wend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

    Write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .347

    Apéndice A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .348 

    Apéndice B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .358

    Apéndice C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .360Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362 

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    11/371

     

    Prólogo

    Emprender el estudio de microcontroladores para el desarrollo de proyectoselectrónicos que sean la base para nuevas ideas es el objetivo primordial deesta primera edición, en la cual nos hemos concentrado en dar al lectoralgunas herramientas fundamentales con las cuales esperamos abrir uncampo de conocimiento en la electrónica de control, a través de un sinnumero de posibilidades de diseño a partir de una serie de ejemplos prácticosdesarrollados en lenguaje Basic para Microcontroladores PIC.

    De toda la gama de posibilidades entre las familias de microcontroladores PICque ofrece Microchip Inc., hemos elegido para empezar el microcontrolador

    más popular de toda la serie, el PIC16F84, que será utilizado en este libropara estudiar algunas de sus características a través del desarrollo deactividades que en principio no requieren un nivel de conocimiento elevado ya través del cual daremos los pasos necesarios para adentrarnos en lasgamas mas altas, de las que se ha seleccionado el microcontroladorPIC16F877 para la realización de proyectos electrónicos de nivel medio yavanzado, y en los que podremos manejar dispositivos periféricos que le danun gran valor agregado a cada uno de nuestros proyectos y abrenposibilidades de desarrollo muy interesantes al lector.

    Además, hemos considerado proporcionar la información adecuada referentea las herramientas de desarrollo más importantes en la actualidad, paraprogramación en lenguaje Basic para microcontroladores PIC. En estaocasión iniciamos con el estudio del compilador PicBasic Pro, de la empresamicroEngineering Labs, Inc., la cual ofrece una de las herramientas maspopulares en el área, debido a que cuenta con una gran variedad deinstrucciones que hacen de la programación de microcontroladores una tareafácil y muy productiva a la hora de desarrollar proyectos que involucrenperiféricos como pantallas LCD, teclados matriciales, sensores detemperatura, presión, gas, humedad, memorias de datos entre otros, y dondeuna de las características más relevantes es el considerable ahorro de

    tiempo, lo que se traduce en efectividad y menos líneas de programa, de tal

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    12/371

     

    2

    manera que el diseñador puede prestar mayor atención a los detalles,logrando así perfeccionar su desempeño en cualquiera de las funciones quedesee programar.

    Otra de las herramientas que hemos decidido incorporar a la obra, es el

    programador de microcontroladores PIC P16Pro/PicAll, de la página oficial dePicallW, de Boban Dobaj, Diseñador. Este programador soporta una grancantidad de modelos de las series 12, 16 y 18 de Microchip. Su construcciónes sumamente sencilla y de muy bajo costo, además de una serie de ventajasentre las cuales podemos mencionar la alta velocidad de transferencia dedatos hacia el dispositivo al momento de ser grabado.

    Cada capítulo contiene teoría sobre la cual se pretende estudiar elfuncionamiento de los microcontroladores y periféricos conectados a él. Paraello hemos desarrollado una serie de prácticas en las que el lector deberáhacer montajes de circuitos en base a los diagramas esquemáticos siguiendo

    las instrucciones y leyendo detenidamente los comentarios de cada línea deprograma.

    Esperamos con esto proporcionar al lector una base sólida de conocimientospara el desarrollo de proyectos electrónicos, proyectos de robótica y todoaquello que represente una innovación científica en este campo.

    Finalmente, el agradecimiento para todos nuestros colaboradores en laedición de esta publicación, quienes se han encargado de revisar cadadetalle, proyectos e ideas plasmadas en cada capitulo.

    Ingeniero en Información, Maria del Carmen Lara T.Ingeniero en Electrónica, Jesús Frank Phorlakis.Técnico Superior en Electricidad, Raúl Mastropasqua.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    13/371

     

    3

    Herramientas de Diseño Capitulo I 

    En la elaboración de proyectos electrónicos con microcontroladores PIC,

    resulta muy importante considerar una serie de herramientas, las cualesvamos a describir a continuación:

    Software: para la programación en Lenguaje Basic, contamos con una granvariedad de posibilidades en el mercado, y entre las cuales hemos elegidopara esta primera edición, el Ambiente Integrado de Desarrollo MicrocodeStudio (IDE) de microEngineering Labs, Inc., además del compilador Basic,PICBasic Compiler, o PICBasic Pro Compiler. Con estas dos herramientasestaremos realizando la programación en cada uno de los proyectospropuestos a partir del capítulo V.

    Figura 1.1.

    (Fuente: http://www.microengineeringlabs.com)

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    14/371

     

    4

    •  Programador de Microcontroladores PIC: es una herramientaindispensable con la cual podemos grabar el código generado por elcompilador PicBasic para poner en funcionamiento cada uno de losproyectos propuestos en cada capítulo. Existen en internet una grancantidad de modelos de programadores para microcontroladores PIC,

    de muy bajo costo y fácil construcción. Consideramos una buenaexperiencia realizar el montaje de cualquiera de estos diseños, aunqueen esta oportunidad nuestra recomendación es el programadorP16Pro/Picallw. Los detalles para la construcción de este programadorestán contenidos en el apéndice A.

    Figura 1.2.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    15/371

     

    5

    •  Placa de prototipos: proporciona al diseñador conexiones sinsoldaduras, con lo cual se hace más práctico el desarrollo de losproyectos electrónicos propuestos a lo largo de cada capítulo.

    Figura 1.3.

    •  Multímetro digital: este instrumento de medición será muy útil durantela elaboración de los circuitos propuetos en cada capítulo.

    Figura 1.4.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    16/371

     

    6

    •  Fuente de poder regulada con salida de voltaje variable. En el capítuloIII se propone la construcción de una fuente de poder regulada a 5 Vdcy 3.3 Vdc.

    Figura 1.5.

    •  Herramientas de corte, extractor de circuitos integrados, cable rígidopara conexiones en la placa de prototipos.

    Figura 1.6.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    17/371

     

    7

    •  Osciloscopio: este instrumento se requiere para el desarrollo dealgunas prácticas en las cuales se hace necesario medir las señalesgeneradas desde el microcontrolador.

    Figura 1.7.

    •  Componentes electrónicos: microcontroladores PIC en los modelos

    definidos en cada ejemplo práctico, resistencias, diodos, servomotores,condensadores, cristales y otros componentes de fácil adquisición.Cada proyecto cuenta con una tabla en la cual se decriben loscomponentes electrónicos que deberán ser utilizados en el cadamontaje.

    Figura 1.7.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    18/371

     

    8

    Microcode Studio Capitulo II 

    Microcode Studio (IDE),  es un Ambiente Integrado de Desarrollo de MECANIQUE, diseñado especialmente para microEngineering Labs, Inc.,de libre adquisición a través de la página Webhttp://www.microengineeringlabs.com

    Figura 2.1.

    (Fuente: http://www.microengineeringlabs.com) 

    Descargar este programa es muy sencillo y esto lo podemos haceringresando a la siguiente dirección:

    http://www.microengineeringlabs.com/resources/win_ide.htm

    En esta página se puede encontrar una sección destinada para la descargadel archivo instalador, como se observa en la figura 2.2:

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    19/371

     

    9

    Figura 2.2.

    (Fuente: http://www.microengineeringlabs.com)

    Además de esta herramienta, es necesario adquirir el compilador PicBasic,(Figura 2.3). Se puede acceder directamente a la página de productos demicroEngineering Labs a través de la dirección:

    http://www.melabs.com/products/index.htm

    Figura 2.3.

    (Fuente: http://www.microengineeringlabs.com) 

    Es posible descargar una versión DEMO del compilador PIC Basic, con lacual se pueden compilar programas con un máximo de 31 líneas de código, através de la dirección: http://www.melabs.com/pbpdemo.htm

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    20/371

     

    10

    Figura 2.4.(Fuente: http://www.melabs.com)

    Para empezar la descarga del archivo de instalación del compilador, solo hayque hacer clic en el link señalado en la figura 2.4, e indicar la ruta en la cualse desea que el archivo de instalación sea almacenado.

    Nota Importante:  Es necesario adquirir una de las versiones completas delcompilador Basic, para no tener límites en la cantidad de líneas del programaa compilar.

    En la figura 2.5 se puede observar el archivo descargado para la versióndisponible del software Microcode Studio, y en la figura 2.6 se puede observarel archivo del compilador PicBasic Pro en su versión de prueba.

    Figura 2.5. Figura 2.6.

    Haga clic en el Link aquíseñalado, para descargar laversión Demo de PicBasic. 

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    21/371

     

    11

    El proceso de instalación es muy sencillo. El primer paso será ejecutar elarchivo mcsinstall.exe, el cual es el responsable de iniciar el proceso deinstalación de Microcode Studio:

    Figura 2.7.

    Seguidamente Microcode Studio le da la bienvenida en la ventana que semuestra a continuación:

    Figura 2.8.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    22/371

     

    12

    Haga clic en el botón “Next” y podrá ver en la siguiente ventana el acuerdo delicencia para Microcode Studio:

    Figura 2.9.

    La ruta por defecto para la instalación de Microcode Studio es C:\Archivos deprograma\Mecanique\MCS . Esta ruta puede ser cambiada haciendo clic en elbotón “Browse”, a través del cual se podrá ubicar la nueva carpeta en la cualdeberá ser instalado el software:

    Figura 2.10.

    Nombre de la carpeta en la cual seencontrará el archivo ejecutable deMicrocode Studio.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    23/371

     

    13

    Pulse “Next” para iniciar la copia de archivos (figura 2.11), y finalmente espereque se complete la instalación (figura 2.12).

    Figura 2.11.

    Figura 2.12.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    24/371

     

    14

    Una vez instalado Microcode Studio, es importante tomar en cuenta que antesde iniciar este software, es necesario instalar el compilador Basic, el cual esindispensable para la generación del código que será cargado en elmicrocontrolador PIC.

    Instalación del compilador PicBasic Pro:

    Para dar inicio a la instalación del compilador Pic Basic, será necesarioejecutar el archivo denominado “pbpdemo.exe” para el caso de la versión dedemostración. La figura 2.13 muestra la ventana de inicio del proceso deinstalación, en la cual se da la bienvenida al usuario y le invita a cerrarcualquier otra aplicación que se encuentre en uso en ese momento.

    Figura 2.13.

    En la siguiente ventana se debe especificar la unidad de disco duro en la cualse instalará el compilador y el nombre de la carpeta que va a contener losarchivos a ser instalados. El software de instalación del compilador establecepor defecto la ruta indicada en la figura 2.14.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    25/371

     

    15

    Figura 2.14.

    Seguidamente se debe especificar el nombre de la carpeta que va a contenerlos accesos directos a los archivos que ofrecen información adicional acercadel compilador PicBasic. Este paso puede ser omitido seleccionando la opción“Don’t create a Start Menu Folder”:

    Figura 2.15.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    26/371

     

    16

    Una vez seleccionadas las rutas de instalación del compilador, se debe hacerclic en el botón “Install” (figura 2.16), para dar inicio a la copia de archivos.

    Figura 2.16.

    Figura 2.17.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    27/371

     

    17

    Figura 2.18.

    Finalmente se puede ver en la ventana de la figura 2.18, un mensaje en elcual se confirma que el compilador PICBasic Pro ha sido instaladosatisfactoriamente. Deshabilite la opción “Install Microcode Studio IDE” yseguidamente haga clic en el botón “Finish”.

    Nota: Puede descargar la documentación completa del compilador PicBasic através de la dirección: http://www.melabs.com/support/index.htm

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    28/371

     

    18

    Integración de Microcode Studio y Pic Basic Pro:

    Es importante integrar Microcode Studio con el compilador PicBasic Pro,indicando la ruta en la cual se encuentra instalado. Para esto debemos iniciarel software y seguir las siguientes instrucciones:

    1. Desde el menú de Inicio de Windows ejecute “Microcode Studio”.

    Figura 2.19.

    2. Haga clic en el menú “View” y seleccione la opción “Compile andProgram Options”.

    Figura 2.20.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    29/371

     

    19

    3. En la pestaña “Compiler” haga clic en el botón “Find Automatically”para una ubicación automática del compilador, o si lo prefiere haga clicen “Find Manually” para ubicar el compilador manualmente.

    Figura 2.21.

    4. En la pestaña “Programmer” se pide la ubicación del software delprogramador que estaremos utilizando para grabar losmicrocontroladores.

    Figura 2.22.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    30/371

     

    20

    Se debe ubicar en la lista el programador “PICALL Programmer”, haciendoclic en el botón denominado “Add New Programmer” (Figura 2.22), yseguidamente se debe seleccionar de la lista de opciones, como se puedeobservar en la figura 2.23:

    Figura 2.23.

    Por último, al hacer clic en el botón “Next”, el software realizará la búsquedaautomática de la carpeta que contiene el archivo ejecutable del programadorPicall, el cual ha debido ser instalado según el procedimiento descrito en elApéndice A.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    31/371

     

    21

    Microcontroladores PIC Capitulo III 

    3.1. Que es un PIC?

    Los PIC son una familia de microcontroladores desarrollados y fabricados porla empresa Microchip Technologies Inc., los cuales cuentan con unatecnología tipo RISC (Reduced Instruction Set Computer) y  poseen en suarquitectura interna características especiales que varían según el modelo dePIC que deseamos utilizar.

    Podríamos decir que estos dispositivos se asemejan a una computadora perode tamaño muy reducido, ya que cuentan con casi los mismos recursos queéstas, es decir, poseen memoria de programa, memoria RAM, memoria dedatos, puertos de entrada o salida, temporizadores y en algunos casoscuentan con recursos adicionales como convertidores A/D, comparadores,

    USART (Universal Synchronous/Asynchronous Receiver/Transmitter),comunicación serie I2C, entre otros.

    Con todas estas características es lógico pensar que este dispositivo pasa aser el corazón del circuito a ser controlado. Esto significa que elmicrocontrolador es el encargado de dirigir todos los procesos de un circuitoelectrónico, en base a las instrucciones de programa o rutinas que definenfunciones específicas de control, donde las mismas serán realizadas enlenguaje Basic para microcontroladores PIC. Es por esta razón queconsideramos muy importante estudiar la arquitectura interna delmicrocontrolador que se desea programar y aunque esta tarea pueda parecerdifícil, el Lenguaje Basic para microcontroladores PIC la hace sumamentesencilla.

    El diseño de programas para microcontroladores PIC va acompañadonormalmente con un previo estudio del diseño del hardware que hará quenuestros proyectos se pongan en marcha. Es decir, resulta absolutamentenecesario saber cual será la función específica de cada pin; por ejemplo, en elcaso de los puertos I/O (IN/OUT) a ser utilizados en el microcontrolador, esimportante definir sus funciones antes de empezar a programar, ya que éstospueden ser configurados a conveniencia como entrada o como salida de

    datos de forma independiente. También podemos destinar un puerto completo

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    32/371

     

    22

    del microcontrolador para el control de dispositivos periféricos como pantallasLCD, teclados, motores paso a paso, leds, servomotores entre otros. De ahí laimportancia de establecer cual será la función de cada puerto delmicrocontrolador PIC elegido para nuestros proyectos.

    Otra decisión importante será elegir convenientemente el modelo demicrocontrolador a ser utilizado, ya que hay una gran gama de modelos quepueden ser adaptados a necesidades específicas de diseño.

    Figura 3.1. 

    Los microcontroladores PIC comúnmente más utilizados son los siguientes:

    •  PIC12C508 y PIC12C509, tienen memoria de programa EPROM,oscilador interno, y son muy utilizados en diseños de pequeñoscircuitos.

    •  PIC16F84A, tiene memoria de programa tipo FLASH, osciladorexterno, 13 pines I/O entre otras características que estaremos

    estudiando a lo largo del contenido de esta obra. Este PIC haresultado ser uno de los más populares de toda la serie.

    •  PIC16F87X, incluyen un gran número de mejoras en comparacióncon el PIC16F84, debido principalmente a que cuentan con unnumero de pines I/O superior a éste, además de otrascaracterísticas relevantes. Por ejemplo, con esta serie demicrocontroladores contamos con una mayor capacidad en cuantoa memoria de programa y memoria de datos.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    33/371

     

    23

    •  PIC18F4XX, estos microcontroladores resultan muy útiles cuandodeseamos diseñar proyectos más avanzados.

    Cada uno de estos microcontroladores cuenta con una completa hoja dedatos que puede ser descargada de la página oficial de Microchip:

    http://www.microchip.com

    Estas características influyen directamente al momento de decidir que modelode microcontrolador PIC deseamos utilizar en nuestros proyectos, según seael objetivo de diseño del circuito que deseamos realizar.

    El microcontrolador PIC16F84 es uno de los microcontroladores máspopulares y en algunos casos, el preferido por estudiantes para dar inicio alestudio de la programación de microcontroladores, seguido del PIC16F877 elcual posee más recursos importantes que estaremos estudiando a

    continuación.

    Antes de empezar a revisar todo lo referente a la programación demicrocontroladores PIC, consideramos importante recordar algunas de lascaracterísticas de éstos dispositivos, para tener una base de conocimientosbásicos para poder realizar un programa de control de un diseñocompletamente personalizado.

    Para empezar, veamos algunas características del microcontroladorPIC16F84:

    •  Microcontrolador de 8 Bits.•  Memoria de programa tipo Flash de 1024 palabras de 14 bits.•  Memoria RAM de 68 bytes.•  Memoria EEPROM de datos de 64 bytes.•  Velocidad de operación de hasta 20 Mhz.•  Cuatro fuentes de interrupción.•  Posee 13 pines I/O (pines de entrada o salida).

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    34/371

     

    24

    Diagrama de pines del PIC16F84:

    Figura 3.2.

    PIN Identificación Descripción del Pin

    1 RA2 Pin de Entrada/Salida (I/O) del puerto A

    2 RA3 Pin de Entrada/Salida (I/O) del puerto A3 RA4/TOCKI Pin de Entrada/Salida (I/O) del puerto A

    4 MCLR Reset y entrada de voltaje de programación.

    5 Vss Pin de Alimentación a Tierra (GND)6 RB0/INT Pin de Entrada/Salida (I/O) del puerto B7 RB1 Pin de Entrada/Salida (I/O) del puerto B

    8 RB2 Pin de Entrada/Salida (I/O) del puerto B

    9 RB3 Pin de Entrada/Salida (I/O) del puerto B10 RB4 Pin de Entrada/Salida (I/O) del puerto B

    11 RB5 Pin de Entrada/Salida (I/O) del puerto B

    12 RB6 Pin de Entrada/Salida (I/O) del puerto B13 RB7 Pin de Entrada/Salida (I/O) del puerto B

    14 Vdd Pin de Alimentación de 5Vdc15 OCS2/CLKOUT Salida del oscilador a cristal.

    16 OSC1/CLKIN Entrada del oscilador a cristal o fuente externa de reloj.17 RA0 Pin de Entrada/Salida (I/O) del puerto A

    18 RA1 Pin de Entrada/Salida (I/O) del puerto A  

    Tabla 3.1

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    35/371

     

    25

    El microcontrolador PIC16F84 cuenta con dos puertos I/O, el puerto A, el cualconsta de cinco pines I/O y el puerto B, el cual consta de ocho pines I/O comose puede observar en la figura 3.3:

    Figura 3.3.

    En total se cuenta con trece pines I/O, los cuales pueden ser programadoscomo entrada o salida según convenga al momento de diseñar un circuito decontrol.

    Los pines correspondientes al oscilador (OSC1 y OSC2) y al reset (MCLR)deben ser siempre tomados en cuenta en el diseño de nuestros proyectos. Es

    por este motivo que damos inicio al estudio de algunos circuitosindispensables para el correcto funcionamiento del microcontrolador PIC.

    3.2. El Oscilador Externo.

    Es un circuito indispensable para el funcionamiento del microcontrolador y elcual además, define la velocidad a la cual va a trabajar. Para hacer funcionarnuestro diseño podemos elegir entre las siguientes cuatro opciones:

    •  Oscilador LP: Oscilador de bajo consumo (Low Power).•  Oscilador XT: Cristal / Resonador.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    36/371

     

    26

    •  Oscilador HS: Oscilador de alta velocidad (High Speed).•  Oscilador RC: Resistencia / Condensador.

    En los modos de oscilador LP, XT y HS el cristal debe ser conectado a los

    pines 15 y 16, Osc2/CLKout y Osc1/CLKin respectivamente, como se muestraen la figura 3.4.

    Figura 3.4.

    Los valores de los condensadores cerámicos vienen dados según la tabla que

    se muestra a continuación:

    Modo Frecuencia Osc1/CLKin Osc2/CLKout

    LP32 kHz

    200 kHz

    68 - 100 pF

    15 - 33 pF

    68 - 100 pF

    15 - 33 pF

    XT2 MHz4 MHz

    15 - 33 pF15 - 33 pF

    15 - 33 pF15 - 33 pF

    HS4 MHz

    10 MHz

    15 - 33 pF

    15 - 33 pF

    15 - 33 pF

    15 - 33 pF  Tabla 3.2

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    37/371

     

    27

    Por ejemplo, para un oscilador tipo XT, podemos utilizar un cristal de cuarzocomo el de la figura 3.5.

    Figura 3.5.

    Al conectar el microcontrolador a la fuente de alimentación de 5 Vdc y medirla señal de salida del oscilador XT con un osciloscopio, en el pin 15(Osc2/CLKout) del microcontrolador, podremos ver la onda generada bajo lossiguientes parámetros de medición seleccionados en el equipo:

    •  Voltios/Div: 200mV•  Time/Div: 100ns

    Figura 3.6.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    38/371

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    39/371

     

    29

    Figura 3.8.

    La lectura de la frecuencia y período en este caso sería la siguiente:

    •  Frecuencia: 3,999 Mhz•  Período: 250,013 ns

    El oscilador externo en modo RC resulta ser el más sencillo de todos y por

    ende el más económico. Su configuración lo hace menos preciso debido aque existe una tolerancia de error en sus componentes, sin olvidar tambiénque la temperatura puede afectar la operación de este tipo de oscilador.

    Los valores recomendados para este oscilador son los siguientes:

    •  5 Kohm ≤ R1 ≤ 100 Kohm•  C1 > 20 pF

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    40/371

     

    30

    Figura 3.9.

    3.3. Circuito de Reset: El Pin denominado MCLR (Master Clear), siempredebe ser tomado en cuenta cuando se diseña un circuito conmicrocontroladores PIC. A través de este Pin se podrá reiniciar el dispositivo,si a éste se le aplica un nivel lógico bajo (0V), por lo tanto resulta importantedestacar que para que un programa cargado en un microcontrolador semantenga en ejecución, el Pin MCLR debe estar siempre en un nivel lógicoalto (5V).

    Si deseamos tener control externo del reset de un microcontrolador PIC,debemos considerar el circuito de la figura 3.10:

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    41/371

     

    31

    Figura 3.10.

    Este circuito permite reiniciar el microcontrolador cada vez que el pulsador P1es presionado.

    3.4. Consideraciones técnicas de diseño:

    A continuación veremos algunos circuitos básicos que deben ser tomados encuenta para el desarrollo de prácticas con microcontroladores PIC. Estoscircuitos son muy útiles cuando deseamos visualizar el resultado de unaacción programada en el microcontrolador.

    3.4.1. Estado Lógico de un pin I/O:

    Una manera muy sencilla de ver el estado lógico de un pin configurado comosalida en cualquiera de los puertos de microcontrolador es a través del uso deLEDs, como se observa en los circuitos de la figura 3.11.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    42/371

     

    32

    En el primer circuito, el LED se iluminará solo cuando el estado lógico del pinde salida del puerto sea igual a “1”, es decir, 5 voltios.

    En el segundo circuito, el LED se iluminará solo cuando el estado lógico de lasalida del puerto sea igual a “0”, es decir, 0 voltios.

    Figura 3.11.

    Esto significa que si deseamos realizar un programa en Lenguaje Basicencargado de cambiar el estado lógico de un pin específico, en cualquiera delos puertos de un microcontrolador, una forma “básica” de visualizar estecambio es a través del uso de LEDs.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    43/371

     

    33

    3.4.2. Lectura de un estado lógico en un pin I/O:

    El microcontrolador también nos permite capturar datos o señales externaspara luego ser procesadas y convertidas en respuestas que pueden definiruna acción específica en nuestros circuitos de prueba. Un ejemplo común

    podría ser el uso de un pulsador para hacer destellar un led cada vez queéste sea presionado.

    Si deseamos introducir un nivel lógico bajo (0V), o alto (5V), a una de lasentradas de un microcontrolador a través de un pulsador, podríamosconsiderar los circuitos de la figura 3.12, los cuales nos proporcionan dosformas diferentes de hacerlo:

    Figura 3.12.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    44/371

     

    34

    El primer circuito en la figura 3.12 mantiene un nivel lógico alto (5V) mientrasel pulsador permanece abierto. Al presionar el pulsador, el nivel lógico en elpin I/O del puerto pasa a ser bajo (0V).

    El segundo circuito de la figura 3.12 mantiene un nivel lógico bajo (0V)

    mientras el pulsador permanece abierto. Al presionar el pulsador, el nivellógico en el pin I/O del puerto pasa a ser alto (5V).

    3.4.3. El Opto-acoplador: 

    El opto-acoplador es un componente muy útil cuando se requiere acoplarcircuitos electrónicos digitales con etapas de manejo de potencia o con otroscircuitos.

    Este componente en una de sus versiones, se compone básicamente de un

    diodo LED el cual se encarga de iluminar un fototransistor, para que ésteconduzca corriente a través del colector.

    Figura 3.13.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    45/371

     

    35

    En la configuración de la figura 3.13, cuando en el pin I/O aplicamos un 1lógico (5V), el LED del opto-acoplador enciende y el fototransistor conduce lacorriente a tierra; por lo tanto, en la salida tendremos un 0 lógico (0V).

    Si apagamos el LED, el transistor no conduce, de tal manera que en la salida

    tendremos un 1 lógico (5V).

    En la configuración de la figura 3.14, cuando en el pin I/O aplicamos un 1lógico (5V), el LED del opto-acoplador enciende y el fototransistor conducepara poner en la salida un 1 lógico (5V). Mientras haya un 0 lógico en laentrada, el fototransistor permanecerá abierto entre el emisor y colector,dando como resultado un 0 lógico (0V) en la salida.

    Figura 3.14.

    Una configuración muy común para el control de dispositivos de potenciacomo motores eléctricos, luces incandescentes, solenoides, etc., se puede veren la figura 3.15, la cual se basa en cualquiera de los dos circuitos antesmencionados (figura 3.13 y figura 3.14), en la cual se ha incluido un relé a

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    46/371

     

    36

    través del cual circulará la corriente necesaria entre sus contactos, para hacerfuncionar cualquiera de estos dispositivos de potencia.

    Figura 3.15.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    47/371

     

    37

    3.4.4. Fuente de poder, 5Vdc / 3.3Vdc:

    En caso de no disponer de una fuente de poder regulada, proponemos laconstruccion de un diseño sencillo que podemos implementar en todos los

    proyectos propuestos. En la figura 3.16 se puede observar el diseño de unafuente regulada con salidas de voltaje de +5 Vdc y +3.3 Vdc:

    Figura 3.16.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    48/371

     

    38

    Estructura de un programa.Componentes y operadores en PicBasic. Capitulo IV 

    4.1.- Estructura de un programa: Para que nuestros programas tengan una

    apariencia ordenada y se facilite la comprensión del mismo ante otrosprogramadores que deseen realizar mejoras a éste, es necesario estableceruna estructura que nos permita identificar fácilmente cada una de las partesque lo componen.

    Figura 4.1.

    En la figura 4.1 se puede observar la estructura básica de un programa hechoen Microcode Studio, y en la cual hemos identificado las cuatro secciones queconsideramos más importantes para lograr un programa bien estructurado.

    B C D

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    49/371

     

    39

    Sección A:  Corresponde al encabezado del programa, en el cual se debeconsiderar información básica del mismo, como el nombre, la identificaciónde autor, Copyright, fecha de elaboración o fecha de los últimos cambiosrealizados, versión del programa que se está realizando, e incluso una brevedescripción acerca del objetivo del programa y su aplicación en un

    determinado circuito electrónico.

    Es importante resaltar que cada línea del encabezado debe empezar con unacomilla simple, en forma de comentario (ver “Sección D”).

    Sección B: Esta sección empieza en la columna cero del editor de texto deMicrocode Studio, y en ella se pueden declarar las definiciones (concepto queestudiaremos mas adelante) y las etiquetas de cada una de las subrutinasque serán programadas.

    Las etiquetas identifican puntos específicos o subrutinas dentro de un

    programa. Son definidas por el programador y deben tener al final de cadauna de ellas el símbolo de “dos puntos”, que definen el final de la misma.

    Sección C: Estará destinada para las instrucciones de programa y la mismaestá separada de la columna cero del editor de texto por una tabulación, esdecir, cuando el cursor se encuentra en la columna cero, presionamos unavez la tecla “TAB”, y de esta manera establecemos un espacio mínimo,siempre igual o superior entre la sección B y C.

    Sección D: Esta destinada para realizar comentarios acerca de la función queestará cumpliendo una instrucción específica en nuestro programa. Cadacomentario debe empezar siempre con una comilla simple como se muestra acontinuación:

    ' Define el Oscilador para un Cristal

    ' de 4 Mhz.

    Cuando un comentario es demasiado extenso, podemos continuar el mismoen la siguiente línea, siempre que la frase comience con su respectiva comilla.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    50/371

     

    40

    Los comentarios ayudan al diseñador a identificar cada línea de programa ocada una de las funciones de cada subrutina, garantizando así una buenadocumentación en cada uno de los programas que realizamos.

    4.2.- Subrutinas:  Una subrutina se presenta como un algoritmo separado delalgoritmo principal, y estará destinado a resolver una tarea específica. Lassubrutinas pueden ser referidas cada vez que sea necesario, llamando a laetiqueta que corresponde a ésta, la cual debe ir siempre al inicio de la misma.

    Led1:

    For Z = 0 To 9

    LED = Encendido

    Pause 1000

    LED = Apagado

    Pause 1000 Next ZGoTo InicioEnd

     Subrutina Etiqueta 

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    51/371

     

    41

    4.3.- Componentes y operadores en PicBasic. 

    PIC Basic cuenta con una serie de herramientas de programación entre lascuales podemos mencionar las etiquetas, variables, identificadores,constantes, comentarios, símbolos entre otras.

    Algunas de estas herramientas son de uso obligatorio a la hora de realizar unprograma, y otras que no son de uso obligatorio, nos facilitarán el trabajoconsiderablemente.

    4.3.1.- Define: La directiva “Define” resulta muy importante en laprogramación de microcontroladores con PicBasic, ya que establece unaserie de parámetros que de no ser tomados en cuenta, causará que nuestrosprogramas sencillamente no funcionen en la mayoría de los casos.

    Esta serie de parámetros están directamente relacionados con dispositivosexternos al microcontrolador. Por ejemplo, si deseamos utilizar un osciladorde diferente frecuencia al valor establecido por defecto (4 Mhz), seráconveniente entonces definir la velocidad del mismo utilizando la directiva:

    Define  Osc {frecuencia }

    De igual forma deben ser considerados estos parámetros para el uso dedispositivos como pantallas LCD, donde se deberán definir los puertos deconexión para el bus de datos y bus de control. Así mismo ocurre para el casode las comunicaciones seriales o I2C, donde los parámetros también debenser definidos. Veamos a continuación la tabla de parámetros para el uso de lainstrucción Define .

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    52/371

     

    42

    Parámetro Descripción

    OSC {frecuencia} Frecuencia del Oscilador en Mhz

    LCD_DREG {puerto} Puerto de datos LCD

    LCD_DBIT {bit} Bit inicial del puerto de datos

    LCD_RSREG {puerto} Puerto para RS (Register Select)

    LCD_RSBIT {bit} Pin del Puerto para RS

    LCD_EREG {puerto} Puerto para E (Enable)

    LCD_EBIT {bit} Pin del Puerto para E

    LCD_RWREG {puerto} Puerto para RW (Read/Write)

    LCD_RWBIT {pin} Pin del puerto para RW

    LCD_LINES {líneas} Número de líneas de la LCD (1,2 o 4)

    I2C_SCLOUT 1 Interface de Reloj I2C Bipolar

    I2C_SLOW 1Cuando en la transferencia es utilizado unoscilador mas lento que 8 Mhz.  

    Tabla 4.1.

    4.3.2.- Variables: En las variables podemos almacenar datos temporalmente,los cuales podrán ser consultados o modificados cada vez que sea necesario.Regularmente la definición de variables se hace al inicio del programa y paraello se utiliza la palabra VAR seguida por el tipo de variable según la tablaque mostramos a continuación:

    Nombre de

    la VariableVAR

    Tipo de

    VariableDescripción

    A1 Var Bit Toma los valores 0 y 1 unicamenteTemp Var Byte Toma valores entre 0 y 255 (8 bits)dig1 Var Word Toma valores entre 0 y 65535 (16 bits)  

    Tabla 4.2.

    El nombre de la variable es elegido por el programador y el tipo de variable sedefine según el tipo de dato que se desea almacenar temporalmente.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    53/371

     

    43

    4.3.3.- Arrays: Las variables Arrays tienen un determinado número de“elementos”, definido según el tamaño de la variable. Las variables Arrays tipoBit, pueden almacenar 256 elementos; las variables Arrays tipo Byte puedenalmacenar hasta 96 elementos y las variables Arrays tipo Word hasta 48elementos, los cuales a su vez pueden ser accesados en cualquiera de los

    tres casos a través de un índice. Este índice se específica entre corchetescomo se muestra en los siguientes ejemplos:

    Para declarar una variable Array utilizamos el siguiente formato:

    Dato Var Byte[7]

    El primer elemento de esta variable es Dato[0] y el último elemento esDato[7], lo cual significa que hemos declarado una variable array de 8elementos. En este caso podemos almacenar un byte en cada elemento,siempre especificando el índice.

    Ejemplo: Almacenar en cada elemento de la variable “Dato” los valores 200,15, 56, 75, 80, 20, 33, 45.

    Dato[0] = 200Dato[1] = 15Dato[2] = 56Dato[3] = 75Dato[4] = 80Dato[5] = 20Dato[6] = 33Dato[7] = 45

    En algunos casos se debe verificar la hoja de datos del microcontrolador, yaque la cantidad de elementos que se pueden almacenar en variables arraystipo Byte o Word puede variar según el modelo del mismo.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    54/371

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    55/371

     

    45

    4.3.6.- Operadores Aritméticos: Entre los operadores aritméticos másutilizados tenemos los que se muestran en la siguiente tabla:

    Operador Descripción Operador Descripción

    + Suma ABS Valor Absoluto

    - Resta SIN Seno del Angulo

    * Multiplicación COS Coseno del Angulo / División MIN Minimo de un número // Residuo MAX Máximo de un número

    > Desplaza a la Derecha DIGValor de un digito para un

    número decimal

    = Asignación de Valores  Tabla 4.4.

    4.3.7.- Operadores Binarios: En la siguiente tabla veremos los operadoresbinarios proporcionados para el Lenguaje PicBasic:

    Operrador Descripción

    & AND Lógico

    | OR Lógico

    ^ XOR Lógico

    ˜ NOT Lógico&/ NAND Lógico

    |/ NOR Lógico

    ^/ NXOR Lógico  Tabla 4.5.

    Con estos operadores resulta muy sencillo realizar operaciones binarias,como lo demuestra el siguiente ejemplo:

    Si aplicamos una AND lógica, donde deseamos filtrar los siete bits mássignificativos del valor almacenado en la siguiente variable:

    Var1 = %00101001

    Entonces,

    Var1 = Var1 & %00000001

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    56/371

     

    46

    El resultado de esta operación es Var1 = %00000001

    4.3.8.- Operadores de Comparación: Los operadores de comparaciónnormalmente son utilizados con la instrucción If…Them…  para realizarcomparaciones entre variables o datos extraídos de alguna operación

    aritmética.Operador Descripción

    = Igual Diferente

    < Menor que

    > Mayor que

    = Mayor o igual que  

    Tabla 4.6.

    4.3.9.- Operadores Lógicos: Los operadores lógicos son utilizados paraestablecer condiciones entre variables y son utilizados de la misma maneraque los operadores de comparación.

    Operador Descripción

    AND AND Lógico

    OR OR Lógico

    XOR XOR Lógico

    NOT NOT Lógico

    NOT AND NAND Lógico

    NOT OR NOR Lógico

    NOT XOR NXOR Lógico  Tabla 4.7.

    Ejemplo:

    If Var1 = 1 and Var2 = 3 And Var3 = 5 Then Goto inicio

    La condición saltará a la etiqueta “inicio” solo si se cumplen las trescondiciones.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    57/371

     

    47

    Primeros Programas con el PIC16F84 Capitulo V 

    Para aprender a programar un microcontrolador resulta importante dar inicio

    al tema con ejemplos prácticos y sencillos, que nos ayuden a comprender elfuncionamiento de la arquitectura del PIC y las instrucciones de programa quese están empleando.

    El primer paso entonces será realizar el montaje del circuito con base en losconocimientos adquiridos en las páginas anteriores. Se debe tomar en cuentaque aunque en los diagramas de los circuitos que se muestran a continuación,no están presentes los pines de alimentación “Vcc” y “Gnd”, éstos deben serconectados debidamente a la fuente de alimentación de 5 Voltios.

    A medida que se van proponiendo ejemplos de aplicación práctica, estaremos

    estudiando la sintaxis de las instrucciones empleadas en cada proyecto parafacilitar la comprensión general de éste, referente a la programación y diseñoelectrónico.

    5.1.- Proyecto #1:  A continuación realice el montaje de la figura 5.1, en baseal cual realizaremos la programación necesaria para encender dos Ledsconectados a los puertos del microcontrolador:

    Figura 5.1.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    58/371

     

    48

    Proyecto # 1

    Componentes Cantidad

    PIC16F84A 1

    Cristal de 4 Mhz 1Capacitor cerámico de 33 pF 2

    LED 2

    Resistencia de 220 Ohm 2

    Fuente regulada de 5 Vdc 1

    Tabla 5.1.

    •  El Led 1 se encuentra conectado en el pin RA0 del puerto A, el cualdeberá ser configurado como “Salida”.

    •  El Led 2 se encuentra conectado en el pin RB0 del puerto B, el cualdeberá ser configurado igualmente como “Salida”.

    Note que el ánodo del diodo LED se encuentra conectado al pin de salida delpuerto, por lo tanto para que encienda el LED debemos hacer salir un 1 lógicopor el pin correspondiente.

    Como los pines de los puertos pueden ser configurados como “entradas” ocomo “salidas”, es importante tomar en cuenta los registros de configuraciónde puertos, los cuales para el caso específico del PIC16F84 son dos:

    TrisA (registro de configuración I/O del puerto A), es un registro de 8 bits, delos cuales los tres más significativos no se encuentran implementados en estemodelo de microcontrolador, ya que como se puede observar en el diagramade pines del dispositivo (figura 3.2), el puerto A solo cuenta con 5 pines (RA0,RA1, RA2, RA3 y RA4).

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    59/371

     

    49

    Un ejemplo de configuración de los pines I/O del puerto A es el siguiente:

    1 1 1 1 0

    RA4 RA3 RA2 RA1 RA0

    Registro TrisA

     Figura 5.2.

    1 = Entrada (Al configurar un bit del registro TrisA en “1”, éste se comporta como entrada).

    0 = Salida (Al configurar un bit del registro TrisA en “0”, éste se comporta como salida).

    Al ver la figura 5.2, se puede observar que el pin RA0 ha sido configuradocomo salida y el resto de los pines como entrada.

    En PicBasic, este paso se realiza de la siguiente manera:

    TrisA = %11110 (“%” para expresar la configuración en Binario), ó:

    TrisA = $1E (“$” para expresar la configuración en Hexadecimal)

    TrisB , es un registro de 8 bits en el cual se configuran los pines del puerto B,

    ya sea como entrada o como salida, por ejemplo:

    1 1 1 1 1 1 1 0

    RB7 RB6 RB5 RA4 RA3 RA2 RA1 RA0

    Registro TrisB

     Figura 5.3. 

    1 = Entrada (Al configurar un bit del registro TrisB en “1”, éste se comporta como entrada).

    0 = Salida (Al configurar un bit del registro TrisB en “0”, éste se comporta como salida).

    Bit menossignificativo

    Bit menossignificativo

    “Recordemos entonces que como el Led 1 se encuentra conectado en el pin RA0,el bit correspondiente a este pin en el registro TrisA ha sido configurado comosalida”.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    60/371

     

    50

    Para el caso particular del puerto B, se puede observar que el pin RB0 ha sidoconfigurado como salida y el resto de los pines como entrada.

    “Consideramos importante configurar los pines que no estarán en uso comoentrada, ya que de esta forma podemos evitar daños en el hardware interno

    del microcontrolador al experimentar con éste en un tablero de pruebas.”

    La configuración en PicBasic para el registro TrisB, ajustada al ejemplo de lafigura 5.3 sería entonces la siguiente:

    TrisB = %11111110  (si se desea hacer la notación en binario), ó:

    TrisB = $FE  (si se desea hacer la notación en hexadecimal)

    Antes de verificar el programa propuesto para este ejemplo, veremos lasintaxis de las instrucciones utilizadas en él, para tener una idea clara de la

    función que cumple cada instrucción. Esta información puede sercomplementada en el capítulo XV, en el cual encontrará la descripción decada una de las instrucciones utilizadas en cada proyecto planteado en estaedición.

    Sintaxis de las Instrucciones empleadas en el programa:

    HIGH

    Sintaxis:   HIGH pin

    La instrucción “High” pone en uno lógico un pin I/O específico.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    61/371

     

    51

    LOW

    Sintaxis: LOW pin  

    La instrucción “LOW”   coloca en cero lógico un pin I/O específico.

    GOTO

    Sintaxis:   GOTO etiqueta

    La instrucción “Goto” continúa la ejecución de un programa a partir de laetiqueta especificada (Esta instrucción no tiene retorno).

    PAUSE

    Sintaxis: PAUSE periodo

    La instrucción “Pause” realiza una pausa en el programa por un periododefinido en milisegundos.

    Veamos el programa en PicBasic:

    '****************************************

    '* Nombre : Proyecto1.pbp *

    '* Autor : Nombre del Autor *

    '* Copyright : Copyright (Año) *

    '* Fecha : Fecha *

    '* Versión : 1.0 *

    '****************************************

    Define Osc 4 ' Define el Oscilador para un Cristal

    ' de 4 Mhz.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    62/371

     

    52

    TRISA = %11110 ' Configuración el Puerto A

    TRISB = %11111110 ' Configuración el Puerto B

    PORTA = 0 ' Inicializa el puerto "A", es decir,

    ' se ponen todos los pines en cero.

    PORTB = 0 ' Inicializa el puerto "B".

    Inicio: ' Etiqueta de Inicio del programa

    High PORTA.0 ' Enciente el Led conectado en el pin RA0

    Pause 1000 ' Hace una pausa de 1000 milisegundos = 1

    ' Seg.

    Low PORTA.0 ' Apaga el Led conectado en el pin RA0

    Pause 1000 ' Hace una pausa de 1000 milisegundos = 1

    ' Seg.

    High PORTB.0 ' Enciente el Led conectado en el pin RB0

    Pause 1000 ' Hace una pausa de 1000 milisegundos = 1

    ' Seg.

    Low PORTB.0 ' Apaga el Led conectado en el pin RB0

    Pause 1000 ' Hace una pausa de 1000 milisegundos = 1

    ' Seg.

    GoTo Inicio ' Salta a la etiqueta "Inicio" y se repite el

    ' proceso.

    End

    La instrucción “High” se encarga de poner un nivel lógico alto en el pinespecificado seguidamente. En este caso, primero se escribe el puerto yseguido de un punto, se especifica el número del pin en el puerto quedeseamos utilizar.

    La instrucción “Low” es responsable en este caso de poner el pinespecificado en un nivel lógico bajo. Al igual que en la instrucción “High”, sedebe especificar el puerto y el pin del puerto a ser utilizado.

    La instrucción “GoTo” realiza un salto hacia una etiqueta específica; en estecaso el programa salta a la etiqueta “Inicio” para empezar de nuevo todo elproceso.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    63/371

     

    53

    Al escribir el programa en el editor de texto de Microcode Studio, se debegrabar el mismo con el nombre de su preferencia para que éste pueda sercompilado y al mismo tiempo pueda ser enviado al microcontrolador.

    Observe que para este programa, hemos designado el nombre

    “Proyecto1.pbp” (figura 5.4).

    Figura 5.4.

    Antes de compilar el programa, se debe asegurar de seleccionar el modeloapropiado de microcontrolador PIC, como se observa en la figura 5.5. Luegose compila el programa y se verifica que éste no tenga errores.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    64/371

     

    54

    Figura 5.5.

    Seguidamente, se debe proceder a cargar el programa compilado en elmicrocontrolador con la ayuda del programador de microcontroladores Pic.

    Al hacer clic en el icono “Compilar y Grabar en el PIC” (ver figura 5.5), elcompilador habrá generado un archivo de nombre “Ejemplo1.hex” yseguidamente se abrirá el software “Picall/P16Pro”, como se observa en lafigura 5.6: 

    Figura 5.6.

    En este momento el microcontrolador deberá estar montado en la base delprogramador en la posición indicada por la figura 5.6.

    Com ilarCompilar y

    Grabar enel PIC

    Modelodel uC.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    65/371

     

    55

    Antes de programar el microcontrolador, también resulta conveniente verificarlos fusibles de programación, accediendo al botón “Config”, el cual puede servisualizado en la figura 5.6.

    En esta sección se debe configurar el tipo de oscilador utilizado en nuestro

    circuito, así como otras opciones disponibles que comentaremos acontinuación (ver figura 5.7).

    Figura 5.7. 

    En la figura 5.7 se pueden observar tres secciones llamadas “Oscillator”,“Hardware” y “Protection”:

    •  En la sección “Oscillator”, debemos seleccionar el tipo de osciladorutilizado en nuestro circuito electrónico, el cual en este caso es del tipoXT, debido a que el cristal que hemos elegido es de 4 Mhz.

    •  En la sección “Hardware” es posible activar el temporizador “PerroGuardián”, el cual se encarga de reiniciar el microcontrolador en casode fallas o bloqueos en el programa. Para utilizar el “Watchdog” esnecesario diseñar el programa bajo ciertos parámetros, de forma quepodamos reiniciar el temporizador “Watchdog” antes de que éste sedesborde y provoque un “Reset” en el sistema. Si nuestro programallegara a fallar, el temporizador Watchdog completaría su conteo y sedesbordaría, provocando un “Reset” del sistema.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    66/371

     

    56

    •  En la sección “Hardware” también disponemos de la opción “Power UpTimer”, la cual una vez activada en el microcontrolador, hará que ésteno pueda iniciar el programa hasta tanto el voltaje aplicado al circuitosea estable y seguro (ver figura 5.8).

    0

    1

    2

    3

    4

    5

    6

    1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61Tiempo

          V     o      l      t      i     o     s

     

    Figura 5.8.

    •  En la sección “Protection”, tenemos la posibilidad de proteger el códigode programa almacenado en la memoria del microcontrolador.

    Finalmente hacemos clic en el botón “Program” (ver figura 5.6), paradescargar el programa “Proyecto1.hex” en el microcontrolador;inmediatamente se podrá ver el proceso de grabación y verificación de datos,para luego culminar con el montaje del microcontrolador en el circuito deprueba.

    Estos pasos se deben aplicar en cada uno de los proyectos aquí planteados,o cada vez que se desee realizar una modificación a un programa paraobtener siempre mejores resultados sobre el objetivo propuesto en cadaactividad.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    67/371

     

    57

    5.2.- Proyecto #2: En este ejemplo conectaremos un Led en cada pin delpuerto B, el cual a su vez deberá ser configurado como salida para garantizarel correcto funcionamiento del mismo. En la figura 5.9 podemos observar endetalle la conexión del circuito eléctrico que deberá ser montado.

    Figura 5.9.

    Proyecto # 2

    Componente Cantidad

    PIC16F84A 1

    Cristal de 4 Mhz 1

    Capacitor de 33 pF 2

    LED 8

    Resistencia de 220 Ohm 8

    Fuente regulada de 5 Vdc 1

    Tabla 5.2.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    68/371

     

    58

    En el proyecto #1 se pudo observar como es posible encender un ledconectado a un pin del puerto A o B en un PIC16F84A, utilizando lasinstrucciones High y Low. También existen otras formas de poner un “1” o un“0” lógico en un pin configurado como salida; esto se puede lograr de variasmaneras:

    PORTA.0 = 1 ' RA0 = 1 -> (es igual a High PortA.0)

    PORTA.0 = 0 ' RA0 = 0 -> (es igual a Low  PortA.0)

    Cuando deseamos poner varios pines de un mismo puerto en “1”, podemosutilizar las siguientes opciones:

    PORTB = %10101010 ' RB7 = 1, RB5 = 1, RB3 = 1, RB1 = 1

    ' RB6 = 0, RB4 = 0, RB2 = 0, RB0 = 0

    Este mismo ejemplo de configuración en hexadecimal:

    PORTB = $AA ' RB7 = 1, RB5 = 1, RB3 = 1, RB1 = 1

    ' RB6 = 0, RB4 = 0, RB2 = 0, RB0 = 0

    Recordemos que el símbolo “%” expresa la notación en binario, por lo cual sedeben expresar los ocho bits a ser cargados en el registro “PortB”. Otra formade expresar este ejemplo sería colocando la notación en hexadecimal con elsímbolo “$”, seguido del valor calculado. 

    Basados en esta información podemos lograr encender y apagar varios ledssimultáneamente conectados a uno de los puertos del microcontrolador comolo muestra el montaje de la figura 5.9.

    Veamos el siguiente programa:

    '****************************************

    '* Nombre : Proyecto2.pbp *

    '* Autor : Nombre del Autor *

    '* Copyright : Copyright (Año) *

    '* Fecha : Fecha *

    '* Versión : 1.0 *

    '****************************************

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    69/371

     

    59

    Define Osc 4 ' Define el Oscilador para un Cristal

    ' de 4 Mhz.

    TRISB = %00000000 ' Configura el Puerto B como Salida

    PORTB = %00000000 ' Inicializa el puerto "B".

    Inicio: ' Etiqueta de Inicio del programa

    PORTB = %01010101 ' Enciente las salidas RB0, RB2, RB4 y RB6, al

    ' mismo tiempo apaga RB1, RB3, RB5 y RB7.

    Pause 1000 ' Hace una pausa de 1000 milisegundos = 1 Seg.

    PORTB = %10101010 ' Enciente las salidas RB1, RB3, RB5 y RB7, al

    ' mismo tiempo apaga RB0, RB2, RB4 y RB6.

    Pause 1000 ' Hace una pausa de 1000 milisegundos = 1 Seg.

    GoTo Inicio ' Salta a la etiqueta "Inicio" y se repite el' proceso.

    End

    Este programa enciende primero las salidas pares del puerto B y apaga lassalidas impares, genera una pausa de 1 segundo (1000 ms) y seguidamentehace el proceso inverso en las salidas, es decir, enciende las salidas imparesy apaga las salidas pares para generar nuevamente otra pausa de 1 segundoy así repetir el proceso completo al generar un salto a la etiqueta “Inicio”.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    70/371

     

    60

    5.3.- Proyecto #3 : Los pines en los puertos de un microcontrolador puedenser configurados también como entradas, como se detalla en el contenido delproyecto #1, donde se explica claramente que al poner un “1” en un bit de unregistro de configuración de puerto, ya sea TRISA o TRISB, para el caso delPIC16F84A, éste se comportará como entrada. Realice el montaje de la figura

    5.10 y analice el programa que se muestra a continuación.

    Figura 5.10.

    Proyecto # 3

    Componente Cantidad

    PIC16F84A 1

    Cristal de 4 Mhz 1

    Capacitor cerámico de 33 pF 2

    LED 1

    Resistencia de 220 Ohm 1

    Resistencia de 10K Ohm 1

    Pulsador Normalmente Abierto 1

    Fuente regulada de 5 Vdc 1

    Tabla 5.3. 

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    71/371

     

    61

    IF – THEM – ELSE

    Sintaxis: If expresión 1 { AND  / OR expresión 2} Then etiqueta

    Con la instrucción If – Them podemos tomar decisiones a lo largo de unprograma, basadas en condiciones específicas definidas por el programador.

    El siguiente programa hace destellar un LED conectado en RB0, solo cuado elpulsador es activado:

    '****************************************

    '* Nombre : Proyecto3.pbp *

    '* Autor : Nombre del Autor *

    '* Copyright : Copyright (Año) *

    '* Fecha : Fecha *

    '* Versión : 1.0 *

    '****************************************

    Define Osc 4 ' Define el Oscilador para un Cristal

    ' de 4 Mhz.

    TRISA = %11111 ' configura el Puerto A como Entrada

    TRISB = %00000000 ' Configura el Puerto B como Salida

    PORTB = $00 ' Inicializa el puerto B

    Inicio:

    If PORTA.0 = 1 Then PORTB.0 = 1 ' Pregunta si RA0 = 1, si se cumple' la condición entonces enciende el Led.

    Pause 1000 ' Hace una pausa de 1 segundo (1000 ms)

    Low PORTB.0 ' Apaga el Led

    Pause 1000 ' Hace una pausa de 1 segundo (1000 ms)

    GoTo inicio ' Salta a la etiqueta "Inicio"

    End

    Para verificar si el pulsador está activado, se pregunta si RA0 = 1. Esto esposible gracias a la instrucción “IF” la cual genera un resultado siempre que lacondición planteada se cumpla, y para lo cual debemos utilizarnecesariamente su complemento “Then” seguido de la acción a ser tomada.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    72/371

     

    62

    En este caso si el pulsador ha sido activado, entonces RA0 = 1, es decir, secumple la condición y por lo tanto RB0 = 1, es decir, el LED enciende.

    5.4.- Proyecto #4 : En este ejemplo empleamos un microcontrolador

    PIC16F877A, con el cual nos hemos planteado la lectura de ocho pulsadoresconectados al puerto B, de tal manera que al activar uno de ellos podemosmostrar un dígito decimal en un Display de siete segmentos. 

    Figura 5.11.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    73/371

     

    63

    Proyecto # 4

    Componente Cantidad

    PIC16F877A 1Cristal de 4 Mhz 1

    Capacitor cerámico de 33 pF 2

    Resistencia de 220 Ohm 8

    Resistencia de 10K Ohm 8

    Pulsador Normalmente Abierto 8

    Display de 7 Segmentos - Cátodo común 1

    Fuente regulada de 5 Vdc 1

    Tabla 5.4.

    En el diagrama esquemático de la figura 5.11 se pueden observar ochopulsadores normalmente abiertos, los cuales una vez activados generan unestado lógico alto en el puerto seleccionado (puerto “B”), el cual ha sidoconfigurado como entrada.

    El display de 7 segmentos de cátodo común, se encuentra conectado alpuerto “D”, donde el bit menos significativo RB0 corresponde al segmento “a”del display, RB1 corresponde al segmento “b”, RB2 corresponde al segmento“c”, RB3 corresponde al segmento “d”, RB4 corresponde al segmento “e”, RB5

    corresponde al segmento “f” y RB6 corresponde al segmento “g”.El siguiente programa es una forma básica de tomar una lectura de cadapulsador conectado al puerto “B” y generar un resultado en el puerto de salidaal cual hemos conectado un display de 7 segmentos:

    '****************************************

    '* Nombre : Proyecto4.pbp *

    '* Autor : Nombre del Autor *

    '* Copyright : Copyright (Año) *

    '* Fecha : Fecha *

    '* Versión : 1.0 *

    '****************************************

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    74/371

     

    64

    Define Osc 4 ' Define el Oscilador para un Cristal

    ' de 4 Mhz.

    TRISB = $FF ' Configura el Puerto B como Entrada

    TrisD = $00 ' Configura el Puerto D como Salida

    Inicio:

    ' A continuación se verifica cada pin del puerto B,

    ' si hay un 1 lógico en alguna de las entradas el

    ' puerto D se actualiza con el dato correspondiente

    ' para generar en el Display un dígito decimal.

    ' gfedcba

    ' |||||||

    If PORTB.0 = 1 Then PortD = %00111111 ' Enciende los segmentos correspondientes' al dígito “cero” en el display. 

    If PORTB.1 = 1 Then PortD = %00000110 ' Enciende los segmentos correspondientes

    ' al dígito “uno” en el display. 

    If PORTB.2 = 1 Then PortD = %01011011 ' Enciende los segmentos correspondientes' al dígito “dos” en el display. 

    If PORTB.3 = 1 Then PortD = %01001111 ' Enciende los segmentos correspondientes

    ' al dígito “tres” en el display. 

    If PORTB.4 = 1 Then PortD = %01100110 ' Enciende los segmentos correspondientes' al dígito “cuatro” en el display. 

    If PORTB.5 = 1 Then PortD = %01101101 ' Enciende los segmentos correspondientes' al dígito “cinco” en el display. 

    If PORTB.6 = 1 Then PortD = %01111101 ' Enciende los segmentos correspondientes

    ' al dígito “seis” en el display. 

    If PORTB.7 = 1 Then PortD = %00000111 ' Enciende los segmentos correspondientes' al dígito “siete” en el display. 

    GoTo Inicio ' Salta a la etiqueta "Inicio"

    End

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    75/371

     

    65

    5.5.- Proyecto #5 : En el ejemplo a continuación se realiza un conteoascendente desde cero hasta nueve en un display de 7 segmentos conectadoal puerto “D” de un PIC16F877A.

    Figura 5.12.

    Proyecto # 5

    Componente Cantidad

    PIC16F877A 1Cristal de 4 Mhz 1

    Capacitor cerámico de 33 pF 2

    Resistencia de 220 Ohm 8

    Display de 7 Segmentos - Cátodo común 1

    Fuente regulada de 5 Vdc 1

    Tabla 5.5.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    76/371

     

    66

    FOR… NEXT

    Sintaxis: For variable = inicio to final {step {-} incremento}

    **Instrucciones…**Next   { variable}

    La instrucción For…Next se encarga de hacer repeticiones de instruccionesque permanecen dentro del lazo For… Next.

    El parámetro Step afecta el incremento según el valor asignado después deesta palabra. Si este parámetro es omitido, el incremento es en una unidad.

    Analice el siguiente programa:

    '****************************************

    '* Nombre : Proyecto5.pbp *

    '* Autor : Nombre del Autor *

    '* Copyright : Copyright (Año) *

    '* Fecha : Fecha *

    '* Versión : 1.0 *

    '****************************************

    Define Osc 4 ' Define el Oscilador para un Cristal

    ' de 4 Mhz.

    I Var Byte ' Declaración de la Variable "I" tipo Byte

    ' Constantes para definir cada dígito decimal en el Display:

    ' gfedcba

    ' |||||||

    Cero CON %00111111

    Uno CON %00000110

    Dos CON %01011011

    Tres CON %01001111

    Cuatro CON %01100110

    Cinco CON %01101101

    Seis CON %01111101

    Siete CON %00000111

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    77/371

     

    67

    Ocho CON %01111111

    Nueve CON %01100111

    ' Configuración del Puerto de Salida:

    TrisD = $00 ' Configura el Puerto D como Salida

    Inicio:

    For I = 0 To 9 ' Repetición de Instrucciones dentro del Lazo

    ' For - Next 

    Call Digito ' Salto con Retorno hacia la etiqueta "Digito"

    Pause 1000 ' Pausa de 1 segundo (1000 ms)

     Next I

    GoTo Inicio ' Salta a la etiqueta "Inicio"

    Digito:

    ' Verificación del dígito a ser mostrado en el Display el cual

    ' se corresponde con el valor almacenado en la variable "I".

    If I = 0 Then PortD = ceroIf I = 1 Then PortD = UnoIf I = 2 Then PortD = dos

    If I = 3 Then PortD = tresIf I = 4 Then PortD = cuatroIf I = 5 Then PortD = cincoIf I = 6 Then PortD = seisIf I = 7 Then PortD = siete

    If I = 8 Then PortD = ochoIf I = 9 Then PortD = nueve

    Return ' Retorna una línea después del salto con retorno (Call)End

    Al iniciar el conteo en el display de 7 segmentos, se puede observar unconteo ascendente que da inicio en cero y se va incrementando en unaunidad cada segundo hasta llegar a nueve.

    Si deseamos realizar el incremento en más de una unidad por vez, tan solodebemos incluir la directiva “Step”, seguido del incremento, es decir, siqueremos realizar un incremento de dos unidades por vez, entonces el lazoFor – Next se compone de la siguiente manera:

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    78/371

     

    68

    For I = 0 To 9 Step 2 ' Repetición de Instrucciones dentro del Lazo

    ' For – Next con incremento en dos unidades. 

    Call Digito ' Salto con Retorno hacia la etiqueta "Digito"

    Pause 1000 ' Pausa de 1 segundo (1000 ms)

     Next I

    Esto significa que el conteo arranca en cero y cada segundo transcurrido sepodrán ver los dígitos: “2”, “4”, “6” y “8”.

    Para realizar un conteo regresivo, el lazo For – Next se compone de lasiguiente forma:

    For I = 9 To 0 Step -1 ' Repetición de Instrucciones dentro del Lazo

    ' For – Next. 

    Call Digito ' Salto con Retorno hacia la etiqueta "Digito"

    Pause 1000 ' Pausa de 1 segundo (1000 ms)

     Next I

    En este caso en conteo inicia en nueve y decrece en una unidad hasta llegara cero.

    5.6.- Proyecto #6:   PicBasic cuenta con una instrucción capaz de generartonos DTMF (Dual Tone Multifrecuency - Multifrecuencia de doble tono), tonosque se utilizan en telefonía para marcar una serie de números y así poder

    establecer la comunicación entre dos o más personas. Una aplicacióninteresante para esta instrucción podría ser el discado de números telefónicosen sistemas de alarma cuando ha sido activado un dispositivo de supervisión,para luego generar un mensaje de voz que nos alerte de dicho evento. 

    Realice el montaje de la figura 5.13 y analice el programa que se muestra acontinuación, el cual genera tonos DTMF consecutivos de una serie de dígitospredefinidos. Es muy importante considerar que para generar los tonosadecuadamente el oscilador externo debe ser de 10 Mhz o superior.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    79/371

     

    69

    Figura 5.13.

    Proyecto # 6

    Componente Cantidad

    PIC16F84A 1

    Cristal de 10 Mhz 1

    Capacitor cerámico de 33 pF 2

    Capcitor Electrolítico de 10 uF 2

    Parlante de 8 Ohm 1

    Fuente regulada de 5 Vdc 1

    Tabla 5.6.

    En la tabla 5.7 se puede observar la frecuencia baja y la frecuencia alta decada digito entre cero y quince, los cuales se corresponden a su vez con cadauno de los dígitos de un teclado telefónico, como se puede observar en lasegunda columna de la misma tabla.

    Esto quiere decir que si generamos las frecuencias correspondientes al dígito“1” utilizando la instrucción “DTMFout”, obtendremos las mismas frecuenciasbaja y alta que se generan al pulsar el dígito “1” de cualquier teléfono de tonosDTMF. Si deseáramos generar desde el microcontrolador el tono DTMF

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    80/371

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    81/371

     

    71

    Antes de empezar a programar, vamos a verificar la sintaxis de la instrucciónDTMFout:

    DTMFout  

    Sintaxis: DTMFout pin, {On-ms, Off-ms}, [tono, tono,...tono]

    La instrucción DTMFout  genera tonos DTMF en secuencia y a través de unpuerto cualquiera del microcontrolador.

    Pin : especifica el pin del puerto en el cual se emitirán los tonos DTMF.

    On-ms : es una variable o constante que especifica la duración de cada tonoen milisegundos. En caso de no utilizar este parámetro, el tiempo por defectode cada tono es de 200 ms.

    Off-ms: es una variable o constante que especifica el tiempo en milisegundosdel silencio que hay entre cada tono. En caso de no utilizar este parámetro, eltiempo en silencio entre cada tono por defecto será de 50 ms.

    Tono: puede ser una variable o constante entre 0 y 15, que especifica el tonoque debe ser generado.

  • 8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington Esteva.pdf

    82/