INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
                       UNIDAD ZACATENCO
          INGENIERÍA EN COMUNICACIONES Y ELÉCTRONICA
                       Microprocesadores.
                      Práctica: Práctica LCD
                          PROFESOR:
                  VÁZQUEZ ZARATE AGUSTÍN.
                          Grupo: 6CV5
Integrantes:
Objetivo:
Aprender a utilizar el display 16x2 en el pic 18F4550
Desarrollo:
;******************************************************************************
; This file is a basic template for assembly code for a PIC18F4550. Copy
; this file into your project directory and modify or add to it as needed. *
; The PIC18FXXXX architecture allows two interrupt configurations. This
; template code is written for priority interrupt levels and the IPEN bit
; in the RCON register must be set to enable priority levels. If IPEN is
; left in its default zero state, only the interrupt vector at 0x008 will
; be used and the WREG_TEMP, BSR_TEMP and STATUS_TEMP variables will not
; be needed.
; Refer to the MPASM User's Guide for additional information on the
; features of the assembler.
; Refer to the PIC18FXX50/XX55 Data Sheet for additional
; information on the architecture and instruction set.
;******************************************************************************
; Filename: PlantillaASM                                  *
; Date:       12/01/11                                *
; File Version: 1.0                                  *
;                                             *
; Author: Ing. Alejandro Vicente Lugo Silva                      *
; Company: Acad. Computación ICE - ESIME Zac.                         *
;                                            *
;******************************************************************************
;                                           *
; Files required: P18F4550.INC                            *
;                                            *
;******************************************************************************
         LIST P=18F4550, F=INHX32        ;directive to define processor
         #include <P18F4550.INC>                 ;processor specific variable definitions
;******************************************************************************
;Configuration bits
         CONFIG PLLDIV = 5         ;(20 MHz crystal on PICDEM FS USB board)
    CONFIG CPUDIV = OSC1_PLL2
    CONFIG USBDIV = 2         ;Clock source from 96MHz PLL/2
    CONFIG FOSC       = HSPLL_HS
    CONFIG FCMEN = OFF
    CONFIG IESO   = OFF
    CONFIG PWRT       = OFF
    CONFIG BOR    = ON
    CONFIG BORV       =3
    CONFIG VREGEN = ON                   ;USB Voltage Regulator
    config WDT    = OFF
    config WDTPS = 32768
    config MCLRE = ON
    config LPT1OSC = OFF
    config PBADEN = OFF                  ;NOTE: modifying this value here won't have an effect
                                                             ;on the application. See the top of the
main() function.
                                                             ;By default the RB4 I/O pin is used to
detect if the
                                                             ;firmware should enter the bootloader or
the main application
                                                             ;firmware after a reset. In order to do
this, it needs to
                                                             ;configure RB4 as a digital input, thereby
changing it from
                                                             ;the reset value according to this
configuration bit.
  config CCP2MX = ON
  config STVREN = ON
  config LVP        = OFF
  config ICPRT = OFF         ; Dedicated In-Circuit Debug/Programming
  config XINST = OFF         ; Extended Instruction Set
  config CP0        = OFF
  config CP1        = OFF
  config CP2        = OFF
  config CP3        = OFF
  config CPB        = OFF
  config CPD        = OFF
  config WRT0        = OFF
  config WRT1        = OFF
  config WRT2        = OFF
  config WRT3        = OFF
  config WRTB        = OFF   ; Boot Block Write Protection
  config WRTC        = OFF
  config WRTD        = OFF
  config EBTR0 = OFF
  config EBTR1 = OFF
  config EBTR2 = OFF
  config EBTR3 = OFF
  config EBTRB = OFF
;******************************************************************************
;Variable definitions
; These variables are only needed if low priority interrupts are used.
; More variables may be needed to store other special function registers used
; in the interrupt routines.
;******************************************************************************
;Reset vector
; This code will start executing when a reset occurs.
RESET_VECTOR ORG                0
                 goto    Main            ;go to start of main code
