Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 9

;Ejercicio4.

s multiplicar el valor introducido mediante 3 interuptores conectado a las lineas RA1-RA3


del puerto A

;con el introducido por 3 interuptores conectados a las lineas RB0-RB2 DEL PUERTO B

;EL RESULTADO DE ESA MULTIPLICATION DEBERA VISUALISARSE EN LAS LINEAS RB3-RB7 DEL PURTO
B

PROCESSOR 16F877A ; INDICA EL MODELO DE PIC QUE SE USA ES UNA DIRECTIVA DEL
ENSAMBLADOR

#include <xc.inc> ; DIRECTIVA DEL ENSAMBLADOR QUE INCLUYE ARCHIVO DE CABECERA QUE
CONTIENE LOS REGISTROS DE FUNCION ESPECIALESDE LOS DIFERENTES

; CONFIG

CONFIG FOSC = HS ; Oscillator Selection bits (HS oscillator)

CONFIG WDTE = OFF ; Watchdog Timer Enable bit (WDT disabled)

CONFIG PWRTE = OFF ; Power-up Timer Enable bit (PWRT disabled)

CONFIG BOREN = ON ; Brown-out Reset Enable bit (BOR enabled)

CONFIG LVP = OFF ; Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit
(RB3 is digital I/O, HV on MCLR must be used for programming)

CONFIG CPD = OFF ; Data EEPROM Memory Code Protection bit (Data EEPROM code
protection off)

CONFIG WRT = OFF ; Flash Program Memory Write Enable bits (Write protection off; all
program memory may be written to by EECON control)

CONFIG CP = OFF ; Flash Program Memory Code Protection bit (Code protection off)

RADIX HEX ; los valores se representan en hexadecimales

PSECT udata ;DIRECTIVA DE ENSAMBLADOR QUE DEFINE LA SECCION DE MEMORIA A UTILIZAR


CONSIDERANDO

;VARIABLES EN CUALQUIER LOCALIDAD DE LA MEMORIA RAM CON LA EXCEPTION DE LOS


ESPACIOS

;COMPARTIDOS (UNBANKED MEMORY)

VAR1 EQU 0X20

VAR2 EQU 0X21

RESULTADO EQU 0X22


PSECT code, delta=2, abs ;DIRECTIVA DE ENSAMBLADOR QUE DEFINE LA SECCION DE MEMORIA
PARA LA ESCRITURA DE CODIGO EN MEMORIA DE PROGRAMA

ORG 0X0000 ; comando que indica al ensamblador direccion en la memoria donde se situara
la siguiente

; instruccion

; CONFIGURACION DE PUERTOS DIGITALES

bsf STATUS,5 ;PONE A 1 EL BIT 5 DE ESTADO PARA DIRECCIONAR BANCO 1

MOVLW 0X06 ;CONFIGURA TODAS LAS TERMINALES DEL PUERTO A

MOVWF ADCON1 ;COMO DIGITALES

MOVLW 0XFF ;CONFIGURA TODAS LAS TERMINALES DEL PUERTO A

MOVWF TRISA ;COMO ENTRADAS DIGITALES

MOVLW 00000111B

MOVWF TRISB ;COMO SALIDAS DIGITALES

BCF STATUS,5 ;PONE A 0 EL BIT 5 DE ESTADO PASANDO A BANCO 0

CICLO:

CLRF PORTA ;SE INICIALIZAN LOS VALORES DEL PUERTO A

CLRF PORTB ;SE INICIALIZAN LOS VALORES DEL PUERTO B

CLRF VAR1

CLRF VAR2

CLRF RESULTADO

MOVF PORTA,0 ;LEE EL DATO EN EL PUERTO B Y LO GUARDA EN EL REGISTRO DE TRABAJO W

MOVWF VAR1

RRF VAR1,1

MOVF PORTB,0

MOVWF VAR2

MOVLW 0

;PROGRAMA PRINCIPAL
INICIO:

ADDWF VAR1,0

MOVWF RESULTADO

DECFSZ VAR2,1

GOTO INICIO ;SE REINICIA EL CICLO

RLF RESULTADO,1

RLF RESULTADO,1

RLF RESULTADO,1

MOVF RESULTADO,0

movwf PORTB

goto CICLO

end
SEGUNDO problema.s Programa que lee el numero binario

;introducido mediante 3 interuptores conectados a la

; puerta PA (RA0,RA1,RA2), luego suma 2 unidades a ese

;valor y visualiza el resultado mediante 4 diodos led

;conectados a la puerta PB ; (RB0, RB2, RB3).

PROCESSOR 16F877A

#include <xc.inc>

; CONFIG

CONFIG FOSC = HS ; Oscillator Selection bits (HS oscillator)

CONFIG WDTE = OFF ; Watchdog Timer Enable bit (WDT disabled)

CONFIG PWRTE = OFF ; Power-up Timer Enable bit (PWRT disabled)

CONFIG BOREN = ON ; Brown-out Reset Enable bit (BOR enabled)

CONFIG LVP = OFF ; Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit
(RB3 is digital I/O, HV on MCLR must be used for programming)

CONFIG CPD = OFF ; Data EEPROM Memory Code Protection bit (Data EEPROM code
protection off)

