Documentos de Académico
Documentos de Profesional
Documentos de Cultura
¿Para qué?
Para “ejecutar” de manera continua
una secuencia de instrucciones
(programa) que permita controlar un
sistema o subsistema electrónico
Controlador: dispositivo que se emplea para
el gobierno de uno o varios procesos. Por
ejemplo, el controlador que regula el
funcionamiento de un horno.
Microcontrolador: un circuito integrado de
alta escala de integración que incorpora la
mayor parte de los elementos que configuran
un controlador.
Un microcontrolador dispone normalmente de los
siguientes componentes:
Procesador o UCP (Unidad Central de Proceso)
Memoria RAM para Contener los datos.
Memoria para el programa tipo ROM/PROM/EPROM.
Líneas de E/S para comunicarse con el exterior.
Diversos módulos para el control de periféricos
(temporizadores, Puertos Serie y Paralelo, Conversores
A/D, Conversores D/A, etc.).
Generador de pulsos de reloj que sincronizan el
funcionamiento de todo el sistema.
El microcontrolador es un sistema cerrado.
Todas sus partes están contenidas en el
interior y sólo salen al exterior las líneas que
gobiernan a los periféricos.
Un microprocesador es un sistema abierto
porque su configuración es variable de acuerdo
con la aplicación a la que se destine.
Microprocesador
Microcontrolador
1. La arquitectura de Von Neumann se
caracteriza por disponer de una sola
memoria principal donde se almacenan
datos e instrucciones de forma indistinta. A
dicha memoria se accede a través de un
sistema de buses único (direcciones, datos y
control).
2. La arquitectura Harvard dispone de dos
memorias independientes una, que contiene
sólo instrucciones y otra, sólo datos. Ambas
disponen de sus respectivos sistemas de
buses de acceso y es posible realizar
Es el elemento más importante del sistema. Se
encarga de direccionar, recibir el código de la
instrucción en curso, su decodificación y la ejecución
de la operación, que implica la búsqueda de
operandos y almacenamiento de resultados.
Los procesadores se pueden dividir, según su
conjunto de instrucciones, en:
Hexadecimal
◦ short x = 0x37; /* decimal 55 */ 00110111
◦ short y = 0x7F; /* decimal 127 */ 01111111
◦ int z = 0x125; /* decimal 293 */ 100100101
Octal
◦ int m = 023; /* 19 */
◦ short n = 016; /* 14 */
Binario
◦ char dato = 0b00001111;
◦ short dat = 0b10101010;
◦ unsigned char sig = 0b11001100;
ASCII
◦ char dat = ‘a’;
◦ char m = ‘5’;
Entrada/salida Configuración
PORTA TRISA
PORTB TRISB
PORTC TRISC
PORTD TRISD
PORTE TRISE
SALIDA DE DATOS : 0
ENTRADA DE DATOS: 1
Ejemplo:
Generar un retardo de 1 segundo
// Definición de funciones
void main(void)
{
// Definición de variables locales
// ciclo infinito
while ( 1 )
{
// Programa de usuario
}
}
Crear un programa que encienda y apague un
led, ubicado en la terminal RB7 del puerto B.
El tiempo de encendido es de 1000
milisegundo y el de apagado de 300
milisegundos.
1. Configurar el bit 7 del puerto B como
salida de datos
2. Encendido del led
3. Retardo por software de 1000
milisegundos.
4. Apagado del led
5. Retardo por software de 300 milisegundos
6. Repetir el paso 2
Led
Retardo de 1000ms
void main ( void )
{
output_d ( 0);
while( 1 )
{
output_high(pin_b7 );
Delay_ms( 1000 );
output_low(pin_b7 );
Delay_ms( 300 );
}
}
void main ( void )
{
output_d ( 0);
while( 1 )
{
portb = 0x80;
Delay_ms( 1000 );
portb = 0;
Delay_ms( 300 );
}
}
1. El alumno encenderá y apagara en forma
alternada dos led’s ubicados en los bit’s 2
y 3 del puerto B. Los retardos serán de
500 milisegundos (ambos). Usando
asignación directa a bits.
Programa que envíe la siguiente secuencia
de datos al puerto de salida B.
Secuencia :
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
1. Configuración de puerto como salida de
datos.
2. Envío de primer dato al puerto de salida
3. Envío de segundo dato al puerto de salida
4. Envío de tercer dato al puerto de salida
.
.
.
9. Envío de ultimo dato al puerto de salida
10. Regresar a 2
Luces
Configura puerto
como salida Envía 00000100 Envía 00100000
Limpia apuntador si
apuntador ≥ 8 Limpia
apuntador
Envía dato
no
apuntado
void main(void)
{
int*dato [ 58-MAX ] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
int apunta;
set_tris_b(0x00);// configuramos el puerto b como SALIDA
set_tris_b(0x00);
portb=0x01;
while(1)
{
rotate_left(&portb,1); //&portb es la direccion de memoria
a apuntar y 1 es la cuenta del numero de bytes a trabajar
delay_ms(1000);
}
}
El alumno enviará un corrimiento a la
izquierda empezando con RB0 y al llegar a
prender el bit RB7 regrese otra vez con las
funciones rotate_left y rotate_right .
00000001 01000000
00000010 00100000
00000100 00010000
00001000 00001000
00010000 00000100
00100000 00000010
01000000 00000001
10000000
int band2;
int band1;
void main(void)
{
set_tris_b(0x00);
portb=0x01;
while(1)
{
if(portb==0x01|band1==1)
{
band2=0;
band1=1;
rotate_left(&portb,1); //&portb es la direccion de memoria a apuntar y 1 es la cuenta del
numero de bytes a trabajar
delay_ms(1000);
}
if(portb==0x80|band2==1)
{
band1=0;
band2=1;
rotate_right(&portb,1); //&portb es la direccion de memoria a apuntar y 1 es la cuenta del
numero de bytes a trabajar
delay_ms(1000);
}
}
}
El alumno enviara una secuencia de bits por el
puerto B utilizando un corrimiento de bits
haciendo uso de los operadores <<>> .
Secuencia 1 Secuencia 3 secuencia 5
00000001 10000001 10000001
00000010 01000010 01000010
00000100 00100100 00100100
00001000 00011000 00011000
00011000
Secuencia 2 Secuencia 4 00100100
00010001 00011000 01000010
00100010 00100100
01000100 01000010
10001000 10000001
Realice la secuencia numero 3 del ejercicio
anterior variando la velocidad del corrimiento
de bits con RD0 (velocidad baja) y
RD1(velocidad alta) sin desbordarse.
Secuencia 3
10000001
01000010
00100100
00011000
Operador Operación
+ Suma
- Resta
* Multiplicación
/ División
#fuses:XTPLL,NOWDT,NOPROTECT,NOLVP,
NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN
t puede indicar:
c Carácter
s Cadena o carácter
u Entero sin signo
d Entero con signo
Lu Entero largo sin signo
Ld Entero largo con signo.
x Entero hexadecimal (minúsculas)
X Entero hexdecimal(mayusculas)
Lx Entero largo hexadecimal (minúsculas)