;******************************************************************************
;******************************************************************************
;Start of main program
; The main program code is placed here.
                 ORG            0x1000
                 CALL CONFIGPUERTOS
Main                    ; *** main code goes here **
        CALL Inicializa_LCD ;inicializamos lcd
        MOVLW CLEAR ;INSTRUCCION PARA LLEGAR AL LCD
        MOVWF DATO ;MOVEMOS AL PARAMETRO DATO
        CALL Comando_LCD
        MOVLW DDRAM_L1 ; INSTRUCCION PARA MOVERSE A LA LINEA 1
        ADDLW .6 ;SUMAMOS 6 PARA DESPLAZARNOS 6 CARACTERES Y CENTRAR EL
TEXTO
        MOVWF DATO ;MOVEMOS AL PARAMETRO DATO
        CALL Comando_LCD
        MOVLW 'H'
        MOVWF DATO
        CALL Dato_LCD
        MOVLW 'O'
        MOVWF DATO
        CALL Dato_LCD
        MOVLW 'L'
        MOVWF DATO
        CALL Dato_LCD
        MOVLW 'A'
        MOVWF DATO
        CALL Dato_LCD
        CLRF PORTD ;LIMPIAMOS PUERTO D
        GOTO Main
; end of main
;******************************************************************************
; Start of subrutines
                CONFIGPUERTOS
                CLRF WREG
                MOVLW H'0F'
                MOVWF ADCON1
                CLRF TRISD
                CLRF PORTD
                #include <H:\lcd.INC>
;******************************************************************************
;******************************************************************************
;End of program
                END
Diagrama del circuito:
Conclusiones:
                      INSTITUTO POLITÉCNICO NACIONAL
            ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
                            UNIDAD ZACATENCO
               INGENIERÍA EN COMUNICACIONES Y ELÉCTRONICA
                           Microprocesadores.
                           Práctica: Push Botton
                                Profesor:
                         Vázquez Zarate Agustín.
                               Grupo: 6CV5
Integrantes
Objetivo:
Aprender a utilizar el interruptor por medio de un programa en lenguaje ensamblador para el
PIC18F4550 para una función determinada.
Desarrollo:
;******************************************************************************
; This file is a basic template for assembly code for a PIC18F4550. Copy *
; this file into your project directory and modify or add to it as needed. *
;                                            *
; The PIC18FXXXX architecture allows two interrupt configurations. This        *
; template code is written for priority interrupt levels and the IPEN bit *
; in the RCON register must be set to enable priority levels. If IPEN is *
; left in its default zero state, only the interrupt vector at 0x008 will *
; be used and the WREG_TEMP, BSR_TEMP and STATUS_TEMP variables will not *
; be needed.                                       *
;                                            *
; Refer to the MPASM User's Guide for additional information on the            *
; features of the assembler.                               *
;                                            *
; Refer to the PIC18FXX50/XX55 Data Sheet for additional                 *
; information on the architecture and instruction set.               *
;                                            *
;******************************************************************************
;                                            *
; Filename: PlantillaASM                                   *
; Date:       12/01/11                                 *
; File Version: 1.0                                 *
;                                            *
; Author: Ing. Alejandro Vicente Lugo Silva                     *
; Company: Acad. Computación ICE - ESIME Zac.                        *
;                                            *
;******************************************************************************
;                                           *
; Files required: P18F4550.INC                            *
;                                           *
;******************************************************************************
         LIST P=18F4550, F=INHX32        ;directive to define processor
         #include <P18F4550.INC>                 ;processor specific variable definitions
;******************************************************************************
;Configuration bits
         CONFIG PLLDIV = 5         ;(20 MHz crystal on PICDEM FS USB board)
    CONFIG CPUDIV = OSC1_PLL2
    CONFIG USBDIV = 2         ;Clock source from 96MHz PLL/2
    CONFIG FOSC       = HSPLL_HS
    CONFIG FCMEN = OFF
    CONFIG IESO   = OFF
    CONFIG PWRT       = OFF
    CONFIG BOR    = ON
    CONFIG BORV       =3
    CONFIG VREGEN = ON                   ;USB Voltage Regulator
    config WDT    = OFF
    config WDTPS = 32768
    config MCLRE = ON
    config LPT1OSC = OFF
    config PBADEN = OFF                  ;NOTE: modifying this value here won't have an effect
                                                             ;on the application. See the top of the
