Mudanças entre as edições de "Microcontroladores"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 578: Linha 578:
 
  5 fontes de interrupção (dois timers, dois pinosexternos e o canal de comunicação serial) com 2níveis de prioridade selecionáveis por software;
 
  5 fontes de interrupção (dois timers, dois pinosexternos e o canal de comunicação serial) com 2níveis de prioridade selecionáveis por software;
 
  Oscilador de clock interno.
 
  Oscilador de clock interno.
 +
Preço: R$ 259,00 (Kit didático, acompanha diversos periféricos)
 +
Link para compra: http://todaoferta.uol.com.br/comprar/kit-didatico-8051at89s525382528253-WX1WBR6GHF#rmcl
  
 
=Tarefas da semana 13/05/2013=
 
=Tarefas da semana 13/05/2013=

Edição das 00h04min de 2 de julho de 2013

Bibliografia sobre Microcontroladores

http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CC0QFjAA&url=http%3A%2F%2Flegacy.afonsomiguel.com%2FGraduacao%2FMPI%2F8051%2Ftut8051_lima.doc&ei=yah5UeqBKIj00gGc0oGoAQ&usg=AFQjCNFjjus7muNRVJSAl1K-skadJnJxHQ&sig2=TlWqezc05h6dnihwwDwfOQ&bvm=bv.45645796,d.dmQ

http://www.ebah.com.br/content/ABAAAA8T8AK/microcontrolador-8051

Implementações em Assembly no MIC 8051

Zerando área de memória de 50h até 7Fh

mov A,50h
loop: 
    mov R0,A
    mov @R0,#00
    inc A
    cjne R0,7Fh,loop
    loop2:
          jmp loop2


Contador em display LED, apenas um dígito e sem utilizar o ponto

Faltam os temporizadores ainda não entendi como funcionam, estou trabalhando nisso
Portas e bits correspondentes a cada LED.
A=P0.1
B=P1.2
C=P2.2
D=P3.2
E=P3.1
F=P2.1
G=P1.1

loop:
     setb P1.1
     CLR P2.1
     CLR P3.1
     CLR P0.1
     CLR P1.2
     CLR P2.2
     CLR P3.2
     setb P0.1
     setb P2.1
     setb P3.1
     setb P3.2
     setb P2.2
     CLR P0.1
     CLR P1.1
     CLR P3.1
     CLR P3.2
     setb P3.1
     CLR P2.2
     setb P0.1
     setb P3.2
     CLR P2.1
     setb P1.2
     CLR P0.1
     CLR P3.2
     CLR P3.1 
     setb P1.1
     setb P2.1
     setb P3.1
     setb P3.2
     CLR P1.2
     CLR P1.1
     CLR P2.1
     CLR P3.1
     CLR P3.2
     setb P3.1
     jmp loop

</syntaxhighlight>

Pilhas - Exercício 1

Neste exercício observei as intruções push(insere item no início da pilha) e pop(remove intem do início da pilha)

loop: mov A,#65H mov B,#87H push ACC push B mov A,#00H mov B,#00H pop B pop ACC sjmp loop END </syntaxhighlight>

Pilhas - Exercício 2

Neste Exercício observei o contador de programa(PC) e o apontador de pilha(Stack Pointer)

ORG 000h main: ljmp ponto1 ORG 1E5H

ponto1: mov R0,#55H mov R1,#5 acall setar_mem mov R0,#77H mov R1,#10 acall setar_mem loop: sjmp loop

ORG 315h

setar_mem: mov @R0,#0FFh inc R0 djnz R1,setar_mem ret END </syntaxhighlight>

Contador de um dígito com interrupção PORT EQU P1 org 0000h jmp main org 001Bh jmp INT_TIMER1

org 0100h ; entry address for main main:

         mov R1,#09h
         mov A,R1
         mov DPTR,#num
         mov TMOD, #00010000b ; timer 1 em modo 1
         mov TH1, #0FEh 
         mov TL1, #0FDh 
         mov IE, #10001000b ; habilita interrupcao
         setb TR1

loop: ljmp loop

INT_TIMER1:

         clr TR1 ; para o timer
         mov TH1, #0FEh ; recarrega valores no timer
         mov TL1, #0FFh
         LCALL envia_num ; aciona uma saida
         setb TR1 ; religa o timer
         reti


envia_num: mov A,R1 movc A,@A+DPTR mov PORT,A mov A,R1 JZ reset dec R1 ret

reset:

       mov R1,#09h
       ret

org 0200h num: DB 021h, 01h, 0F1h, 05h, 25h, 33h, 61h, 49h, 0F3h, 81h END </syntaxhighlight>

Contador de um dígito com delay por software


