Académique Documents
Professionnel Documents
Culture Documents
Bases de Programao
Associao Nacional de Professores de
Electrotecnia e Electrnica
DEAR
Robot
Microcontrolador
Circuito
Aplicaes
indstria
informtica
(perifricos: rato, teclado,...)
electrodomsticos (fornos,
mq. lavar, vdeos, etc)
sistemas AVACs
telecomunicaes
indstria automvel
Constituio
Um microcontrolador dispe normalmente
dos seguintes elementos:
processador
ou CPU
memria de dados (RAM)
memria de programa
(ROM/PROM/EPROM/EEPROM)
linhas de entrada/sada (E/S) programveis
Constituio
mdulos
microprocessador vs.
microcontrolador
o
Estrutura de um
microprocessador
bus de endereos
bus de dados
bus de controle
Memria
controlador 1 controlador 2
perifricos
perifricos
Estrutura de um
microcontrolador
perifricos
perifricos
Arquitectura interna de
um microprocessador
UCP
bus comum
de endereos
Memria
Instrues
8
bus de dados
e instrues
+
dados
Arquitectura interna de
um microcontrolador
Memria
de
Instrues
bus de
endereos de
instrues
10
UCP
bus de
endereos de
dados 9
14
bus de
instrues
8
bus de dados
Arquitectura Harvard
Memria
de
dados
Arquitectura interna de
um microcontrolador
RISC
Arquitectura interna de
um microcontrolador
Memria de Programa
Tipologia
PROM (Programmable Read Only Memory)
EPROM (Electrically PROM)
OTP (One Time Programmable)
EEPROM (Electrically Erasable PROM)
FLASH
Arquitectura interna de
um microcontrolador
Memria de Dados
Arquitectura interna de
um microcontrolador
Programao
linguagem
assembly
linguagens HLL (High Level Language):
Pascal, Basic, JAL, C
Compiladores
vs. Interpretadores
Picaxe 28X
Caractersticas:
600 linhas cdigo
21 pinos E/S
9-17 sadas
0-12 entradas
0-4 entradas A/D
2 sadas PWM
Picaxe 28X
Entradas
Analgicas
ou Digitais
Pinos de
Entrada/Sada
configurveis
Pinos de
Sada
Pinos de
Entrada/Sada
configurveis
Picaxe 28X
Entradas
Analgicas
A/D
Pinos de Sada
PWM
Linguagens de programao
Lgica de Programao
O paradigma tradicional:
Pressupe um modelo do mundo
Sensores
Interpretao
dos sensores
Modelo
do Mundo
Actuadores
Execuo
Planeamento
Lgica de Programao
Lgica de Programao
Escapar
Detectar_Cor S
SeguirPista
Procedimento
Motores
Actuador
BASIC
Programa = dados + instrues
Elementos da Linguagem de Programao
BASIC
Smbolos
Variveis
Constantes
Instrues
BASIC
LABELS
As labels (etiquetas) so usadas como marcadores
em todo o programa. As labels so usadas para
marcar uma posio para onde saltar no programa
atravs de uma instruo goto, gosub ou outra
instruo.
Uma label pode ser qualquer palavra (no reservada)
e pode conter dgitos e o carcter underscore ( _ ). As
labels devem ter como carcter inicial uma letra (no
um dgito), e so definidas com o sinal dois-pontos (:)
a seguir ao nome. O sinal no necessrio quando a
label faz parte integrante de instrues.
BASIC
BASIC
BASIC
COMENTRIOS
Os comentrios comeam por um apstrofe
() ou ponto e vrgula (;) e continuam at ao
fim da linha. A instruo REM pode tambm
ser utilizada para inserir comentrios.
Exemplos:
high 0
coloca pin0 alto
high 2
;coloca pin2 alto
REM coloca pin3 alto
BASIC
CONSTANTES
BASIC
Exemplos:
100
$64
%01100100
A
Hello
B1 = B0 ^ $AA
100 em decimal
64 hex
01100100 binrio
A ascii (65)
Hello equivalente a H,
e, l, l, o.
ou exclusivo da
varivel B0 com AA hex
BASIC
SMBOLOS
Os smbolos podem ser associados a valores
constantes, nomes alias (alternativos) para variveis e
endereos de programa. Os valores constantes e os
nomes alias de variveis so atribudos fazendo seguir
ao nome do smbolo o sinal de igual (=), seguido da
varivel ou constante.
Os smbolos podem utilizar qualquer palavra que no
seja reservada (instrues).
Os smbolos podem conter letras e nmeros, mas o
primeiro carcter obrigatoriamente uma letra. O uso
dos smbolos no aumenta a dimenso do programa e
torna-o mais legvel.
BASIC
Exemplo:
symbol LED_E = 7 define um pino de sada
symbol CONTA = B0
define o smbolo de uma varivel
let CONTA = 200 carrega a varivel com o valor 200
CICLO:
define endereo de programa
high LED_E
pause CONTA
liga a sada 7
espera 0,2 segundos (200 milisegundos)
low LED_E
pause CONTA
goto CICLO
desliga a sada 7
espera 0,2 segundos
salta para o incio CICLO
BASIC
BASIC
BASIC
RAM (Variveis)
A memria RAM usada para guardar dados
temporrios em variveis durante a execuo do
programa. Esta memria perde toda a informao
quando se desliga a alimentao. Existem trs tipos
de variveis usos gerais, armazenamento e
funes especiais.
BASIC
BASIC
BASIC
BASIC
BASIC
Por exemplo,
let pins = %11000011
BASIC
Programming Editor
Serial Port
Language
Programming Editor
Programao em BASIC
Programao por Fluxograma
Programming Editor
Subrotina
Programming Editor-exemplo
blue
red
Program for Washing Machine Model
main:high 0
label_6:
label_D:
high 7
start
low 4
pin0=1
N
Check
door switch
Lock solenoid
low 4
ifDopin0=1
then
let b0=label_19
0
motor
sequence
goto label_D
let pins = 96
pause 3000
high 4
pin0=0
Green LED on
N
pin6=1
N
pin7=1
N
Y
Test red & blue switches
let pins = 32
label_19: high 4
pause 2000
low 7
label_20:
if pin0=0 then
label_6
if pin6=1 then label_4D
pins = 160
high 6
if pin7=1 let
then
label_44
goto label_20
pause 3000
pause 2000
low 6
let b0=b0+ 1
Y
gosub blue
gosub red
label_4D:
gosub red let pins = 16
return
goto label_6
return
Programming Editor-exemplo
start
gosub ler_cor
000
001
b0= 0
010
b0= 32
011
b0= 64
gosub avancar
gosub esquerda
forward
pwmout 1,10,40
halt
101
b0= 128
gosub avancar
gosub esquerda
parar
avancar
100
b0= 96
gosub direita
esquerda
direita
alarme
left
right
sound 0,(50,50)
pwmout 1,10,40
pwmout 1,10,40
pause 1000
pwmout 1,10,40
110
b0= 160
Y
pwmout 2,10,40
pwmout 2,10,40
pwmout 2,10,40
return
b1> 20
b1< 70
return
As coisas complicam-se
gosub parar
readadc 0,b1
return
return
gosub esquerda
ler_cor
Y
return
b0= 224
gosub avancar
b1> 132
b1< 150
Y
pwmout 2,10,40
111
b0= 192
gosub alarme
return
BASIC
high 1
low 2
pins=%00000110
high portc 1
BASIC
Sadas PWM
Instruo pwmout
Sintaxe:
PWMOUT pino, perodo, dutycycle
Pino uma varivel/constante que especifica o pino E/S
a usar (1 ou 2).
Perodo uma varivel/constante (0-255) que estabelece
o perodo do sinal de PWM.
Duty cycle uma varivel/constante (valor de 10 bits,
logo, de 0-1024) que define o ciclo de trabalho (tempo
em que o sinal est alto em cada perodo).
BASIC
BASIC
Exemplo: Controlo de um motor
Programa
Inicio:
high 7
low 6
pwmout 1,100,300
end
BASIC
start
Salto incondicional
goto label
Controlo de fluxo
If condio then label
pin0=1
Aqui
Y
Ali
BASIC
inicio:
if pin6 = 0 then direita
goto esquerda
**************************
esquerda:
low 7
low 6
high 5
low 4
pwmout 1,10,25
pwmout 2,10,25
goto inicio
***************************
direita:
high 7
low 6
low 5
low 4
pwmout 1,10,25
pwmout 2,10,25
goto inicio
*****************************
BASIC
if then
if and then
if or then
Sintaxe:
IF varivel ?? valor (AND/OR varivel ?? valor ...)
THEN endereo
Varivel (s) comparada com o valor(s).
Valor uma varivel/constante.
Endereo uma label (etiqueta) que especifica
o endereo para onde saltar se a condio
se verificar (for verdadeira).
BASIC
?? pode ser qualquer uma das seguintes condies
=
igual a
<>
no igual a (diferente)
!=
no igual a (diferente)
>
maior que
>=
maior que ou igual a
<
menor que
<=
BASIC
Seguimento de pista
Com 1 sensor
Com 2 sensores
Com 3 sensores
Com 3 sensores e flags
Esquema de ligaes
Sensor de
obstculos
(2outputs)
Sensor
de cor
Alimentao
dos sensores
Bezouro
Led
Sensor
de pista
(3inputs)
9V
Ligao
ao cabo
srie para
programar
9,6V
Sensor de
obstculos
(1input)
M2
M1
BASIC
Subrotinas
Os procedimentos ou subrotinas, so largamente
utilizados na programao para reduzir o tamanho
dos programas, usando seces de cdigo que se
repetem num nico procedimento. A passagem de
valores para o procedimento, por variveis, permite
repetir a mesma seco de cdigo a partir de vrias
localizaes do programa.
BASIC
GOSUB endereo
Funo:
Salta para a subrotina (procedimento) localizado no
endereo, regressando quando encontra a instruo
return. So permitidas at 16 GOSUBs (ou 256 no
Picaxe 28X), podendo ser aninhadas at 4 nveis.
Return
BASIC
BASIC
Esquerda
Direita
return
return
start
pin0=1
N
gosub Esquerda
gosub Direita
BASIC
Ciclos repetidos
for next
Sintaxe:
FOR varivel = inicio TO fim {STEP {-} incremento}
NEXT {varivel}
Varivel vai ser usada como um contador
Incio o valor inicial da varivel
Fim o valor final da varivel
Incremento um valor opcional que se sobrepe ao valor de
incremento normal do contador (+1). Se o incremento for
precedido de um -, ser considerado que Fim menor que
Inicio e, portanto, o valor de incremento subtrado cada vez
que o ciclo se realiza.
BASIC
Informao:
BASIC
Exemplo:
ciclo:
for b0 = 1 to 20
high 1
pause 500
low 1
pause 500
next b0
pause 2000
goto ciclo
BASIC
BASIC
BASIC
Outras instrues:
PAUSE milisegundos
Milisegundos uma varivel/constante (0-65535)
que especifica quantos milisegundos dura a pausa.