ASC PIC16F877 con MikroC 2-2 [Modo de compatibilidad]

Anuncio
Segundo Parcial
Programación en Mikro C
para microcontroladores PIC
PIC16F877
M.I. Alfredo Santillana Cedillo
Practica No. 4.- Luces secuenciales
• Programa que envíe la siguiente secuencia de datos
al puerto de salida D.
Secuencia :
– 00000001
– 00000010
– 00000100
– 00001000
– 00010000
– 00100000
– 01000000
– 10000000
M.I. Alfredo Santillana Cedillo
Luces secuenciales (algoritmo)
1.
2.
3.
4.
Configuración de puerto como salida de datos.
Envío de primer dato al puerto de salida
Envío de segundo dato al puerto de salida
Envío de tercer dato al puerto de salida
.
9. Envío de ultimo dato al puerto de salida
10. Regresar a 2
M.I. Alfredo Santillana Cedillo
Luces secuenciales (diagrama de flujo)
Luces
Configura puerto
como salida
Envía 00000100
Envía 00100000
Envía 00000001
Envía 00001000
Envía 01000000
Envía 00000010
Envía 00010000
Envía 10000000
M.I. Alfredo Santillana Cedillo
Luces secuenciales (esquemático)
M.I. Alfredo Santillana Cedillo
Luces secuenciales (programa)
void main(void)
{
TRISD = 0;
while ( 1 )
{
PORTD = 0b00000001;
Delay_ms(500);
PORTD = 0b00000010;
Delay_ms(500);
PORTD = 0b00000100;
Delay_ms(500);
PORTD = 0b00001000;
Delay_ms(500);
PORTD = 0b00010000;
Delay_ms(500);
PORTD = 0b00100000;
Delay_ms(500);
PORTD = 0b01000000;
Delay_ms(500);
PORTD = 0b10000000;
Delay_ms(500);
}
}
M.I. Alfredo Santillana Cedillo
// CONFIGURACION COMO PUERTO DE SALIDA
// CICLO INFINITO
// ENVIA PRIMER DATO
// ENVIA SEGUNDO DATO
// ENVIA TERCER DATO
Practicas 5 y 6: Luces
Secuenciales
5. El alumno enviara una secuencia de datos distinta por el
puerto B, utilizando retardos por software de distintas
duraciones, con incrementos de 100 milisegundos entre si.
6. El alumno enviara la secuencia de datos por el puerto A,
utilizando retardos por software con duración de 800
milisegundos.
M.I. Alfredo Santillana Cedillo
100001
010010
001100
010010
100001
Arreglos (definiciones)
#define
MAX 50
int
vector_one[10];
/* arreglo de 10 enteros */
float
vector_two[MAX];
/* arreglo 50 flotantes */
float
vector_three[MAX - 20];
/* arreglo 30 flotantes */
char
numero[5];
short
dato[8];
long
temperatura[15];
unsigned peso[7];
unsigned short d[3];
M.I. Alfredo Santillana Cedillo
Arreglos (Inicializando)
/* Arreglo el cúal contiene el número de días de cada mes */
int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
/* La declaraciones es identica a la anterior */
int *days = {31,28,31,30,31,30,31,31,30,31,30,31};
/* Las dos declaraciones son identicas */
const char msg1[ ] = {'T', 'e', 's', 't', '\0'};
const char msg2[ ] = "Test";
M.I. Alfredo Santillana Cedillo
Condicionante if
if (expresión) conjunto 1 [else conjunto 2]
• Cuando la expresión evaluada es verdadera, Las
instrucciones del conjunto 1 son ejecutadas. Si la
expresión es falso, las instrucciones del conjunto 2 es
ejecutada. La expresión debe ser evaluada a un valor
entero. Los paréntesis que encierra la expresión son
obligatorios.
• La palabra especial “else conjunto 2” es opcional.
M.I. Alfredo Santillana Cedillo
Símbolos de condición
Operador Operación
==
igual
!=
no igual
>
mayor que
<
menor que
>=
mayor que o igual a
<=
menor que o igual a
M.I. Alfredo Santillana Cedillo
Practica No. 7 Luces con arreglo
(algoritmo)
1.
2.
3.
4.
5.
Configuración de puerto como salida.
Inicializa apuntador.
Envío de dato apuntado.
Incrementa apuntador.
Si apuntador es mayor que o igual a 8 inicia el
apuntador.
6. Regresa a 3.
M.I. Alfredo Santillana Cedillo
Luces con arreglo (diagrama de flujo)
Luces
Configura puerto
como salida
Incrementa
apuntador
si
Limpia apuntador
apuntador ≥ 8
Envía dato
apuntado
M.I. Alfredo Santillana Cedillo
no
Limpia
apuntador
Luces con arreglo (programa)
short dato [ 8 ] = {1, 2, 4, 8, 16, 32, 64, 128};
short apunta;
void main(void)
{
TRISB = 0;
// Configura puerto
apunta = 0;
// Limpia apuntador
while(1)
// Ciclo infinito
{
PORTB = dato [ apunta ]; // Envía dato
Delay_ms(1000);
apunta ++;
// Incrementa apuntador
if ( apunta > = 8 )
// Si apuntador ≥ 8
apunta = 0;
// Limpia apuntador
}
}
M.I. Alfredo Santillana
Cedillo
Practica No. 8 Luces Secuenciales
por Asignación de Puerto
1. El alumno enviara una secuencia por el puerto
B usando los valores almacenado en un
arreglo.
M.I. Alfredo Santillana Cedillo
00000011
00000110
00001100
00011000
00110000
01100000
11000000
Descargar