Professional Documents
Culture Documents
1.
OBJETIVOS:
Realizar un programa que muestre una secuencia de 0 a 9, con un retardo
de 1 segundo en un display a 7 segmentos, usando tablas LOOK UP como
decodificador. Escriba el programa usando el softeare MPLAB y compile
usando MPLIB.exe. La simulacin se realiza con PROTEUS. Para la
grabacin usar el software PICKIT 2.
2. MATERIALES:
-
Una PC.
Un mdulo PIC16F84A
Un mdulo grabador de PIC.
Hardware para simulacin de PIC.
Fuente de alimentacin.
Software MPLAB, PROTEUS.
3. PARTE EXPERIMENTAL:
Se requiere mostrar la siguiente secuencia en un Display a 7 segmentos
(ctodo comn).
0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5.
Display 7 segmentos:
list P=PIC16F84A
INCLUDE <P16F84A.INC>
INCLUDE <MACRO.INC>
CBLOCK 0X0C
CONTA
REG1
REG2
REG3
ENDC
ORG 0X00
BANK1
CLRF TRISB
BANK0
CLRF PORTB
OTRO CLRF CONTA
OTRO1 MOVF CONTA,W
CALL TABLA
MOVWF PORTB
CALL DELAY_1_5
INCF CONTA,F
MOVLW .10
XORWF CONTA,W
BTFSS STATUS,Z
GOTO OTRO1
GOTO OTRO
DELAY_1_5
R1
330
R3
330
R4
330
U1
R2
10k
16
15
4
OSC1/CLKIN
OSC2/CLKOUT
MCLR
RA0
RA1
RA2
RA3
RA4/T0CKI
RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6
RB7
PIC16F84A
17
18
1
2
3
R5
330
6
7
8
9
10
11
12
13
R6
330
R7
330
R8
330
R3
330
R4
330
U1
R2
10k
16
15
4
OSC1/CLKIN
OSC2/CLKOUT
MCLR
RA0
RA1
RA2
RA3
RA4/T0CKI
RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6
RB7
PIC16F84A
17
18
1
2
3
R5
330
6
7
8
9
10
11
12
13
R6
330
R7
330
R8
330
END
R1
330
R3
330
R4
330
U1
R2
10k
16
15
4
OSC1/CLKIN
OSC2/CLKOUT
MCLR
RA0
RA1
RA2
RA3
RA4/T0CKI
RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6
RB7
PIC16F84A
17
18
1
2
3
R5
330
6
7
8
9
10
11
12
13
R6
330
R7
330
R8
330
Cuestionario
1.- Como modificara el diseo anterior para visualizar los datos ingresados
por el puerto A (RA3:RA0) presente el circuito y el diagrama de flujo y el
programa.
Diagrama de Flujos
INICIO
DECLARACIN DE
VARIABLES:
MACRO.INC
PUERTO A COMO
SALIDA
PUERTO A < - 0
DIGITO < - 0
W < - DIGITO
MOSTRAR POR
PUERTO A (DISPLAY EXADECIMAL)
RETARDO: 1.5 SEG
INCREMENTA
DIGITO
DIGITO? 10?
Programa
list P=PIC16F84A
INCLUDE <P16F84A.INC>
ORG 0
INICIO
BSF STATUS,RP0
CLRF PORTB
MOVLW B'00001111'
MOVWF PORTA
BCF STATUS,RP0
Principal
MOVF PORTA,W
ANDLW B'00001111'
CALL TABLA
Display
END
R1
330
R3
R10
330
330
R11
R4
330
330
R12
330
R13
U1
R2
10k
16
15
4
OSC1/CLKIN
OSC2/CLKOUT
MCLR
330
RA0
RA1
RA2
RA3
RA4/T0CKI
RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6
RB7
PIC16F84A
17
18
1
2
3
R5
330
6
7
8
9
10
11
12
13
R6
330
R7
330
R8
330
INCLUDE <P16F84A.INC>
INCLUDE <MACRO.INC>
CBLOCK 0X0C
CONTA
REG1
REG2
REG3
ENDC
ORG 0X00
BANK1
CLRF TRISB
BANK0
CLRF PORTB
OTRO CLRF CONTA
OTRO1
BTFSS PORTA,0
GOTO INCREMENTAR
GOTO DECREMENTAR
DECREMENTAR
BTFSS PORTA,1
GOTO DECREMENTAR
MOVF CONTA,W
CALL TABLA
MOVWF PORTB
CALL DELAY_1_5
DECF CONTA,F
CALL DELAY_1_5
MOVLW
XORWF
BTFSS
GOTO
GOTO
.16
CONTA,W
STATUS,Z
OTRO1
OTRO
DELAY_1_5
MOVLW
.50
MOVWF
REG1
L3
MOVLW
.50
MOVWF REG2
L2
MOVLW .50
MOVWF REG3
L1
DECFSZ REG3,F
GOTO L1
DECFSZ REG2,F
GOTO L2
DECFSZ REG1,F
GOTO
L3
RETURN
TABLA ADDWF PCL,F
RETLW 0X3F
RETLW 0X06
RETLW 0X5B
RETLW 0X4F
RETLW 0X66
RETLW 0X6D
END
R1
330
R10
R3
10k
330
R9
10k
R4
330
U1
R2
10k
16
15
4
OSC1/CLKIN
OSC2/CLKOUT
MCLR
RA0
RA1
RA2
RA3
RA4/T0CKI
RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6
RB7
PIC16F84A
17
18
1
2
3
R5
330
6
7
8
9
10
11
12
13
R6
330
R7
330
R8
330
CODE ASSEMBLY:
---------------------------------------------------------------------------------------------------------------------------CONTADOR DE 0-999
---------------------------------------------------------------------------------------------------------------------------1. ; **** PIC 16F8$A - CONTADOR DE 0-999 ****
2. list p=16F84A
3. #include P16F84A.inc
4. __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
5. ;**** Definicion de variables ****
6. Unidad
equ
0x0C
7. Decena
equ
8. Centena equ
0x0D
0x0E
9. Contador1
demora.-
equ
0x0F
; Registro utilizado en
10. Contador2
demora.-
equ
0x10
; Registro utilizado en
0x11
12.
13. MuestroU equ
16.
17. ;**** Inicio del Micro ****
18. Reset
19. org
0x00
20. goto
Inicio
21.
22.
23. ;**** Tabla de conversion BCD a 7 Segmentos ****
24. ; Se coloca al inicio para asegurar ubicacion en Pagina.25. org
0x05
26. BCD7SEG
comun
27. addwf PCL,1
28. DT 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0xFF, 0x6F
29.
STATUS,RP0
34. clrf
TRISA
35. clrf
TRISB
; PORTB
36. bcf
STATUS,RP0
37. clrf
PORTA
38. clrf
Unidad
39. clrf
Decena
40. clrf
Centena
41. goto
Actualizo_Display
como salida.-
Unidad,1
; Incremeto Unidad.
47. btfss
STATUS,Z
48. goto
Actualizo_Display
49. clrf
Unidad
; Si, reseteo.-
50. incf
Decena,1
; Incremento Decena.-
; no es 10
53. btfss
STATUS,Z
54. goto
Actualizo_Display
55. clrf
Decena
; Si, reseteo.-
56. incf
Centena,1
; Incremento Centena.-
;
; No es 10.-
; Si es 10 Reseteo.-
STATUS,Z
60. goto
Actualizo_Display
61. clrf
Centena
; No es 10.-
; Si, reseto
; Cargo Contador = 20
66.
67. Refresco
68. movfw Unidad
Unidad.-
69. call
BCD7SEG
70. bcf
PORTA,MuestroC
entiende al mirar rutina.-
72. bsf
PORTA,MuestroU
73. call
Demora_5ms
BCD7SEG
76. bcf
PORTA,MuestroU
78. bsf
PORTA,MuestroD
79. call
Demora_5ms
81. call
BCD7SEG
82. bcf
PORTA,MuestroD
84. bsf
PORTA,MuestroC
85. call
Demora_5ms
; Pregunto si ya se ha repetido 10
87. goto
; No, repito.-
88. return
89.
90. end
Refresco
; Regresa de la subrutina.-
Actualizo_Display
movlw d'20' ; Cargo Contador = 20
movwf Contador ; Para repeticiones de visualizacion del mismo valor
; durante 150 ms.Refresco
movfw Unidad ; Obtengo codigo de 7 Segmentos para Unidad.call BCD7SEG ;
bcf PORTA,MuestroC ; Apago Display de Centena, Se entiende al mirar rutina.movwf PORTB ; Cargo unidad en PORTB.bsf PORTA,MuestroU ; Enciendo Display de Unidad.call Demora_5ms
movfw Decena ; Obtengo codigo 7 Segmentos para Decena.call BCD7SEG
bcf PORTA,MuestroU ; Apago Display de Unidad.movwf PORTB ; Cargo PORTB con Decena.bsf PORTA,MuestroD ; Enciendo Display de Decena.call Demora_5ms
movfw Centena ; Obtengo codigo de 7 Segmentos para Centena.call BCD7SEG
bcf PORTA,MuestroD ; Apago Display de Decena.movwf PORTB ; Cargo PORTB con Centena.bsf PORTA,MuestroC ; Enciendo Display Centena.call Demora_5ms
decfsz Contador,1 ; Pregunto si ya se ha repetido 10 veces el ciclo?
goto Refresco ; No, repito.goto Bucle ; Si, actualizo cuenta.;**** Demora ****
Demora_5ms
end
SISTEMAS DIGITALES
LABORATORIO 6
ALUMNOS:
2012