main() function.
                                                             ;By default the RB4 I/O pin is used to
detect if the
                                                             ;firmware should enter the bootloader or
the main application
                                                             ;firmware after a reset. In order to do
this, it needs to
                                                             ;configure RB4 as a digital input, thereby
changing it from
                                                             ;the reset value according to this
configuration bit.
  config CCP2MX = ON
  config STVREN = ON
  config LVP        = OFF
  config ICPRT = OFF         ; Dedicated In-Circuit Debug/Programming
  config XINST = OFF         ; Extended Instruction Set
  config CP0        = OFF
  config CP1        = OFF
  config CP2        = OFF
  config CP3        = OFF
  config CPB        = OFF
  config CPD        = OFF
  config WRT0        = OFF
  config WRT1        = OFF
  config WRT2        = OFF
  config WRT3        = OFF
  config WRTB        = OFF   ; Boot Block Write Protection
  config WRTC        = OFF
  config WRTD        = OFF
  config EBTR0 = OFF
  config EBTR1 = OFF
  config EBTR2 = OFF
  config EBTR3 = OFF
  config EBTRB = OFF
;******************************************************************************
;Variable definitions
; These variables are only needed if low priority interrupts are used.
; More variables may be needed to store other special function registers used
; in the interrupt routines.
;******************************************************************************
;Reset vector
; This code will start executing when a reset occurs.
RESET_VECTOR ORG                   0
                 goto     Main            ;go to start of main code
;******************************************************************************
;******************************************************************************
;Start of main program
; The main program code is placed here.
        ORG               0x1000
Main                               ; *** main code goes here **
        call configptos
        call configtimer0
consulta:
        btfsc    INTCON,TMR0IF
        call nuevoretardo
        goto consulta
                                         ; end of main
;******************************************************************************
; Start of subrutines
;******************************************************************************
configptos       ;subrutina define lineas de E/S
        movlw 0x0F
        movwf ADCON1
        clrf     TRISA
        movlw 0x55
        movwf LATA
        return
configtimer0     ;subrutina que configura el modo de operaciòn timer0
        bcf      INTCON,TMR0IF
        movlw 0X48
        movwf TMR0H
        movlw 0XE5
        movwf TMR0L
        movlw 0X87
        movwf T0CON
        return
nuevoretardo ;reinici timer para nuevo retardo
        bcf      INTCON,TMR0IF
       movlw 0x48
       movwf TMR0H
       movlw 0XE5
       movwf TMR0L
       comf     LATA
       return
;******************************************************************************
;End of program
       END
Diagrama del circuito:
                 INSTITUTO POLITÉCNICO NACIONAL
       ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
                       UNIDAD ZACATENCO
          INGENIERÍA EN COMUNICACIONES Y ELÉCTRONICA
                       Microprocesadores.
                            Práctica:
          Sumador (Manejo de tablas con PIC 18F4550)
                           Profesor:
                    Vázquez Zarate Agustín.
                          Grupo: 6CV5
