_07 clase micro programación uc empleando c
TRANSCRIPT
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
1/71
Introduccin
Lenguaje C desarrollado por Bell Labs(Lucent Technologies) en 1979 por D. Ritchie
Lenguaje estructurado Portatil De alto nivel A pesar de ser un lenguaje de alto nivel se
puede acceder a el hardware de bajo nivel
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
2/71
Definicin - Programa
Est constituido por un conjunto deinstrucciones que se ejecutan generalmentede modo secuencial.
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
3/71
Caracteristicas de uso de
lenguajes de alto nivel Los lenguajes de alto nivelson ms o
menos comprensibles para el usuario,pero no para el procesador.
Los programas de alto nivel deben sertraducidos para que el procesador lospueda entender se usa un compilador.
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
4/71
Niveles de Programacin
Lenguaje CAlto nivelLenguaje CAlto nivel
Lenguaje
EnsambladorBajo nivel
CdigoObjetoBinario
Compilador
Ensamblador
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
5/71
Estructura de los Programas en
lenguaje C Directivas al preprocesador.
Declaracin de variables, funciones, tipos,Globales.
Definicin de Variables Globales. Funciones.
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
6/71
Directivas al preprocesador.
Son comandos especificos al compilador Por ejemplo: #include cargar los prototipos de la
funciones standard de entrada salida. #device pic16f877a definir el
microcontrolador a usar.
#include cargar las definicionesparticulares del micro 17F877a
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
7/71
Tipos de varibles o datos
int1 Define numeros de 1 bit int8 Define numeros de 8 bits int16 Define numeros de 16 bits int32 Define numeros de 32 bits char Define caracter de 8 bits float Define numeros de 32 bits punto
flotante short Por defecto igual a int1 Int Por defecto igual a int8 long Por defecto igual a int16
void ningn tipo especifico.
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
8/71
Tipos de varibles o datos
Int1 0 -- 1 Int8 0 -- 255 Int16 0 --65536 Int32 0 -- 4294967296 char 0 -- 255 float -3.4x10-38 3.4x1038
Signed long -32768 -- 32767
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
9/71
Nombre de las variables
(Identificadores) Una variablese forma con una secuencia deletras (minsculas de la a a la z;
maysculas de laA a la Z; y dgitos del 0al
9). El carcterunderscore (_) (piso) se
considera como una letra ms.
Un identificador no puede contener espaciosen blanco, ni otros caracteres como (*,;.:-+,etc.).
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
10/71
Nombre de las variables
(Identificadores) El primer carcter de un identificador debe
ser siempre una letra o un (_), es decir, no puede ser un dgito. Se hace distincin entre letras maysculas y
minsculas. As, Masa es considerado como un identificador distinto de masa y de
MASA. ANSI C permite definir identificadores de
hasta 31 caracteres de longitud.
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
11/71
Nombre de las variables(Identificadores)
Ejemplos de identificadores vlidos son los
siguientes:tiempo,distancia1,caso_A,PIvelocidad_de_la_luz
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
12/71
Declaracion de nombres,variables, funciones.
Variables globales son declaradas fuera delas funciones.
Variables locales son declaradas dentro de
las funciones.
Ejemplo: Int valor_puerto_a;
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
13/71
Declaracion de nombres,variables, funciones.
Generalmente al momento de declarar unavariable esta puede ser definida al mismotiempo.
Int valor_puerto_a=8;
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
14/71
Valores numricos
Sistema decimal: 57
Sistema binario : 0b111001
Sistema hexadecimal: 0x39
Caracter: '9'(Cdigo ASCII)
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
15/71
Cdigo ASCII
American Standard Code for InformationInterexchange
Cdigo de caracteres basado en alfabeto
latino. Creado en 1963 por Bell Labs Incluye caracteres no imprimibles (cdigos
de control)
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
16/71
Cdigo ASCII
Dec Char Dec Char Dec Char Dec Char Dec Char Dec Char
33 ! 49 1 65 A 81 Q 97 a 113 q
34 " 50 2 66 B 82 R 98 b 114 r
35 # 51 3 67 C 83 S 99 c 115 s
36 $ 52 4 68 D 84 T 100 d 116 t
37 % 53 5 69 E 85 U 101 e 117 u38 & 54 6 70 F 86 V 102 f 118 v
39 55 7 71 G 87 W 103 g 119 w
40 ( 56 8 72 H 88 X 104 h 120 x
41 ) 57 9 73 I 89 Y 105 i 121 y
42 * 58 : 74 J 90 Z 106 j 122 z
43 + 59 ; 75 K 91 [ 107 k 123 {
44 , 60 < 76 L 92 \ 108 l 124 |45 - 61 = 77 M 93 ] 109 m 125 }
46 . 62 > 78 N 94 ^ 110 n 126 ~
47 / 63 ? 79 O 95 _ 111 o 127 _
48 0 64 @ 80 P 96 ` 112 p
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
17/71
Funciones
Una funcin del lenguaje C es una porcinde cdigo o programa que realiza unadeterminada tarea.
En otros leguajes es llamada subrutina,subprograma, procedimiento, etc.
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
18/71
Ventajas del uso de funciones
Permite la modularizacin del programa.
Ahorra memoria y tiempo de desarrollo.
(memoria de programa y memoria de datos)
Independencia de datos y oculta informacinno necesaria par otras funciones.
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
19/71
Partes de una Funcin
Nombre
Valor de retorno
Argumentos de la funcin.
Valor_de_retorno
NOMBRE(argumento1, argumento 2,etc){
}
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
20/71
Funcin Main
Todo programa en lenguaje C sin importar sutamao de tener una funcin principal ofunci Main.
void main(void)
{
sentencia_1
sentencia_2
...
}
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
21/71
Ejemplo de programa
// directiva al preprocesador/* incluir prototipo de entradasalida standard */
#include
#define PI 3.142
// variable globalfloat area;/* declaracin de funcin /*int cuadrado(int r);
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
22/71
Ejemplo de programa
// funcion mainmain(){
// variable localint radio_cuadrado;int radio = 3;radio_cuadrado=cuadrado(radio);/* pasar valor a la funcin */
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
23/71
Ejemplo de programa
area = PI * radio_cuadrado;/* sentencia de asignacin */
printf(El area is %6.4f alcuadrado\n,area);
} /* fin de la funcin main*/
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
24/71
Ejemplo de programa
int cuadrado(int r) /* funcin */{
int r_cuadrado;
// variable localr_cuadrado = r * r;return(r_cuadrado);/* retornar valor /*
}
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
25/71
Palabras claves
auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
26/71
Operadores Aritmticos
Suma: + Resta: - Multiplicacin: * Divisin: / Resto: %
Ejemplo:
23%4 = 323/4 = 5.7523%4 = 23 4x5 = 3
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
27/71
Operadores de incremento ydecremento
Incremeto ++a=a+1 a++
Decremento
a=a-1 a- -
Variacionesa++ opera y luego incrementa
++a incrementa y luego opera
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
28/71
Operadores de incremento ydecremento
Ejemplos:si k=2
a=++k*4 = 12 (3*4)k=3
b=4*k++ = 12 (4*3)
k=4
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
29/71
Operadores de asignacin
Suma y asigna +=a=a+b a+=b
Resta y asigna -=
a=a-b a-=b Multiplica y asigna *=
a=a*b a*=b Divide y asigna /=
a=a/b a/=b
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
30/71
Operadores relacionales
Igual que: == Menor que: < Mayor que: > Menor o igual que: = Distinto que: !=
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
31/71
Operadores lgicos
Son usados en combinacin con losoperadores relacionales
Operador logico Y &&if (a==b) && (b>=0)
Operador lgico O ||if (c27)
Operador lgico NO !if(!a) if(a) si a es diferente de cero
if(!a) si a es igual a cero
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
32/71
Operadores lgicos bitwise
Operaciones sobre cada bit Y & (alt 038) O | (alt 124) Or exclusiva ^ (alt 094) Complemento a 1 ~ (alt 126) Despalzar a la derecha >> Despazar a la izquierda
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
33/71
Operadores lgicos bitwise
a = 0100 1101b = 1001 1011a | b = 1101 1111
a=b>>3Si b = 0100 1100 b>>3 = 0000 1001a= 0x09
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
34/71
Sentencia if
if (expresion)sentencia_1;
elsesentencia_2;
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
35/71
Sentencia if
if (expresion){sentencia_1;
sentencia_2;}else{sentencia_3;
sentencia_4;}
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
36/71
Sentencia if
if (expresion){
sentencia_1;sentencia_2;
}else
{sentencia_3;sentencia_4;
}
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
37/71
Sentencia switch
switch (expresion){case expresion_cte_1:
sentencia_1;case expresion_cte_2:
sentencia_2;....
case expresion_cte_n:sentencia_n;
default:sentencia;
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
38/71
Sentencia switch*
switch (expresion){
case expresion_cte_1:sentencia_1;
break;case expresion_cte_2:
sentencia_2;break;
....case expresion_cte_n:
sentencia_n;break;
default:
sentencia;
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
39/71
Sentencia for
for (inicializacion;expresion_de_control;
actualizacion)sentencia;
for(x=1;x
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
40/71
Sentencia for
for(x=1;x
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
41/71
Sentencia while
while(expresion){
sentencia_1;
sentencia_2;}
Se verifica y luego se ejecuta
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
42/71
Sentencia Do while
do{
sentencia_1;
sentencia_2;}while(expresion)
Se ejecuta y luego se verifica
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
43/71
Funcin printf
Imprime sobre un dispositivo estandard En PC dispositivo estandar es el monitor En PIC el dispositivo estandard es un puerto
serial
printf("cadena_de_control", tipo
arg1, tipo arg2, ...)
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
44/71
Funcin printf
e 3.93E+002
E 3.93E+002
f Decimal floating point 392.65
g Use the shorter of %e or %f 392.65
G Use the shorter of %E or %f 392.65
o Signed octal 610
s String of characters sample
u Unsigned decimal integer 7235
x Unsigned hexadecimal integer 7fa
X Unsigned hexadecimal integer (capital letters) 7FA
p Pointer address B800:0000
n
%
Scientific notation (mantise/exponent) using e character
Scientific notation (mantise/exponent) using E character
Nothing printed. The argument must be a pointer to a signed
int, where the number of characters written so far is stored.
A % followed by another % character will write % tostdout.
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
45/71
Funcin printf
printf ("Characters: %c %c \n", 'a', 65);Characters: a A
printf ("Decimals: %d %ld\n", 1977, 650000);Decimals: 1977 650000
printf ("Preceding with blanks: %10d \n", 1977);
Preceding with blanks: 1977
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
46/71
Funcin printf
printf ("Preceding with zeros: %010d \n",1977);
Preceding with zeros: 0000001977
printf ("Some different radixes: %d %x %o %#x%#o \n", 100, 100, 100, 100, 100);
Some different radixes: 100 64 144 0x64 0144
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
47/71
Funcin printf
printf ("floats: %4.2f %+.0e %E \n", 3.1416,3.1416, 3.1416);
floats: 3.14 +3e+000 3.141600E+000
printf ("%s \n", "A string");A string
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
48/71
Bibliografia
Gracia de Jaln de la Fuente, Javier.Aprenda lenguaje Ansi C como si estuvieraen primero, San Sebastian, 1998
Gardner,Nigel. PICmicro MCU C,Anintroduction to programming, The MicrochipPIC in CCS C, Bluebird Electronics 2002.
C Compiler Reference Manual, CustomComputer Services CCS, 2006
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
49/71
Puertos digitales del PIC
P7
P6
P5
P4
P3
P2
P1
P0
T7
T6
T5
T4
T3
T2
T1
T0
Puerto I/O Registro Tris
0 Bit Programado como salida
1 Bit Programado como entrada
Instrucciones del CCS para Pics
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
50/71
Instrucciones del CCS para Pics
set_tris_a-k(valor 1 byte)Programa el registro Tris del puerto a-k
port_b_pullups(valor 1 bit) (TRUE, FALSE)Habilita o deshabilita las resistencias pullup delpuerto B
Instrucciones para el manejo de
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
51/71
Instrucciones para el manejo debits (CCS)
input(pin)Lee el bit indicado por pin
Ejemplo:A = input(PIN_B4) ; (TRUE, FALSE)
Las definiciones se encuentran en el archivo\..\picc\Devices\16f877a.h
Instrucciones para el manejo de
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
52/71
Instrucciones para el manejo debits (CCS)
bit_test(variable,bit)Lee el bit indicado por bit de la variable o registroel resultado es TRUE, FALSE
Ejemplo:A = bit_test(dato,5) ; (TRUE, FALSE)
Instrucciones para el manejo de
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
53/71
Instrucciones para el manejo debits (CCS)
output_bit(pin,valor) valor 0,1Escribe bit indicado por pin
Ejemplo:output_bit(PIN_B5,1) ;
Las definiciones se encuentran en el archivo\..\picc\Devices\16f877a.h
Instrucciones para el manejo de
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
54/71
Instrucciones para el manejo debits (CCS)
output_float(pin)Convierte el pin en entrada (Tris
pin=1)
Ejemplo:output_float(PIN_B5) ;
Las definiciones se encuentran en el archivo\..\picc\Devices\16f877a.h
Instrucciones para el manejo de
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
55/71
Instrucciones para el manejo debits (CCS)
output_high(pin)Escribe en el pin un alto
Ejemplo:output_high(PIN_B7) ;
Las definiciones se encuentran en el archivo\..\picc\Devices\16f877a.h
Instrucciones para el manejo de
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
56/71
Instrucciones para el manejo debits (CCS)
output_low(pin)Escribe en el pin un bajo
Ejemplo:output_low(PIN_B7) ;
Las definiciones se encuentran en el archivo\..\picc\Devices\16f877a.h
Instrucciones para el manejo de
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
57/71
Instrucciones para el manejo debits (CCS)
output_toggle(pin)Escribe en el pin el valor negado al valor anterior
Ejemplo:output_toggle(PIN_B4) ;
Las definiciones se encuentran en el archivo\..\picc\Devices\16f877a.h
Instrucciones para el manejo de
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
58/71
st ucc o es pa a e a ejo debits (CCS)
bit_set(variable,bit)Escribe un alto en el bit de la variable o registro
Ejemplo:bit_set(salida,5) ;
Instrucciones para el manejo de
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
59/71
p jbits (CCS)
bit_clear(variable,bit)Escribe un bajo en el bit de la variable o registro
Ejemplo:bit_clear(salida,5) ;
Instrucciones para el manejo de
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
60/71
p jbytes (CCS)
input_a-k()lee el dato correspondiente al puerto a-k
Ejemplo:a=input_b() ;
luego de esta instruccin el Tris correspondientese cambia a 0xff (todos como entrada)
Instrucciones para el manejo de
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
61/71
p jbytes (CCS)
output_a-k(valor)Escribe el valor correspondiente al puerto a-k
Ejemplo:output_c(0x24) ;
luego de esta instruccin el Tris correspondientese cambia a 0x00 (todos como salida)
Instrucciones para el manejo de
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
62/71
p jreatardos (CCS)
delay_us(x)ejecuta un retardo de softwarede x microsegundos
Ejemplo:delay_us(10) ;
Instrucciones para el manejo de
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
63/71
p jreatardos (CCS)
delay_ms(x)ejecuta un retardo de softwarede x milisegundos
Ejemplo:delay_ms(500) ;
Configuracin del hardware
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
64/71
ejemplo Convertidor ADC
Convertidor de 10 bits de aproximacionessucesivas
8 canales analgicos de entrada
Configuracin del las refrencias de tensin(FSR)
Tensin ADC = 1024*RFS/Dato ADC RFS Rango de full escala (Vref [+] - Vref[-])
PIC16F87X
FIGURE 11-1: A/D BLOCK DIAGRAM
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
65/71
(Input voltage)
VAIN
VREF+
(Referencevoltage)
VDD
PCFG3:PCFG0
CHS2:CHS0
RE2/AN7(1)
RE1/AN6(1)
RE0/AN5(1)
RA5/AN4
RA3/AN3/VREF+
RA2/AN2/VREF-
RA1/AN1
RA0/AN0
111
110
101
100
011
010
001
000
A/DConverter
VREF-
(Referencevoltage)
VSS
PCFG3:PCFG0
PIC16F87X
REGISTER 11-2: ADCON1 REGISTER (ADDRESS 9Fh)
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
66/71
U-0 U-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
ADFM PCFG3 PCFG2 PCFG1 PCFG0 R = Readable bit
W = Writable bitU = Unimplemented bit,
read as 0
- n = Value at POR reset
bit7 bit0
bit 7: ADFM: A/D Result format select
1 = Right Justified. 6 most significant bits of ADRESH are read as 0.
0 = Left Justified. 6 least significant bits of ADRESL are read as 0.
bit 6-4: Unimplemented: Read as 0
bit 3-0: PCFG3:PCFG0: A/D Port Configuration Control bits
PCFG3:
PCFG0
AN7(1)
RE2
AN6(1)
RE1
AN5(1)
RE0
AN4
RA5
AN3
RA3
AN2
RA2
AN1
RA1
AN0
RA0VREF+ VREF-
CHAN /
Refs(2)
0000 A A A A A A A A VDD VSS 8/0
0001 A A A A VREF+ A A A RA3 VSS 7/1
0010 D D D A A A A A VDD VSS 5/0
0011 D D D A VREF+ A A A RA3 VSS 4/1
0100 D D D D A D A A VDD VSS 3/0
0101 D D D D VREF+ D A A RA3 VSS 2/1
011x D D D D D D D D VDD VSS 0/0
1000 A A A A VREF+ VREF- A A RA3 RA2 6/2
1001 D D A A A A A A VDD VSS 6/0
1010 D D A A VREF+ A A A RA3 VSS 5/1
1011 D D A A VREF+ VREF- A A RA3 RA2 4/2
1100 D D D A VREF+ VREF- A A RA3 RA2 3/2
1101 D D D D VREF+ VREF- A A RA3 RA2 2/2
1110 D D D D D D D A VDD VSS 1/01111 D D D D VREF+ VREF D A RA3 RA2 1/2
PIC16F87X
11.0 ANALOG-TO-DIGITAL The A/D module has four registers. These registersare:
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
67/71
CONVERTER (A/D) MODULE
The Analog-to-Digital (A/D) Converter module has five
inputs for the 28-pin devices and eight for the other
devices.
The analog input charges a sample and hold capacitor.
The output of the sample and hold capacitor is the
input into the converter. The converter then generates
a digital result of this analog level via successive
approximation. The A/D conversion of the analog input
signal results in a corresponding 10-bit digital number.
The A/D module has high and low voltage reference
input that is software selectable to some combination
of VDD, VSS, RA2 or RA3.
The A/D converter has a unique feature of being able to
operate while the device is in SLEEP mode. To operate
in sleep, the A/D clock must be derived from the A/Ds
internal RC oscillator.
are:
A/D Result High Register (ADRESH)
A/D Result Low Register (ADRESL)
A/D Control Register0 (ADCON0)
A/D Control Register1 (ADCON1)
The ADCON0 register, shown in Register 11-1, con-
trols the operation of the A/D module. The ADCON1
register, shown in Register 11-2, configures the func-
tions of the port pins. The port pins can be configured
as analog inputs (RA3 can also be the voltage refer-
ence) or as digital I/O.
Additional information on using the A/D module can be
found in the PICmicro Mid-Range MCU Family Ref-
erence Manual (DS33023).
REGISTER 11-1: ADCON0 REGISTER (ADDRESS: 1Fh)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0
ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE ADON R = Readable bitW = Writable bit
U = Unimplemented bit,
read as 0
- n = Value at POR reset
bit7 bit0
bit 7-6: ADCS1:ADCS0: A/D Conversion Clock Select bits
00 = FOSC/2
01 = FOSC/8
10 = FOSC/32
11 = FRC (clock derived from an RC oscillation)
bit 5-3: CHS2:CHS0: Analog Channel Select bits000 = channel 0, (RA0/AN0)
Instrucciones para laconfiguracin del convertidor
http://-/?-http://-/?-http://-/?-http://-/?- -
7/22/2019 _07 Clase Micro Programacin uc empleando C
68/71
gADC (CCS)
setup_adc(valor);(configuracin de parte del registro ADCON0)
Las definiciones se encuentran en el archivo
\..\Picc\Devices\16f877a.h
Instrucciones para laconfiguracin del convertidor
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
69/71
gADC (CCS)
setup_adc(valor);(configuracin del registro ADCON0)
// Constants used for SETUP_ADC() are:
#define ADC_OFF 0 // ADC Off#define ADC_CLOCK_DIV_2 0x10000#define ADC_CLOCK_DIV_4 0x4000#define ADC_CLOCK_DIV_8 0x0040
#define ADC_CLOCK_DIV_16 0x4040#define ADC_CLOCK_DIV_32 0x0080#define ADC_CLOCK_DIV_64 0x4080#define ADC_CLOCK_INTERNAL 0x00c0
Instrucciones para laconfiguracin del convertidor
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
70/71
gADC (CCS)
ADCON0[7:6] #define ADC_OFF 0 // ADC Off
Bit ADON = 0 (bit0)
#define ADC_CLOCK_DIV_2 0x100000000 0000 #define ADC_CLOCK_DIV_8 0x0040
0100 0000
#define ADC_CLOCK_DIV_32 0x00801000 0000
#define ADC_CLOCK_INTERNAL 0x00c01100 0000
Instrucciones para laconfiguracin del convertidor
-
7/22/2019 _07 Clase Micro Programacin uc empleando C
71/71
gADC (CCS)
Es recomendable utilizar la informacin dadapor el manual del 16F877a
#byte ADCON0 =0x1fADCON0=0x33;bit_set(ADCON0,2);
#bit ADON =0x1f.0 #bit ON_DONE = 0x1f.2 while(ON_DONE){ }