PIC18 LaurTec Library  3.1
Open Source C Library for PIC18 Microcontrollers based on C18 - XC8 Compilers
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
delay.c
Go to the documentation of this file.
1 /*******************************************************************************
2 
3 Author : Mauro Laurenti
4 Version : 1.1
5 
6 Created on Date : 04/09/2006
7 Last update : 25/01/2013
8 
9 CopyRight 2006-2013 all rights are reserved
10 
11 ********************************************************
12 SOFTWARE LICENSE AGREEMENT
13 ********************************************************
14 
15 The usage of the supplied software imply the acceptance of the following license.
16 
17 The software supplied herewith by Mauro Laurenti (the Author) is intended for
18 use solely and exclusively on Microchip PIC Microcontroller (registered mark).
19 The software is owned by the Author, and is protected under applicable
20 copyright laws. All rights are reserved.
21 Any use in violation of the foregoing restrictions may subject the
22 user to criminal sanctions under applicable laws, as well as to civil liability
23 for the breach of the terms and conditions of this license.
24 Commercial use is forbidden without a written acknowledgment with the Author.
25 Personal or educational use is allowed if the application containing the
26 following software doesn't aim to commercial use or monetary earning of any kind.
27 
28 THIS SOFTWARE IS PROVIDED IN AN "AS IS" CONDITION. NO WARRANTIES,
29 WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
30 TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
31 PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE AUTHOR SHALL NOT,
32 IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
33 CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
34 
35 *******************************************************************************/
36 
37 
38 #ifdef __XC8
39 #include <xc.h>
40 #endif
41 
42 #include <delay.h>
43 
44 unsigned char delay_quartz_frequency_value = 20;
45 
46 
47 //************************************************************
48 // delay_ms function implementation
49 //************************************************************
50 
51 
52 
53 void delay_ms (int value_ms) {
54 
55  unsigned int reference = 0;
56  unsigned int mainDelay;
57  unsigned int subDelay;
58 
59  reference = value_ms * delay_quartz_frequency_value;
60 
61  for (mainDelay = 0; mainDelay < reference; mainDelay++) {
62 
63  #ifndef __XC8
64  for (subDelay = 0; subDelay < 6; subDelay++);
65  #endif
66 
67  #ifdef __XC8
68  #ifdef _PIC18
69  for (subDelay = 0; subDelay < 9; subDelay++);
70  #else
71  for (subDelay = 0; subDelay < 6; subDelay++);
72  #endif
73  #endif
74  }
75 }
76 
77 //************************************************************
78 // delay_s function implementation
79 //************************************************************
80 
81 void delay_s (unsigned char value_s) {
82 
83  unsigned char repeat_loop;
84 
85  for (repeat_loop = 0; repeat_loop < value_s; repeat_loop++)
86  delay_ms (1000);
87 }
88 
89 
90 //************************************************************
91 // setQuartz function implementation
92 //************************************************************
93 
94 void setQuartz (unsigned char frequency) {
95 
96  delay_quartz_frequency_value = frequency;
97 
98 }
99