You are on page 1of 8

DEBER DE MICROCONTROLADORES

NOMBRE: Andrés Chango Macas


CURSO: 6to “A” EAC
FECHA: 12/04/2010

REALIZAR LOS SIGUIENTES PROGRAMAS EN ENSAMBLADOR

1. Realizar la siguiente secuencia de luces: (se pueden mostrar en cualquier puerto),


cada salida deberá mostrarse 0,5 segundos, y en forma cíclica.

00000000
10000001
11000011
11100111
11111111
11100111
11000011
10000001
00000000

CÓDIGO
List P=16F877A
include "p16F877A.INC"

PRIMERO EQU 20H


SEGUNDO EQU 21H
TERCERO EQU 22H
BANKSEL TRISB ;BANCO1
MOVLW 00H
MOVWF TRISB ;PUERTOB COMO SALIDA
BANKSEL PORTB ;BANCO0
CLRF PORTB ;ENCERAR PUERTO B
INICIO:
MOVLW 00H
MOVWF PORTB
CALL RETARDO
MOVLW 81H
MOVWF PORTB
CALL RETARDO
MOVLW 0C3H
MOVWF PORTB
CALL RETARDO
MOVLW 0E7H
MOVWF PORTB
CALL RETARDO
MOVLW 0FFH
MOVWF PORTB
CALL RETARDO
MOVLW 0E7H
MOVWF PORTB
CALL RETARDO
MOVLW 0C3H
MOVWF PORTB
CALL RETARDO
MOVLW 081H
MOVWF PORTB
CALL RETARDO
MOVLW 00H
MOVWF PORTB
CALL RETARDO
GOTO INICIO
RETARDO:
MOVLW .10
MOVWF PRIMERO
VUELTA3:
MOVLW .50
MOVWF SEGUNDO
VUELTA2:
MOVLW .249
MOVWF TERCERO
VUELTA1:
NOP
DECFSZ TERCERO,1
GOTO VUELTA1
DECFSZ SEGUNDO,1
GOTO VUELTA2
DECFSZ PRIMERO,1
GOTO VUELTA3
RETURN
END
SIMULACIÓN

C1
U1
13 33
22pF
X1 14
OSC1/CLKIN
OSC2/CLKOUT
RB0/INT
RB1
34 1
35
C2 CRYSTAL
2
RA0/AN0
RB2
RB3/PGM
36 1
3 37
4
RA1/AN1
RA2/AN2/VREF-/CVREF
RB4
RB5
38 1
5 39
22pF
6
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RB6/PGC
RB7/PGD
40 0
7
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
15 0
8 16
9
RE0/AN5/RD
RE1/AN6/WR
RC1/T1OSI/CCP2
RC2/CCP1
17 1
10 18
R1
RE2/AN7/CS RC3/SCK/SCL
RC4/SDI/SDA
23 1
1 24
1k
MCLR/Vpp/THV RC5/SDO
RC6/TX/CK
25 1
26
RC7/RX/DT
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A

2. Realizar la secuencia de Fibonnaci, cuya salida se muestre secuencialmente en el PUERTO


D, los cambios deberán realizarse cada segundo. Hasta el último menor a 255
CÓDIGO
List P=16F877A
include "p16F877A.INC"
BANKSEL PORTD
CUENTA EQU 20H
PRIMERO EQU21H
SEGUNDO EQU 22H
TERCERO EQU 23H
AUX EQU 24H
BUX EQU 25H
RUX EQU 26H

BANKSEL TRISD ;BANCO1


MOVLW 00H
MOVWF TRISD ;PD COMO SALIDA
BANKSEL PORTD ;BANCO0
CLRF PORTD ;ENCERAR PUERTO D

INICIO:
MOVLW 00H
MOVWF AUX
MOVLW 01H
MOVWF BUX
MOVLW 00H
MOVWF RUX
MOVLW d'14'
MOVWF CUENTA
EMPEZAR:
MOVF AUX,0
MOVWF PORTD
CALL RETARDO
MOVF AUX,0
ADDWF BUX,0
MOVWF RUX
MOVF BUX,0
MOVWF AUX
MOVF RUX,0
MOVWF BUX
DECFSZ CUENTA,1
GOTO EMPEZAR
GOTO INICIO

RETARDO:
MOVLW .20
MOVWF PRIMERO
VUELTA3:
MOVLW .50
MOVWF SEGUNDO
VUELTA2:
MOVLW .249
MOVWF TERCERO
VUELTA1:
NOP
DECFSZ TERCERO,1
GOTO VUELTA1
DECFSZ SEGUNDO,1
GOTO VUELTA2
DECFSZ PRIMERO,1
GOTO VUELTA3
RETURN
END
SIMULACIÓN

C1
U1
13 33
OSC1/CLKIN RB0/INT
22pF 14 34
OSC2/CLKOUT RB1
X1 RB2
35
CRYSTAL 2 36
C2 3
RA0/AN0 RB3/PGM
37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
22pF 6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
R1 23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
1k 25
RC6/TX/CK
26
RC7/RX/DT
19
RD0/PSP0
RD1/PSP1
20 1
21
RD2/PSP2
RD3/PSP3
22 0
27
RD4/PSP4
RD5/PSP5
28 1
29
RD6/PSP6
RD7/PSP7
30 0
PIC16F877A 0
0
0
0

3. Dividir el valor ingresado por el puerto B por 8, el resultado solo mostrará la parte entera a
través del PUERTO C

