-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtemporizadores.c
134 lines (120 loc) · 3.77 KB
/
temporizadores.c
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
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
* File: temprizadores.h
* Author: Valery Ramirez
* Comments: Encabezado para la configuración de los temporizadores.
* Revision history: N/A
*/
#include "temporizadores.h"
#include "sistema.h"
/* Implementación de las funciones para la configuración de los temporizadores*/
void Confi_Timer1(unsigned int tempo1, unsigned int conf1)/* Función para la
* configuración del
* timer 1. */
{
Sec_Osc(SOSCENH);
T1CON = 0;
TMR1 = 0;
T1CON = conf1;
PR1 = tempo1; /* No se inicia el timer 1 en esta
* ción para dejar al usuario decidir
* cuando encenderlo. */
}
void Inicia_Timer1(void) /* Inicia el timer 1. */
{
T1CONbits.TON = 1;
}
void Detiene_Timer1(void) /* Detiene el timer 1. */
{
T1CONbits.TON = 0;
}
void Confi_Timer2(unsigned int tempo2, unsigned int confi2)/* Función para
* configurar el funcionamiento del
* timer 2. */
{
T2CON = 0;
TMR2 = 0;
T2CON = confi2;
PR2 = tempo2*0x000a;
}
void Confi_Timer23(void)
{
T2CON = 0;
T3CON = 0;
TMR2 = 0;
TMR3 = 0;
T2CON = 0b0000000000001000;
}
void retardo_us(unsigned long ret2) /* Función para generar retardos en us*/
{ /* máximo 1000us. */
if(ret2 > 1000)
{
ret2 = 1000;
}
Confi_Timer23();
T2CON = 0b0000000000001000;
ret2 *= 0x000a;
PR2 = (unsigned int) ret2; /* Valores a precargar en PR2 a PR3 */
ret2 >>= 16; /* para generar retardos en us. */
PR3 = (unsigned int) ret2;
Inicia_Timer2();
while(T2CONbits.TON == 1)
{
asm("nop");
}
Detiene_Timer2();
return;
}
void retardo_ms(unsigned long ret2) /* Función para generar retardos en ms*/
{ /* máximo 1000us. */
if(ret2 > 1000)
{
ret2 = 1000;
}
Confi_Timer23();
ret2 *= 0x2710;
PR2 = (unsigned int) ret2; /* Valores a precargar en PR2 a PR3 */
ret2 >>= 16; /* para generar retardos en us. */
PR3 = (unsigned int) ret2;
Inicia_Timer2();
while(T2CONbits.TON == 1)
{
asm("nop");
}
Detiene_Timer2();
return;
}
void retardo_s(unsigned long ret2) /* Función para generar retardos en ms*/
{ /* máximo 1000us. */
if(ret2 > 1000)
{
ret2 = 1000;
}
Confi_Timer23();
ret2 *= 0x00989680;
PR2 = (unsigned int) ret2; /* Valores a precargar en PR2 a PR3 */
ret2 >>= 16; /* para generar retardos en us. */
PR3 = (unsigned int) ret2;
Inicia_Timer2();
while(T2CONbits.TON == 1)
{
asm("nop");
}
Detiene_Timer2();
return;
}
void Inicia_Timer2(void) /* Función para iniciar el timer 2. */
{
T2CONbits.TON = 1;
}
void Detiene_Timer2(void) /* Función para detener el timer 2. */
{
T2CONbits.TON = 0;
}
void Inicia_Timer232(void) /* Funcion para iniciar el timer 23 de*/
{ /* 32 bits. */
T2CONbits.T32 = 1;
}
void Detiene_Timer232(void) /* Funcion para iniciar el timer 23 de*/
{ /* 32 bits. */
T2CONbits.T32 = 0;
}