loop: mov P1,#81h lcall delay_1ms mov P1,#0F3h lcall delay_1ms mov P1,#49h lcall delay_1ms mov P1,#61h lcall delay_1ms mov P1,#33h lcall delay_1ms mov P1,#25h lcall delay_1ms mov P1,#05h lcall delay_1ms mov P1,#0F1h lcall delay_1ms mov P1,#01h lcall delay_1ms mov P1,#21h lcall delay_1ms ljmp loop delay_1ms: push 7 mov R7,#50 loop1: nop ; 1 ciclo de maquina nop ; 1 ciclo de maquina djnz R7,loop1 ; 2 ciclo de maquina fim_delay_1ms: nop nop nop pop 7 ret

</syntaxhighlight>

Contador com 4 dígitos e delay por software fazendo varredura das portas

Postas e bits correspontndes
P0=P2.0
P1=P2.1
P2=P2.2
P3=P2.3
A=P1.1
B=P1.2
C=P1.3
D=P1.4
E=P1.5
F=P1.6
G=P1.7
PONTO=P1.0

org 0000h S1 EQU P2.0 S2 EQU P2.1 S3 EQU P2.2 S4 EQU P2.3 PORT EQU P1

main: mov DPTR,#num mov R0,#00 mov R1,#00 mov R2,#00 mov R3,#00 mov R7,#00 loop: setb S4 mov A,R0 ACALL envia_num clr S1

setb S1 mov A,R1 ACALL envia_num clr S2

setb S2 mov A,R2 ACALL envia_num clr S3

setb S3 mov A,R3 ACALL envia_num clr S4

inc R7 cjne R7,#01h,loop ACALL contadores ljmp loop

envia_num: movc A,@A+DPTR mov PORT,A clr A ret

contadores: mov R7,#00 inc R0 cjne R3,#0Ah,03Fh mov R3,#00h

cjne R0,#0Ah,045h inc R1 mov R0,#00

cjne R1,#0Ah,04Bh inc R2 mov R1,#00

cjne R2,#0Ah,051h inc R3 mov R2,#00 ret


org 0300h

num: DB 81h, 0F3h, 49h, 61h, 33h, 25h, 05h, 0F1h, 01h, 021h

    END

</syntaxhighlight>

Contador 4 dígitos com interrupção e varredura das portas

Postas e bits correspontndes
P0=P2.0
P1=P2.1
P2=P2.2
P3=P2.3
A=P1.1
B=P1.2
C=P1.3
D=P1.4
E=P1.5
F=P1.6
G=P1.7
PONTO=P1.0

org 0000h S1 EQU P2.0 S2 EQU P2.1 S3 EQU P2.2 S4 EQU P2.3 PORT EQU P1

main: mov DPTR,#num mov R0,#00 mov R1,#00 mov R2,#00 mov R3,#00 mov R7,#00 loop: setb S4 mov A,R0 ACALL envia_num clr S1

setb S1 mov A,R1 ACALL envia_num clr S2

setb S2 mov A,R2 ACALL envia_num clr S3

setb S3 mov A,R3 ACALL envia_num clr S4

inc R7 cjne R7,#05h,loop ACALL contadores ljmp loop

envia_num: movc A,@A+DPTR mov PORT,A clr A ret

contadores: mov R7,#00 inc R0 cjne R3,#0Ah,03Fh mov R3,#00h

cjne R0,#0Ah,045h inc R1 mov R0,#00

cjne R1,#0Ah,04Bh inc R2 mov R1,#00

cjne R2,#0Ah,051h inc R3 mov R2,#00 ret

org 0300h num: DB 81h, 0F3h, 49h, 61h, 33h, 25h, 05h, 0F1h, 01h, 021h

    END

</syntaxhighlight>

Implementaçao do contador com 4 dígitos e display led sete segmentos em C

#include <8051.h>

static long miliSegundos;
volatile unsigned char UmSeg;
int num[10];
int i=0;
int j=0;
int k=0;
int l=0;

void init_contadores(){
num[0]=0x81;
num[1]=0xF3;
num[2]=0x49;
num[3]=0x61;
num[4]=0x33;
num[5]=0x25;
num[6]=0x05;
num[7]=0xF1;
num[8]=0x01;
num[9]=0x21;
}

void varredura(){
P1=0xff;
P2_0=0x0;
P1=num[i];
P2_0=0x1;
P1=0xff;
P2_1=0x0;
P1=num[j];
P2_1=0x1;
P1=0xff;
P2_2=0x0;
P1=num[k];
P2_2=0x1;
P1=0xff;
P2_3=0x0;
P1=num[l];
P2_3=0x1;
P1=0xff;
i++;
if(i==10){
	i=0;
	j++;
	}
if(j==10){
	j=0;
	k++;
	}
if(k==10){
	k=0;
	l++;
	}
if(l==10)
	l=0;
return;
}

void delay(){
ET0=0x0;
miliSegundos=0;
UmSeg=0;
ET0=0x1;
while (UmSeg==0);
return;
}

void ClockIrqHandler (void) interrupt 1 using 3 {
TL0 = 0xFE;
TH0 = 0xFE;
miliSegundos++;
if (miliSegundos==2) 
UmSeg = 1;
}

