¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
Laboratorio de Microcomputadoras - Práctica 04
1. Laboratorio de Microcomputadoras
Facultad de
Ingeniería
Práctica 04
Ortiz Gómez Cristian
Teoría: Grupo 1
Sánchez Segovia Diego Armando
Teoría: Grupo 3
Puertos Paralelos III
(Control de Motores de CD)
2. Puertos paralelos III (Control de motores de CD)
Objetivo
• Emplear los puertos paralelos que contiene un microcontrolador, para controlar la operación de dos motores de
corriente directa.
Desarrollo
Utilizando el circuito de potencia de motores de corriente directa y el sistema de desarrollo del microcontrolador PIC,
realizar los programas solicitados.
1. De acuerdo a la asignación de la tarjeta del driver de motores realizar un programa, el cual permita controlar el
funcionamiento y sentido de giro de cada uno de ellos por separado, a través del puerto paralelo A, el puerto B
deberá mandar las señales al driver, como se indica en la tabla 4.1.
1
PuertosparalelosIII(ControldemotoresdeCD)
processor 16f877
include <p16f877.inc>
; Variables para el DELAY
valor1 equ h'21'
valor2 equ h'22'
valor3 equ h'23'
cte1 equ 10h
cte2 equ 50h
cte3 equ 60h
; Variables a utilizar para comparar las entradas a través del puerto A
v0 equ h'24'
v1 equ h'25'
v2 equ h'26'
v3 equ h'27'
v4 equ h'28'
c0 equ 0h
c1 equ 2h
c2 equ 4h
c3 equ 8h
c4 equ 10h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Entrada binaria
Puerto A
Motor Sentido de giro
Puerto BIzquierdo Derecho
00 0000 OFF OFF Paro
00 0010 OFF ON Horario
00 0100 OFF ON Antihorario
00 1000 ON OFF Horario
01 0000 ON OFF Antihorario
Tabla 4.1 Control de salidas de los motores
3. 2
PuertosparalelosIII(ControldemotoresdeCD)
org 0
goto BEGIN
org 5
BEGIN
clrf PORTA
clrf PORTB
bsf STATUS, RP0 ; Cambia la banco 1
bcf STATUS, RP1
clrf TRISB ; Configura puerto B como salida
movlw 06h ; Configura puertos A y E como digitales
movwf ADCON1
movlw 3Fh ; Configura el puerto A como entrada
movwf TRISA
bcf STATUS, RP0 ; Regresa al banco 0
LOOP
movlw c0
movwf v0
movfw PORTA ; Mueve lo que hay en PORTA a W
xorwf v0, W ; Verifica si la entrada es 00 0000
btfsc STATUS, Z ; Z == 0?
goto STOP ; NO, entonces v0 == W
; SI, entonces v0 != W
movlw c1
movwf v1
movfw PORTA
xorwf v1, W ; Verifica si la entrada es 00 0010
btfsc STATUS, Z
goto R_CLOCKWISE
movlw c2
movwf v2
movfw PORTA
xorwf v2, W ; Verifica si la entrada es 00 0100
btfsc STATUS, Z
goto R_COUNTERCLOCKWISE
movlw c3
movwf v3
movfw PORTA
xorwf v3, W ; Verifica si la entrada es 00 1000
btfsc STATUS, Z
goto L_CLOCKWISE
movlw c4
movwf v4 ; Verifica si la entrada es 01 0000
movfw PORTA
xorwf v4, W
btfsc STATUS, Z
goto L_COUNTERCLOCKWISE
STOP
movlw 0 ; MOTOR L = OFF / R = OFF
movwf PORTB
goto LOOP
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
4. 3
PuertosparalelosIII(ControldemotoresdeCD)
R_CLOCKWISE
movlw b'1100' ; MOTOR L = OFF / R = ON DIR_R = 1
movwf PORTB
call DELAY
goto LOOP
R_COUNTERCLOCKWISE
movlw b'1000' ; MOTOR L = OFF / R = ON DIR_R = 0
movwf PORTB
call DELAY
goto LOOP
L_CLOCKWISE
movlw b'0011' ; MOTOR L = ON / R = OFF DIR_L = 1
movwf PORTB
call DELAY
goto LOOP
L_COUNTERCLOCKWISE
movlw b'0010' ; MOTOR L = ON / R = OFF DIR_L = 0
movwf PORTB
call DELAY
goto LOOP
DELAY ; Rutina que genera un RETARDO
movlw cte1
movwf valor1
THREE
movwf cte2
movwf valor2
TWO
movlw cte3
movwf valor3
ONE
decfsz valor3
goto ONE
decfsz valor2
goto TWO
decfsz valor1
goto THREE
return
END
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
2. Considerando la información y los circuitos del ejercicio anterior, realizar un programa que de acuerdo a una señal
de control ingresada por el puerto A, se genere la acción indicada en la tabla 4.2.
DATO
Puerto A
Acción
Motor M1 Motor M2
$00 PARO PARO
$01 DER DER
$02 IZQ IZQ
$03 DER IZQ
$04 IZQ DER
Tabla4.2
5. 4
PuertosparalelosIII(ControldemotoresdeCD)
processor 16f877
include <p16f877.inc>
; Variables para el DELAY
valor1 equ h'21'
valor2 equ h'22'
valor3 equ h'23'
cte1 equ 10h
cte2 equ 50h
cte3 equ 60h
; Variables a utilizar para comparar las entradas a través del puerto A
v0 equ h'24'
v1 equ h'25'
v2 equ h'26'
v3 equ h'27'
v4 equ h'28'
c0 equ 0h
c1 equ 1h
c2 equ 2h
c3 equ 3h
c4 equ 4h
org 0
goto BEGIN
org 5
BEGIN
clrf PORTA
clrf PORTB
bsf STATUS, RP0 ; Cambia la banco 1
bcf STATUS, RP1
clrf TRISB ; Configura puerto B como salida
movlw 06h ; Configura puertos A y E como digitales
movwf ADCON1
movlw 3Fh ; Configura el puerto A como entrada
movwf TRISA
bcf STATUS, RP0 ; Regresa al banco 0
LOOP
movlw c0
movwf v0
movfw PORTA ; Mueve lo que hay en PORTA a W
xorwf v0, W ; Verifica si la entrada es $00
btfsc STATUS, Z ; Z == 0?
goto STOP ; NO, entonces v0 == W
; SI, entonces v0 != W
movlw c1
movwf v1
movfw PORTA
xorwf v1, W ; Verifica si la entrada es $01
btfsc STATUS, Z
goto LEFT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
6. 5
PuertosparalelosIII(ControldemotoresdeCD)
movlw c1
movwf v1
movfw PORTA
xorwf v1, W ; Verifica si la entrada es $02
btfsc STATUS, Z
goto RIGHT
movlw c1
movwf v1
movfw PORTA
xorwf v1, W ; Verifica si la entrada es $03
btfsc STATUS, Z
goto FORWARD
movlw c1
movwf v1
movfw PORTA
xorwf v1, W ; Verifica si la entrada es $04
btfsc STATUS, Z
goto BACKWARD
STOP
movlw 0 ; M1 = PARO / M2 = PARO
movwf PORTB
call DELAY
goto LOOP
LEFT
movlw b'1010' ; M1 = DER / M2 = DER
movwf PORTB
call DELAY
goto LOOP
RIGHT
movlw b'1111' ; M1 = IZQ / M2 = IZQ
movwf PORTB
call DELAY
goto LOOP
FORWARD
movlw b'1011' ; M1 = DER / M2 = IZQ
movwf PORTB
call DELAY
goto LOOP
BACKWARD
movlw b'1110' ; M1 = IZQ / M2 = DER
movwf PORTB
call DELAY
goto LOOP
DELAY
.
.
.
END
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
123