Prévia do material em texto
UNIVERSIDADE FEDERAL DO MARANHÃO – UFMA
CENTRO DE CIÊNCIAS EXATAS - CCET
CURSO DE ENGENHARIA ELÉTRICA
JESSICA SABRINA DE JESUS SOUSA
JOÃO PAULO CASTRO OLIVEIRA
I EXPERIMENTO
LABORATÓRIO DE APLICAÇÃO COM MICROCOMPUTADORES
SÃO LUÍS - MA
2018
JESSICA SABRINA DE JESUS SOUSA
JOÃO PAULO CASTRO OLIVEIRA
I EXPERIMENTO
LABORATÓRIO DE APLICAÇÃO COM MICROCOMPUTADORES
SÃO LUIS - MA
2018
Relatório apresentado com o objetivo de
avaliar os conhecimentos referente à cadeira
de Laboratório de Aplicação com
Microcomputadores, ministrada pelo Prof.
Denivaldo Lopes.
LISTA DE FIGURAS
Figura 1. Cruzamento de duas ruas ................................................................................................. 9
Figura 2. Diagrama de blocos do experimento 1.............................................................................. 9
Figura 3. Comando de um tanque de produtos químicos .............................................................. 12
Figura 4. Diagrama de blocos do experimento 2 ........................................................................... 13
Figura 5. Diagrama de blocos do experimento 3 ........................................................................... 17
LISTA DE TABELAS
Tabela 1. Tabela Verdade do experimento 1 ................................................................................... 9
Tabela 2. Tabela Verdade do experimento 2 ................................................................................. 13
Tabela 3. Tabela Verdade do experimento 3 ................................................................................. 17
SUMÁRIO
1. INTRODUÇÃO ..................................................................................................................................... 6
1.1 Data e Local dos Experimentos ...................................................................................................... 6
1.2 Contexto Tecnológico.................................................................................................................... 6
1.3 Material Utilizado ......................................................................................................................... 8
1.4 Metodologia ................................................................................................................................. 8
2. DESENVOLVIMENTO ........................................................................................................................... 8
2.1 Experimento 1: ............................................................................................................................. 8
2.2 Experimento 2: ........................................................................................................................... 12
2.3 Experimento 3: ........................................................................................................................... 16
3. ANÁLISE DOS RESULTADOS ............................................................................................................... 20
4. CONCLUSÃO ..................................................................................................................................... 21
5. REFERÊNCIAS BIBLIOGRÁFICAS ......................................................................................................... 21
1. INTRODUÇÃO
A ferramenta CodeWarrior se configura com um ambiente de desenvolvimento
integrado (IDE) para edição, compilação e depuração de software desenvolvido pela
corporação Freescale Semiconductor (manufaturadora de semicondutores), para vários
microcontroladores, microprocessadores e sinal controlados voltados para os mercados
de sistemas embarcados e comunicações para seus chips.
Em se tratando de linguagens de programação necessária para tal
desenvolvimento, as mais usadas para o uso em microcontroladores são as linguagens
C e Assembly. É possível a ativação de um LED com a linguagem de programação
C e assembly, dentre outras infinitas possibilidades de uso. A programação embarcada
refere-se ao estudo de programação em microcontroladores e microprocessadores para
controlar seus periféricos e manipular circuitos externos. A diferença entre programação
em um dispositivo PC ou eletrônico comum e de um embarcado, são as limitações de
recursos, como falta de memória, falta de um sistema operacional completo, limitações
nas formas de comunicação com o mundo externo e requisitos limitados de tempo de
resposta para realizar uma tarefa que deve ser tratado pelo sistema embarcado. Em
geral, só se conta com poucos serviços básicos providos pelo hardware ou por
um software básico. Sistemas embarcados são projetados para executar tarefas
específicas, que comparado a um computador que tem uma finalidade de realização de
multitarefas.
Estes conceitos se desenvolverão melhor com o uso de tais ferramentas no
decorrer da apresentação deste relatório. Apresentaremos as etapas do desenvolvimento
de projetos voltados para programação embarcada, utilizando resumidamente o Kit de
desenvolvimento para família HCS12 em adição com o ambiente de desenvolvimento
integrado (CodeWarrior). Resolveremos, dessa forma, as situações-problema propostas.
1.1 Data e Local dos Experimentos
Os experimentos aqui citados, foram realizados no dia 12 de setembro de 2018
no laboratório de aplicações de microcontroladores.
1.2 Contexto Tecnológico
Um microcontrolador pode ser definido como um single-chip computer
(computador em um único chip), microcomputer, ou ainda como embedded controller. O
termo MCU (Micro Controller Unit) também é bastante utilizado para se designar esse
dispositivo. No mesmo chip estão integrados uma CPU, também chamada de core
(núcleo), e circuitos auxiliares (periféricos) como memória de programa, memória de
dados, circuito de clock, interface de comunicação serial, temporizadores/contadores,
portas de I/O, etc. Esses diferentes recursos embutidos em um microcontrolador variam
em função do modelo e do fabricante. É uma tarefa do desenvolvedor especificar o
microcontrolador mais adequado para cada aplicação, neste experimento utilizaremos o
HCS12 por sua característica didática.
O HCS12 é uma família de microcontroladores da Freescale Semiconductor. Tem
dois acumuladores de 8 bits A e B (referido como um único acumulador de 16 bits, D,
quando A e B estão em cascata, de modo a permitir operações envolvendo 16 bits ),
dois registradores de 16 bits X e Y, um contador de programa de 16 bits, um ponteiro de
pilha de 16 bits e um Registro de Código de Condição de 8 bits . Ao contrário do 68HC11,
o processador possui caminhos de dados internos de 16 bits.
O Kit de Desenvolvimento HCS12 é uma ferramenta econômica para desenvolver
código e avaliá-lo em MCUs da família HCS12 Dx, A e B. Este kit fácil de encomendar
combina o Multilink do modo de depuração em segundo plano (BDM, Background Debug
Mode) e um painel de avaliação (EVB). O EVB simplifica a avaliação do usuário de
hardware e software protótipo, fornecendo o tempo essencial de MCU e circuitos de E / S,
bem como uma área de protótipopara permitir a interface personalizada. O BDM Multilink
faz a interface com o EVB através do conector BDM de 6 pinos para emulação em tempo
real e programação rápida de flash.
Em se tratando da placa de avaliação MCS12DP256 utilizada, temos como
características:
▪ Assembler, depurador de nível de montagem, vinculador e programador
▪ 256K Bytes FLASH
▪ Área de prototipagem
▪ Conectores de cabeçalho para acesso às linhas de E / S e barramento do MCU
▪ Comunicações RS232
▪ Comunicação CAN
▪ Multilink BDM
▪ Ferramenta de desenvolvimento universal para todos os BDM 68HC12s e HCS12s
▪ Emulação e depuração em tempo real no circuito
▪ Programação rápida no circuito
▪ Detecta automaticamente a frequência
▪ Tamanho discreto pequeno (aproximadamente 3 "x 2" x 3/4 ")
▪ Suporta alvos de 2 V a 5,5 V
▪ Edição Especial, HC(S) 12 Ambiente de Desenvolvimento Integrado CodeWarrior
▪ Suporte para programação de debugger, assembler, linker e flash
▪ Compilador de Avaliação C
1.3 Material Utilizado
Lista de materiais:
• Hardware:
- Microcomputador (processador core i5-XXXX, RAM 8 GB, HD 1TB, Monitor 17”);
- Kit de desenvolvimento para HCS12: APS12C128SLK [Ref1];
- Kit de desenvolvimento para HCS12 (placa de expansão): SLK0109UG [Ref2];
• Software:
- Sistema operacional: Windows 7 64 bits;
- Ambiente de desenvolvimento integrado (IDE): CodeWarrior versão 5.1;
1.4 Metodologia
O trabalho é desenvolvido para os seguintes problemas em 3 etapas: definir
soluções por meio da álgebra booleana, aplicar respectivamente ao programa
CodeWarrior com a linguagem C e teste na placa.
A primeira etapa, analisando cada problema proposto, é desenvolvida
naturalmente com tabela verdade, seguidamente dos mapas de Karnaugh e com estes
definindo-se as equações booleanas para cada uma das n saídas.
Na segunda etapa com o software indicado, faz-se configuração de entradas e
saídas de cada variável criada nos respectivos pinos selecionados, seguidamente aplica-
se o código na linguagem C, mesclando as funcionalidades de cada variável. Nos casos
decorrentes todas as equações booleanas são representadas por ifs e dentro de um loop
infinito que sempre testará a entrada na placa. Finalizado se faz o teste do programa no
kit com os leds representando as saídas.
2. DESENVOLVIMENTO
2.1 Experimento 1:
Nesta primeira parte, temos como objetivo elaborar e escrever um programa em C
para HCS12 no ambiente CodeWarrior, além de testá-lo no kit APS12 da freescale. Nossa
problemática se norteia na implementação de um sistema de semáforo, para um
cruzamento de duas ruas, como ilustra a imagem abaixo:
Figura 1. Cruzamento de duas ruas
Dessa forma, definimos as possibilidades de operação desse sistema, sabemos
que existem dois sensores localizados na Rua A e na Rua B, respectivamente, que são
usados para detecção de veículos nas duas ruas. Com isso, podemos dizer que quando
não há veículos em ambas ruas, os sinais verdes da Rua A e vermelho da Rua B estão
acionados, em contrapartida os sinais vermelhos da Rua A e verde da Rua B estão
desligados, caracterizando a Rua A como preferencial. Da mesma forma ocorre quando
há veículos em ambas as ruas ou somente na Rua A. E, finalmente, quando não existem
veículos na Rua A e existem na Rua B, os sinais vermelhos da Rua A e verde da Rua B
estão acionados, além dos sinais verde da Rua A e vermelho da Rua B estarem
desligados.
Observe que, analisando com cuidado, o sinal verde da Rua A equivale ao sinal
vermelho da Rua B, assim como os sinais verde da Rua B e vermelho da Rua A também.
Assim, reduzimos o número de saídas de quatro para duas, otimizando a solução. Agora,
para o melhor desenvolvimento do projeto, sintetizamos o problema no diagrama de
blocos abaixo:
Figura 2. Diagrama de blocos do experimento 1
Atribuiu-se como entrada o Sensor A (sensor localizado na Rua A) e Sensor B
(sensor localizado na Rua B). Temos, também, que as saídas foram identificadas, são
elas: sinal principal verde / secundário vermelho, que chamaremos agora somente de
LED1, e o sinal principal vermelho / secundário verde, que chamaremos agora somente
de LED2.
Nesta etapa, necessitamos de uma lógica do problema, para aplicarmos no
desenvolvimento do código do programa em linguagem C. Assim, construímos a tabela
verdade da problemática abaixo, incluindo todas as possibilidades deste.
SENSOR A (A) SENSOR B (B) LED1 LED2
0 0 1 0
0 1 0 1
1 0 1 0
1 1 1 0
Tabela 1. Tabela Verdade do experimento 1
Dessa tabela, pode-se extrair as expressões que regem as saídas em função das
entradas por meio de mapas de Karnaugh:
• Para encontrar Verde A e Vermelho B:
A
B 0 1
0 1 1
1 0 1
Assim obtemos a seguinte expressão: LED1 = A + (B!)
• Para encontrar Vermelho A e Verde B:
A
B 0 1
0 0 0
1 1 0
Assim obtemos a seguinte expressão: LED2 = (A!)B
Nesta altura do desenvolvimento do projeto, já é possível rescrever o código
apropriado, que será apresentado abaixo:
/** ###################################################################
** Filename : Project_3.c
** Project : Project_3
** Processor : MC9S12C128CFU16
** Version : Driver 01.14
** Compiler : CodeWarrior HC12 C Compiler
** Date/Time : 05/09/2018, 23:11
** Abstract :
** Main module.
** This module contains user's application code.
** Settings :
** Contents :
** No public methods
**
** ###################################################################*/
/* MODULE Project_3 */
/* Including needed modules to compile this module/procedure */
#include "Cpu.h"
#include "Events.h"
#include "P1.h"
#include "P2.h"
#include "S1.h"
#include "S2.h"
#include "led1.h"
#include "led2.h"
/* Include shared modules, which are used for whole project */
#include "PE_Types.h"
#include "PE_Error.h"
#include "PE_Const.h"
#include "IO_Map.h"
/* User includes (#include below this line is not maintained by Processor Expert) */
void main(void)
{
/* Write your local variable definition here */
/*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
PE_low_level_init();
/*** End of Processor Expert internal initialization. ***/
/* Write your code here */
for(;;){
if(SensorA_GetVal()!=0 || SensorB_GetVal()==0) /*LED1 = A + (B!)*/
led1_ClrVal();
else
led1_SetVal();
;
if(SensorA_GetVal()==0 && SensorB_GetVal()!=0)/*LED2 = (A!)B
led2_ClrVal();
else
led2_SetVal();
}
/*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/
for(;;){}
/*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/
} /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/
/* END Project_3 */
/*
** ###################################################################
**
** This file was created by Processor Expert 3.02 [04.44]
** for the Freescale HCS12 series of microcontrollers.
**
** ###################################################################
*/
2.2 Experimento 2:
Nesta segunda parte, temos o mesmo objetivo de elaborar e escrever um
programa em C para HCS12 no ambiente CodeWarrior, testaremos no mesmo Kit. Porém
nossa problemática agora é de criar um sistemacomputacional que comande o
funcionamento de uma eletroválvula de entrada, uma eletroválvula de saída e um
interruptor de liga e desliga.
Figura 3. Comando de um tanque de produtos químicos
Para melhor implementação do projeto, adicionamos mais dois níveis, assim
teremos os níveis Alto, Médio e Baixo, que são, na prática, sensores que indicam a
quantidade de líquido contido no reservatório, além disso, temos um interruptor I, que liga
ou desliga o sistema. Dessa forma, pode-se determinar as condições de operação do
tanque. Temos que:
➢ Quando I for acionado, liga-se o sistema.
➢ Com I acionado, se o nível A estiver acionado, a eletroválvula de saída é
ligada e a de entrada ligadas, para evitar o transbordamento.
➢ Com I acionado e nível A desligado, se o nível M estiver acionado, a
eletroválvula de saída e de entrada estarão ligadas.
➢ Com I acionado e nível A e M desligado, se o nível B estiver acionado ou
não, a eletroválvula de saída é desligada e de entrada estará ligada, para
evitar que a bomba queime.
➢ Com I desligado, se nível A ou M ou B estiver acionado, a eletroválvula de
saída é ligada e a de entrada desligada.
➢ Com I desligado, se todos os níveis estiverem desligados, a eletroválvula
de saída e de entrada estarão desligadas.
Agora, para o melhor desenvolvimento do projeto, sintetizamos o problema no
diagrama de blocos abaixo:
Figura 3. Diagrama de blocos do experimento 2
Atribuiu-se como entrada os sensores de níveis, assim temos como entrada o
Nível Alto (A), Nível Médio (M) e Nível Baixo (B), além da entrada de controle (I). E como
saída temos as eletroválvulas de entrada e saída.
Nesta etapa, necessitamos de uma lógica do problema, para aplicarmos no
desenvolvimento do código do programa em linguagem C. Assim, construímos a tabela
verdade da problemática abaixo, incluindo todas as possibilidades deste.
I
Nível Alto
(A)
Nível Médio
(M)
Nível
Baixo (B)
Eletroválvula de
Entrada (E)
Eletroválvula de
Saída (S)
0 0 0 0 0 0
0 0 0 1 0 1
0 0 1 0 0 1
0 0 1 1 0 1
0 1 0 0 0 1
0 1 0 1 0 1
0 1 1 0 0 1
0 1 1 1 0 1
1 0 0 0 1 0
1 0 0 1 1 0
1 0 1 0 1 1
1 0 1 1 1 1
1 1 0 0 0 1
1 1 0 1 0 1
1 1 1 0 0 1
1 1 1 1 0 1
Dessa tabela, pode-se extrair as expressções que regem as saídas em função
das entradas por meio de mapas de Karnaugh:
Para encontrar Eletroválvula de Entrada (E):
IA
MB 00 01 11 10
00 0 0 0 1
01 0 0 0 1
11 0 0 0 1
10 0 0 0 1
Para encontrar Eletroválvula de Saída (S):
IA
MB 00 01 11 10
00 0 1 1 0
01 1 1 1 0
11 1 1 1 1
10 1 1 1 1
Assim obtemos as seguintes expressões:
E = I(A!)
S = A+M+B(I!)
Nesta altura do desenvolvimento do projeto, já é possível rescrever o código
apropriado, que será apresentado abaixo:
/** ###################################################################
** Filename : Eletrovalvula.c
** Project : Eletrovalvula
** Processor : MC9S12C128CFU16
** Version : Driver 01.14
** Compiler : CodeWarrior HC12 C Compiler
** Date/Time : 08/09/2018, 12:35
** Abstract :
** Main module.
** This module contains user's application code.
** Settings :
** Contents :
** No public methods
**
** ###################################################################*/
/* MODULE Eletrovalvula */
/* Including needed modules to compile this module/procedure */
#include "Cpu.h"
#include "Events.h"
#include "I.h"
#include "A.h"
#include "M.h"
#include "B.h"
#include "Entrada.h"
#include "Saida.h"
/* Include shared modules, which are used for whole project */
#include "PE_Types.h"
#include "PE_Error.h"
#include "PE_Const.h"
#include "IO_Map.h"
/* User includes (#include below this line is not maintained by Processor Expert) */
void main(void)
{
/* Write your local variable definition here */
/*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
PE_low_level_init();
/*** End of Processor Expert internal initialization. ***/
/* Write your code here */
for(;;){
if(I_GetVal()!=0 && A_GetVal()==0){
Entrada_ClrVal();
}
else{
Entrada_SetVal();
}
if(A_GetVal()!=0 || M_GetVal()!=0 || (B_GetVal()!=0 || I_GetVal()==0)) {
Saida_ClrVal();
}else{
Saida_SetVal();
}
}
/*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/
for(;;){}
/*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/
} /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/
/* END Eletrovalvula */
/*
** ###################################################################
**
** This file was created by Processor Expert 3.02 [04.44]
** for the Freescale HCS12 series of microcontrollers.
**
** ###################################################################
* /
2.3 Experimento 3:
Neste último experimento, temos o mesmo objetivo de elaborar e escrever um
programa em C para HCS12 no ambiente CodeWarrior, testaremos no mesmo Kit. Porém
nossa problemática agora é elaborar um sistema computacional que selecione
prioritariamente o preenchimento de uma correia transportadora de uma indústria a partir
de alimentadores de pátios A, B, C e D.
Dessa forma, definimos as possibilidades de operação desse sistema, sabemos
que o preenchimento das correias transportadora é dada por meio da prioridade de cada
pátio, tendo que:
➢ Pátio A: Prioridade 1 (maior prioridade)
➢ Pátio B: Prioridade 2
➢ Pátio C: Prioridade de 3
➢ Pátio D: Prioridade 4 (menor prioridade)
Assim, cada pátio detém um sensor que indicará se este se encontra cheio ou
vazio, assim cada correia trabalhará sozinha, caso o Pátio A esteja cheio, somente a
correia 1 funcionará, caso Pátio A esteja vazio e o Pátio B cheio, somente a correia 2
funcionará, caso Pátio A e Pátio B esteja, vazios e o Pátio C cheio, somente a correia 3
funcionará, caso Pátio A, Pátio B e Pátio C estejam vazios e o Pátio D cheio, somente a
correia 4 funcionará, caso todos os pátios estejam vazios, a coreia funcionará sozinha.
Agora, para o melhor desenvolvimento do projeto, sintetizamos o problema no
diagrama de blocos abaixo:
Figura 3. Diagrama de blocos do experimento 3
Atribuiu-se como entrada os sensores dos pátios, assim temos como entrada o
Pátio A, Pátio B, Pátio C e Pátio D. E como saída temos as correias 1, 2, 3 e 4.
Nesta etapa, necessitamos de uma lógica do problema, para aplicarmos no
desenvolvimento do código do programa em linguagem C. Assim, construímos a tabela
verdade da problemática abaixo, incluindo todas as possibilidades deste.
Pátio A
(A)
Pátio B
(B)
Pátio C
(C)
Pátio D
(D)
Correia
1 (C1)
Correia
2 (C2)
Correia
3 (C3)
Correia 4
(C4)
0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 1
0 0 1 0 0 0 1 0
0 0 1 1 0 0 1 0
0 1 0 0 0 1 0 0
0 1 0 1 0 1 0 0
0 1 1 0 0 1 0 0
0 1 1 1 0 1 0 0
1 0 0 0 1 0 0 0
1 0 0 1 1 0 0 0
1 0 1 0 1 0 0 0
1 0 1 1 1 0 0 0
1 1 0 0 1 0 0 0
1 1 0 1 1 0 0 0
1 1 1 0 1 0 0 0
1 1 1 1 1 0 0 0
Dessa tabela, pode – se extrair as expressões que regem as saídas em função das
entradas por meio de mapas de Karnaugh:
Para encontrar Correia 1 (C1):
AB
CD 00 01 11 10
00 1 0 1 1
01 0 0 1 1
11 0 0 1 1
10 0 0 1 1
Para encontrarCorreia 2 (C2):
AB
CD 00 01 11 10
00 0 1 0 0
01 0 1 0 0
11 0 1 0 0
10 0 1 0 0
Para encontrar Correia 3 (C3):
AB
CD 00 01 11 10
00 0 0 0 0
01 0 0 0 0
11 1 0 0 0
10 1 0 0 0
Para encontrar Correia 4 (C4):
AB
CD 00 01 11 10
00 0 0 0 0
01 1 0 0 0
11 0 0 0 0
10 0 0 0 0
Assim obtemos a seguinte expressão:
C1 = A + (C+D+B)!
C2 = (A!)B
C3 = (A+B)!C
C4 = (A+B+C)!D
Nesta altura do desenvolvimento do projeto, já é possível rescrever o código
apropriado, que será apresentado abaixo:
/* Including needed modules to compile this module/procedure */
#include "Cpu.h"
#include "Events.h"
#include "A.h"
#include "B.h"
#include "C.h"
#include "D.h"
#include "LED1.h"
#include "LED2.h"
#include "LED3.h"
#include "LED4.h"
/* Include shared modules, which are used for whole project */
#include "PE_Types.h"
#include "PE_Error.h"
#include "PE_Const.h"
#include "IO_Map.h"
/* User includes (#include below this line is not maintained by Processor Expert) */
void main(void)
{
/* Write your local variable definition here */
/*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
PE_low_level_init();
/*** End of Processor Expert internal initialization. ***/
/* Write your code here */
for(;;){
if(A_GetVal()!=0 || (B_GetVal()==0 && C_GetVal()==0 && D_GetVal()==0)) /*led1*/
LED1_ClrVal();
else
LED1_SetVal();
if(A_GetVal()==0 && B_GetVal()!=0)/*led2*/
LED2_ClrVal();
else
LED2_SetVal();
if(A_GetVal()==0 && B_GetVal()==0 && C_GetVal()!=0)/*led3*/
LED3_ClrVal();
else
LED3_SetVal();
if(A_GetVal()==0 && B_GetVal()==0 && C_GetVal()==0 && D_GetVal()!=0)
LED4_ClrVal();
else
LED4_SetVal();
}
/*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/
for(;;){}
/*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/
} /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/
/* END CorreiaTransportadora */
/*
** ###################################################################
**
** This file was created by Processor Expert 3.02 [04.44]
** for the Freescale HCS12 series of microcontrollers.
**
** ###################################################################
*/
3. ANÁLISE DOS RESULTADOS
O primeiro projeto com o semáforo apresenta led da rua preferencial ligado a
qualquer instante, com exceção de quando a rua secundária apresenta carro e a
preferencial não, ligando seu respectivo led. Os sensores no caso são equivalentes a
informação de SW1 e SW2.
Com a eletroválvula ocorre de informar o enchimento do tanque por meio dos
sensores e botão on/off utilizados no DIP Switch(SW3), testando o led da eletroválvula de
entrada sempre estará desligado quando sistema for desligado e quando ligado, apenas
em situação em que o tanque não está em nível alto. Para o led da eletroválvula de saída
somente led apagado quando não há nível do líquido e quando sistema ligado ainda
apresenta baixo nível, logo após início do processo.
Por fim com a correia transportadora utilizou-se do DIP Switch (SW3) e todos os
leds da porta B, representado em qual pátio a correia estará para transportar o minério.
De tal modo como nas na tabela verdade sabe-se que sistema é de prioridade, assim
bastou-se um bit mais significativo estar ativado para que o led acendesse para informar
onde a correia está, além de estar no pátio A(MSB), quando todos os pátios estiverem
vazios.
4. CONCLUSÃO
Em conformidade às situações foi observado com os casos que todos necessitam
somente das equações booleanas aplicadas com a linguagem C no software
CodeWarrior, além das utilizações de set e clear nas saídas estão relacionadas
intimamente ao uso do kit APS120, não à linguagem em si. Todas as situações
mostraram suficiente apenas o uso dos leds da porta B e de suas entradas em SW3 ou
push buttons SW1 e SW2, estes últimos apenas no semáforo. N
Conclui-se então que cada solução, sem utilizar a expansão do kit, seriam
implementadas analogamente à um sistema real de sensores e lograriam êxito, assim
expostas com sucesso nas simplificadas aplicações do microcontrolador HCS12
requisitadas.
5. REFERÊNCIAS BIBLIOGRÁFICAS
<https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_embarcada>. Acessado em
21/11/2018.
<http://www.dca.fee.unicamp.br/courses/EA871/2s2014/sites/default/files/pdf/Apostila%20
CW10.pdf>. Acessado em 21/11/2018.
<http://cache.freescale.com/files/student_learning_kits/doc/fact_sheet/APS12C128SLK_F
S.pdf>. Acessado em 21/11/2018.
<http://paginapessoal.utfpr.edu.br/gustavobborba/material/files/mc_nocoesGerais.pdf>.
Acessado em 21/11/2018.
<https://en.wikipedia.org/wiki/Freescale_68HC12>. Acessado em 21/11/2018.
<https://www.nxp.com/products/processors-and-microcontrollers/additional-processors-
and-mcus/8-16-bit-mcus/16-bit-s12-and-s12x-mcus/hcs12-development-
kit:M68KIT912DP256>. Acessado em 21/11/2018.