CONFIG WRT = OFF ; Flash Program Memory Write Enable bits (Write protection off; all
program memory may be written to by EECON control)

CONFIG CP = OFF ; Flash Program Memory Code Protection bit (Code protection off)

RADIX HEX ; los valores se representan en hexadecimales

PSECT udata

PSECT code, delta=2, abs

ORG 0X0000 ; comando que indica al ensamblador

; direccion en la memoria donde se situara la siguiente instruccion

bsf STATUS,5

bcf STATUS,6 ; pone A o el bit 6 del registro status para direccionar la pagina 1 de la

; memoria de datos
movlw 0x06 ;configura todas las terminales de puerto A

movwf ADCON1 ; como digitales

movlw 0xff ; configura todas las terminales de puerto A

movwf TRISA ; como entrada digital

movlw 0x00 ; configura todas las terminales del puerto B

movwf TRISB ; como salidadas digitales

bcf STATUS,5 ; regresa al banco 0

clrf PORTA ; se inician los valores del puerto A

clrf PORTB ; se inician los valores del puerto B

inicio:

movf PORTA,0

addlw 8

movwf PORTB

goto inicio

END
Libry included

PROCESSOR 16F877A

#include <xc.inc> ;ESTE

; Configuration words

; CONFIG

CONFIG FOSC = HS ; Oscillator Selection bits (HS oscillator)

CONFIG WDTE = OFF ; Watchdog Timer Enable bit (WDT disabled)

CONFIG PWRTE = OFF ; Power-up Timer Enable bit (PWRT disabled)

CONFIG BOREN = ON ; Brown-out Reset Enable bit (BOR enabled)

CONFIG LVP = OFF ; Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit
(RB3 is digital I/O, HV on MCLR must be used for programming)

CONFIG CPD = OFF ; Data EEPROM Memory Code Protection bit (Data EEPROM code
protection off)

CONFIG WRT = OFF ; Flash Program Memory Write Enable bits (Write protection off; all
program memory may be written to by EECON control)

CONFIG CP = OFF ; Flash Program Memory Code Protection bit (Code protection off)

PSECT udata

OPERANDO1 EQU 0x20 ; define la posicion del operador 1

OPERANDO2 EQU 0x21 ; OPERADOR 2

OPERANDO3 EQU 0x22 ; OPERADOR 3

RESULTADO EQU 0x23 ; RESULTADO

PSECT code, delta=2, abs

ORG 0x0000 ; comando que indica al esamblador

;la dirrecion de la memoria de programa

; donde situa la siguiente intrucion


movlw 05 ; 5-> W (primera instruccion)

movwf OPERANDO1 ; W -> operando 1

movlw 02 ; 2 -> W

movwf OPERANDO2 ; W -> operando 2

movlw 04 ; 4 -> W

movwf OPERANDO3 ; W -> operando 3

movf OPERANDO1,0 ; operando 1 -> W

addwf OPERANDO2,1 ; W + operando 2 -> operando 2

movf OPERANDO2,0 ; operando 2 -> W

addwf OPERANDO3,0 ; W + operando 2 -> W

movwf RESULTADO ; W -> resultando

END
Examen, ejercicio 9. Se colocan tres interruptores en las lineas RB2-RB4

;del puerto B del microcontrolador PIC16f877a y cinco diodos led

;en las lineas RC1-RC5 del puerto C.

;Se trata de diseñar un programa que comienza leyendo el número binario de 3 bits

;introducido por los interruptores, luego se suma 10 unidades a este valor,

;visualizando en los diodos led la salida correspondiente.

#include "p16f877a.inc"

RADIX HEX ; LOS VALORES SE REPRESENTARAN EN HEXADECIMAL

ORG 0 ; COMANDO QUE INCDICA AL ENSAMBLADOR

; LA DIRECCION DE L AMEMORIA DONDE SE SITUARA

;LA SIGUIENTE INSTRUCCION

bsf STATUS,5 ; PONE A 1 EL BIT 5 DEL REGISTRO STATUS PARA DIRECCIONAR LA PAGINA

;1 DE LA MEMORIA DE DATOS

bcf STATUS,6 ; PONE A 0 EL BIT 6 DEL REGUSTRO STATUS PARA DIRECCIONAR LA PAGINA1

; DE LA MEMORIA DE DATOS

movlw 0xff ; configura todas las terminales del puerto B

movwf TRISB ; COMO SALIDAS DIGITALES

movlw 0x00 ;configura todas las terminales del puerto C

movwf TRISC ; COMO SALIDAS DIGITALES


bcf STATUS,5 ; REGRESA AL BANCO 0

clrf PORTB ; se inicializan los valores del puerto B

clrf PORTC ; SE INICIALIZAN LOS VALORS DEL PUERTO C

inicio movf PORTB,0 ; LEE EL DATO EN EL PUERTO C Y LO GUARDA EN EL REGISTRO DE TRABSJO W

addlw 10 ; suma el valor de 10 al registro de trabajo W y el resultado se almacena el


w

movwf PORTC ; el valor almacenado en el registro de rabajo w se envia al puerto C

goto inicio ; se reinicia el ciclo

END ; directriva de fin de programa

También podría gustarte