void init_timer() {
TR0=0;
TH0=0xFE;
TL0=0xFE;
TR0=0x1;
ET0=1;
EA=1;
return;
}

void main(){
init_timer();
init_contadores();
for (;;){
	varredura();
	delay();
	}
}

Informações sobre alguns microcontroladores

Arduino Uno R3

Características
Tamanho:	5,3cm x 6,8cm x 1,0cm
Microcontrolador:	ATmega328
Tensão de operação:	5V
Tensão de entrada (recomendada):	7-12V
Tensão de entrada (limites):	6-20V
Pinos de entrada/saída (I/O) digitais:	14 (dos quais 6 podem ser saídas PWM)
Pinos de entrada analógicas:	6
Corrente DC por pino I/O:	40mA 
Corrente DC para pino de 3,3V:	50mA
Memória Flash:	32KB (dos quais, 0,5KB são usados pelo bootloader)
SRAM:	2KB
EEPROM:	1KB
Velocidade de Clock:	16MHz
Temperatura de operação: de 10º a 60º
Preço R$ 69,00
Link para compra: http://www.robocore.net/modules.php?name=GR_LojaVirtual&prod=120
Possui ambiente próprio para desenvolvimento e implementa a linguagem C

Arduino Mega 2560 R3

Características:
Tamanho:	5,3cm x 10,2cm x 1,0cm
Microcontrolador:	ATmega2560
Tensão de operação:	5V
Tensão de entrada (recomendada):	7-12V
Tensão de entrada (limites):	6-20V
Pinos de entrada/saída (I/O) digitais:	54 (dos quais 14 podem ser saídas PWM)
Pinos de entrada analógicas:	16
Corrente DC por pino I/O:	40mA
Corrente DC para pino de 3,3V:	50mA
Memória Flash:	256KB (dos quais, 8KB são usados pelo bootloader
SRAM:	8KB
EEPROM:	4KB
Velocidade de Clock:	16MHz
Link para comprar:  http://www.robocore.net/modules.php?name=GR_LojaVirtual&prod=121
Possui ambiente próprio para desenvolvimento e implementa a linguagem C

Exemplos de projetos com arduino

Automação residencial com android e comando de voz
Alarme e rastreador veicular (muito interessante este, necessita de placa GPRS e GPS)
Semáforo

Kit arduino

1x Protoboard 840
1x Cabo USB AB
1x Sensor de Temperatura (Termistor NTC 10k)
1x Sensor de Luminosidade (LDR 5mm)
1x Potenciômetro 10k?
4x Chave Momentânea (PushButton)
5x LEDs Amarelos
5x LEDs Verdes
5x LEDs Vermelhos
1x LED alto brilho
15x Resistores 300?
5x Resistores 10k?
1x Buzzer
1x Display de LCD 16x2 com conector soldado (s/ bl)
20x fios Jumper Premium de 20 cm
10x fios Jumper Premium de 10 cm
1x Caixa Organizadora
Preço: R$ 89,00 sem placa arduino

8051

Freqüência de clock de 12 MHz, com algumas versões que alcançam os 40 MHz
Até 64 kB de memória de dados externa
128 bytes de RAM interna
Até 64 kB de memória de programa configurável de duas formas mutuamente excludentes:
4 kB internos (ROM no 8051 e EPROM no 8751) e mais 60 kB externos;
64 kB externos;
4 portas bidirecionais de I/O, cada uma com 8 bits individualmente endereçáveis; duas dessas
portas (P0 e P2) e parte de uma terceira (P3) ficam comprometidas no caso de se utilizar qualquer tipo de memória externa;
2 temporizadores /contadores de 16 bits;
1 canal de comunicação serial;
5 fontes de interrupção (dois timers, dois pinosexternos e o canal de comunicação serial) com 2níveis de prioridade selecionáveis por software;
Oscilador de clock interno.
Preço: R$ 259,00 (Kit didático, acompanha diversos periféricos)
Link para compra: http://todaoferta.uol.com.br/comprar/kit-didatico-8051at89s525382528253-WX1WBR6GHF#rmcl

Tarefas da semana 13/05/2013

  • Temporizador por software
  • Estudar pilha
  • Temporizador por hardware (sem interrupção)
  • Temporizador por hardware (com interrupção)

Tarefas da semana 03/06/2013

  • Separar as lógicas de contagem e varedura no contador com display led
  • Procurar um simulador para arduíno
  • Tentar implementar o contador com display led em C

Tarefas da semana 17/06/2013

  • Iniciar estudos sobre alguns microcontroladores, quais as principais diferenças e vantagens de cada um
  • Exportar o código implementado em C do contador de 4 dígitos para um simulador Arduíno
  • Procurar simuladores para Arduíno

Tarefas da semana 27/06/2013

  • Criar uma tabelas com informações sobre alguns microcontroladores
  • Estudar Motor de passo
  • Estudar Arduino