Beruflich Dokumente
Kultur Dokumente
00000000
10000001
11000011
11100111
11111111
11100111
11000011
10000001
00000000
CÓDIGO
List P=16F877A
include "p16F877A.INC"
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
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.)
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