Integrantes:
Objetivo:
Desarrollar y diseñar un programa para la suma de números. Y el uso de las tables del PIC
18F4550.
Desarrollo:
;******************************************************************************
; This file is a basic template for assembly code for a PIC18F4550. Copy *
; this file into your project directory and modify or add to it as needed. *
;                                            *
; The PIC18FXXXX architecture allows two interrupt configurations. This        *
; template code is written for priority interrupt levels and the IPEN bit *
; in the RCON register must be set to enable priority levels. If IPEN is *
; left in its default zero state, only the interrupt vector at 0x008 will *
; be used and the WREG_TEMP, BSR_TEMP and STATUS_TEMP variables will not *
; be needed.                                       *
;                                            *
; Refer to the MPASM User's Guide for additional information on the            *
; features of the assembler.                               *
;                                            *
; Refer to the PIC18FXX50/XX55 Data Sheet for additional                 *
; information on the architecture and instruction set.               *
;                                            *
;******************************************************************************
;                                            *
; Filename: PlantillaASM                                   *
; Date:       12/01/11                                 *
; File Version: 1.0                                 *
;                                            *
; Author: Ing. Alejandro Vicente Lugo Silva                    *
; Company: Acad. Computación ICE - ESIME Zac.                       *
;                                            *
;******************************************************************************
;                                           *
; Files required: P18F4550.INC                            *
;                                           *
;******************************************************************************
        LIST P=18F4550, F=INHX32         ;directive to define processor
        #include <P18F4550.INC>                  ;processor specific variable definitions
        ;#define LED PORTD,3
;******************************************************************************
;Configuration bits
        CONFIG PLLDIV = 5          ;(20 MHz crystal on PICDEM FS USB board)
    CONFIG CPUDIV = OSC1_PLL2
    CONFIG USBDIV = 2         ;Clock source from 96MHz PLL/2
    CONFIG FOSC       = HSPLL_HS
    CONFIG FCMEN = OFF
    CONFIG IESO   = OFF
    CONFIG PWRT       = OFF
    CONFIG BOR    = ON
    CONFIG BORV       =3
    CONFIG VREGEN = ON                   ;USB Voltage Regulator
    config WDT    = OFF
    config WDTPS = 32768
  config MCLRE = ON
  config LPT1OSC = OFF
  config PBADEN = OFF                     ;NOTE: modifying this value here won't have an effect
                                                             ;on the application. See the top of the
main() function.
                                                             ;By default the RB4 I/O pin is used to
detect if the
                                                             ;firmware should enter the bootloader or
the main application
                                                             ;firmware after a reset. In order to do
this, it needs to
                                                             ;configure RB4 as a digital input, thereby
changing it from
                                                             ;the reset value according to this
configuration bit.
  config CCP2MX = ON
  config STVREN = ON
  config LVP        = OFF
  config ICPRT = OFF         ; Dedicated In-Circuit Debug/Programming
  config XINST = OFF         ; Extended Instruction Set
  config CP0        = OFF
  config CP1        = OFF
  config CP2        = OFF
  config CP3        = OFF
  config CPB        = OFF
  config CPD        = OFF
  config WRT0        = OFF
  config WRT1        = OFF
  config WRT2        = OFF
  config WRT3        = OFF
  config WRTB        = OFF   ; Boot Block Write Protection
  config WRTC      = OFF
  config WRTD      = OFF
  config EBTR0 = OFF
  config EBTR1 = OFF
  config EBTR2 = OFF
  config EBTR3 = OFF
  config EBTRB = OFF
;******************************************************************************
;Variable definitions
; These variables are only needed if low priority interrupts are used.
; More variables may be needed to store other special function registers used
; in the interrupt routines.
;******************************************************************************
;Reset vector
; This code will start executing when a reset occurs.
RESET_VECTOR ORG                  010
                 goto      Main         ;go to start of main code
;******************************************************************************
;******************************************************************************
;Start of main program
; The main program code is placed here.
                ORG     0X1000
                MOVLW #0FH
                MOVWF ADCON1
                MOVLW #07H ;0FH POR SI NO JALA
                MOVWF TRISB
                CLRF TRISD
Main            ;go to start of main code
                MOVF PORTB,0
                ANDLW B'00000111'
                CALL TABLA
                MOVWF PORTD
                GOTO Main
;******************************************************************************
; Start of subrutines
;******************************************************************************
TABLA
                MULLW H'02'
                MOVF PRODL,W
                ADDWF PCL,F
                RETLW H'C0' ;DT 0C0H
                RETLW H'F9'
                RETLW H'A4'
                RETLW H'B0'
                RETLW H'99'
                RETLW H'92'
                RETLW H'82'
                RETLW H'F8'
;******************************************************************************
;End of program
        END
Tabla para identificar las diferencias entre los PIC´s.