CÓDIGO

List P=16F877A
include "P16F877A.INC"
DIVISOR EQU 20H
BANKSEL TRISB
MOVLW 0FFH
MOVWF TRISB
MOVLW 00H
MOVWF TRISC
BANKSEL PORTB
CLRF PORTB
CLRF PORTC
INICIO:
MOVF PORTB,0 ;LEE PUERTO B
ANDLW 0FFH
MOVWF DIVISOR
RRF DIVISOR,1 ;DIVISION PARA 2
RRF DIVISOR,1 ;DIVISION PARA 4
RRF DIVISOR,0 ;DIVISION PARA 8
ANDLW 1FH ;ENCERAR MAXIMO VALOR
MOVWF PORTC ;SACAR DATO
GOTO INICIO
END

SIMULACIÓN

1
1
1
1
1
1
0
0
C1
U1
22pF 13 33
OSC1/CLKIN RB0/INT
X1 14
OSC2/CLKOUT RB1
34
CRYSTAL 35
C2 2
RB2
36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
22pF 5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
8
RE0/AN5/RD
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
16 1
9 17
10
RE1/AN6/WR
RE2/AN7/CS
RC2/CCP1
RC3/SCK/SCL
18 1
R1 RC4/SDI/SDA
23
1
1 24
MCLR/Vpp/THV RC5/SDO
25
1k RC6/TX/CK
RC7/RX/DT
26 0
RD0/PSP0
19 0
20
RD1/PSP1
RD2/PSP2
21 0
22
RD3/PSP3
RD4/PSP4
27 0
28
RD5/PSP5
RD6/PSP6
29 0
30
RD7/PSP7
PIC16F877A

4. Encontrar el menor de 3 números de 4 bits, los cuales van a ser ingresados de acuerdo a la
siguiente tabla (en el Puerto B se requiere separar los 8 bits de entrada en dos grupos, 4
para cada número.)

X RA3 RA2 RA1RA0 (RA0 es el


LSB)
Y RB4 RB3 RB2 RB1 (RB1 es el
LSB)
Z RB7 RB6 RB5 RB4 (RB4 es el
LSB)

El resultado mostrarlo por el Puerto C. (Utilizar el bit Carry del registro STATUS para
determinar qué número es el menor)
CÓDIGO

List P=16F877A
include "p16F877A.INC"
DATOA EQU 20H
DATOB EQU 21H
DATOC EQU 22H
BANKSEL TRISA ;BANCO1
MOVLW 3FH
MOVWF TRISA ;A COMO ENTRADA
MOVLW 06H
MOVWF ADCON1 ;DIGITALES
MOVLW 0FFH
MOVWF TRISB ;B COMO ENTRADA
MOVLW 00H
MOVWF TRISC ;C SALIDA
BANKSEL PORTA
CLRF PORTA
CLRF PORTB
CLRF PORTC
INICIO:
MOVF PORTA,0 ;LEE PINES DEL PUERTOA
ANDLW b'00001111' ;4 BIT LSB
MOVWF DATOA ;GUARDAR DATO

MOVF PORTB,0
MOVWF DATOC ;GUARDAR DATO C
ANDLW b'00001111'
MOVWF DATOB
RRF DATOC,1 ;ROTAR DATOS
RRF DATOC,1 ;ROTAR DATOS
RRF DATOC,1
RRF DATOC,0 ;ROTAR DATOS
ANDLW b'00001111' ;ESCOGER LOS 4LSB
MOVWF DATOC ;GUARDAR DATO C
MOVF DATOA,0
SUBWF DATOB,0 ;DATOB-DATOA
BTFSS STATUS,0 ;COMPROPAR SI ES
NEGATIVA
GOTO BMENORA
GOTO AMENORB
BMENORA:
MOVF DATOC,0
SUBWF DATOB,0 ;DATOB-DATOC
BTFSS STATUS,0 ;COMPARAR SI ES
NEGATIVA
GOTO BMENOR
GOTO CMENOR
AMENORB:
MOVF DATOC,0
SUBWF DATOA,0 ;DATOA-DATOC
BTFSS STATUS,0 ;COMPARAR
GOTO AMENOR
GOTO CMENOR
AMENOR:
MOVF DATOA,0
MOVWF PORTC ;SALIDA DATOA
GOTO INICIO
BMENOR:
MOVF DATOB,0
MOVWF PORTC ;SALIDA DATOB
GOTO INICIO

CMENOR:
MOVF DATOC,0
MOVWF PORTC ;SALIDA DATOC
GOTO INICIO

END

SIMULACIÓN

X Y Z
0
0
1
0

1
0
0
0

0
0
0
1

C1

22pF
X1
CRYSTAL
U1
p0

p1

p2

p3

C2 13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
35
RB2
22pF 2 36
p0 RA0/AN0 RB3/PGM
3 37
p1 RA1/AN1 RB4
4 38
p2 RA2/AN2/VREF-/CVREF RB5
5 39
p3 RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
8
RE0/AN5/RD
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
16 1
9 17
10
RE1/AN6/WR
RE2/AN7/CS
RC2/CCP1
RC3/SCK/SCL
18 0 SALIDA
R1 RC4/SDI/SDA
23
0
1 24
MCLR/Vpp/THV RC5/SDO
25
1k RC6/TX/CK
RC7/RX/DT
26 0
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A

You might also like