Vous êtes sur la page 1sur 4

Nome:

Curso:

Marcelo Rosales Mori


Microcontroladores PIC - Programao em C - Famlia PIC18F

Desafio Unidade 3
Os desafios valem nota e precisam ser enviados ao tutor, porm so um timo forma de avaliar
seu conhecimento e entendimento do assunto abordado. importante realiz-los com bastante
cuidado e ateno, estude bem os tpicos abordado na unidade, tente resolver os exerccios
resolvidos antes de enviar o desafio para o Tutor. No se esquea o tutor est disponvel para
responder todas dvidas que surgirem.
LEITURA DE TECLAS

Exercicio 01:
1 Elabore um programa utilizando a funo button do compilador mikroC para ler a
tecla S1 que esta conectada ao pino RB0 do PIC, conforme esquema eltrico abaixo.
Cada vez que a tecla for pressionada e soltada, o estado do led_1 que esta conectado no
pino RD0 alterado. O tempo de delay para correo de debouncing dever ser de 25ms.

Copie e cole seu programa aqui.

/*
Projetista: Marcelo Rosales Mori
Data: 23/12/2008
Acionamento de led via boto
*/
#define led1 portd.f0

//foi rotulado portd.f0 como led1

int estado_antigo;

//estado_antigo alocado na memria como int

void main () {
trisd=0b00000000;
trisb=0b00000001;
portd=0b00000000;

//inicio do programa
//todo o portd como saida
//somente pino portb.f0 como entrade
/*foi posto este comando pois no momento de rodar o
programa os dois leds D2 e D3 da placa de teste
permaneciam acessos. Como eu no sabia o porque dessa
situao forcei estes a permanecerem apagados.*/

//Ciclo do programa
do {
if (button(&PORTB,0,25,0)) estado_antigo=1;
if (estado_antigo == 1 && button(PORTB,0,25,1)) {
led1 = ~led1;
estado_antigo=0;
}
}while (1);
}
Compile ser programa no mikroC e cole aqui o contedo do arquivo .hex (arquivo compilado).
:1000000051EF00F0FFFFFFFF020E0B6EFF0E0A6EB6
:100010000B2E01D003D00A2EFED7FAD7490E0A6E56
:100020000A2EFED712001C6A19C000F0010E016EE4
:10003000000E026E005005E0013601900236FF0FFF
:10004000FAD701C01DF017C0E9FF18C0EAFFEECFD4
:1000500000F0015000160052010ED8A4000E006EF0
:100060001B5000181BE01A50000806E204EC00F0D8
:1000700004EC00F01A06F7D717C0E9FF18C0EAFF32
:10008000EECF00F01D5000160052010ED8A4000E55
:10009000006E1B50001802E0FF0E1C6E1CC000F02A
:1000A0001200956A010E936E836A810E176E0F0E11
:1000B000186E196A190E1A6E1B6A13EC00F00052C2
:1000C00004E0010E156E000E166E000E161802E109
:1000D000010E151819E181CF17F0000E186E196A7C
:1000E000190E1A6E010E1B6E13EC00F000520CE09C
:1000F000010E8314006E001E000E00B0010E831866
:10010000010B831A156A166AD0D7FFD7FFFFFFFFCE
:020000040030CA
:0E000000FFFAFDFEFFFEFBFFFFFFFFFFFFFF0D
:00000001FF

Exercicio 02:
Elabore um programa utilizando a funo button do compilador mikroC para ler a
tecla S1 e S2 que esta conectada ao pino RB0 e RB1 do PIC, conforme esquema eltrico
abaixo. A tecla S1 tem a funo de acender o led_1, enquanto a tecla S2 tem a funo de
apagar este mesmo led_1. O tempo de delay para correo de debouncing dever ser de
30ms.
2

Copie e cole seu programa aqui.


/*
Projetista: Marcelo Rosales Mori
Data: 23/12/2008
Acionamento de led via boto
*/
#define led1 portd.f0
int estado_antigo;
void main () {
trisd=0b00000000;
trisb=0b00000011;

//foi rotulado portd.f0 como led1


//estado_antigo alocado na memria como int
//inicio do programa
//todo o portd como saida
//somente pino portb.f0 como entrade

portd=0b00000000;
do {
if (button(&portb,0,30,0)) estado_antigo=1;
if (button(&portb,1,30,0)) estado_antigo=0;
if (estado_antigo == 1 && button(portb,0,30,0)) {
led1 = 1;
}
if (estado_antigo == 0 && button(portb,1,30,0)) {
led1 = 0;
}
}while (1);
}

Obs: ESTE DESAFIO DEVE SER ENTREGUES ATRAVS DO PRPRIO SISTEMA


EAD. EM CASO DE DVIDA CONTATE O TUTOR DE SEU CURSO.
A Coordenao Microgenios