Curso básico de linguagem C para microcontroladores PIC. Índice

Tamanho: px
Começar a partir da página:

Download "Curso básico de linguagem C para microcontroladores PIC. Índice"

Transcrição

1 Índice Linguagem C... 3 Programação de Microcontroladores em linguagem C... 3 Princípio de programação - Álgebra Booleana Operações Representação Gráfica das Portas Lógicas... 5 Introdução à Linguagem C - Variáveis Tipos de Dados Qualificadores Declaração de variáveis Operadores matemáticos - Aritméticos Relacionais Operadores Lógicos bit-a-bit Operadores Lógicos relacionais Declarações de controle - Decisão Comando IF Decisão Comando IF-ELSE Decisão SWITCH-CASE Laço FOR Laço WHILE Laço DO-WHILE Ponteiros Matrizes O Ambiente MikroC Criando um novo projeto Primeiro Projeto Gravando o projeto Acionamento de Botões Estudo dos Timers e Interrupções - Timer

2 - Timer Timer Funções Debug no MikroC Display de Cristal Líquido (LCD) Conversão A/D Comunicação Serial (USART) EEPRON Interna PWM

3 Linguagem C É uma linguagem de programação de propósito geral, estruturada, imperativa, procedural de alto e baixo nível, criada em 1972 por Dennis Ritchie no AT&T Bell Labs, para desenvolver o sistema operacional UNIX (que foi originalmente escrito em Assembly). Desde então, espalhou-se por muitos outros sistemas e tornou-se uma das linguagens de programação mais usadas influenciando muitas outras linguagens, especialmente o C++, que foi desenvolvida como uma extensão para C. Fonte: WIKIPEDIA Programação de Microcontroladores em linguagem C Atualmente, a maioria dos microcontroladores existentes nos mercado contam com compiladores em C para o desenvolvimento de software, pois a linguagem C permite a construção de programas e aplicações muito mais complexas do que o Assembly. O compilador C tem a capacidade de traduzir com alto grau de inteligência e velocidade o código em C para o código de máquina, portanto podemos dizer que a linguagem C possui grande eficiência. Essa eficiência da linguagem C faz com que o programador preocupe-se mais com a programação em si e o compilador assume responsabilidades como localização da memória, operações matemáticas e lógicas, verificação de bancos de memórias e outros.. 3

4 Álgebra Booleana Princípio de Programação Na matemática e na ciência da computação, as álgebras booleanas são estruturas algébricas que captam a essência das operações lógicas E, OU e NÃO (NAD, OR e NOT), bem como das operações da teoria de conjuntos soma, produto e complemento. Álgebra Booleana deriva do nome de George Boole, matemático inglês que foi o primeiro a definí-las como parte de um sistema de código em meados do século XIX. Foram aplicadas pela primeira vez em eletrônica por Claude Shannon no século XX. Os operadores de álgebra booleana são frequentemente escritos com E, OU ou NÃO (mais comuns são os equivalentes em inglês, AND, OR ou NOT). Na descrição de circuitos podem ser utilizados NAND (NOT AND), NOR (NOT OR) e XOR (OR exclusivo). Operações: OR AND NOT XOR X Y S X Y S X S X Y S Representação Gráfica das Portas Lógicas: 4

5 CONT.: 5

6 Variáveis: Introdução à Linguagem C As variáveis podem conter letras e números, sempre começando com letras e não devem ter nome de palavras reservadas pelo compilador como, por exemplo, for, do, int, etc. Tipos de Dados: Dado: -char -int -float e double -void Representa: Caracteres Números inteiros Números decimais (ponto flutuante) Valores nulos Qualificadores: Qualificador -signed -unsigned -short -long Significado Sinalizado Não sinalizado Inteiro menor que o padrão Inteiro maior que o padrão Tipo Tamanho Valores signed char 8 bits -128 à 127 (unsigned) char 8 bits 0 à 255 (signed) short (int) 8 bits -128 à 127 unsigned short (int) 8 bits 0 à 255 (signed) int 16 bits à unsigned int 16 bits 0 à (signed) long (int) 32 bits à unsigned long (int) 32 bits 0 à float 32 bits (+-) 1, e -38 à (+-) 6, e 38 double 32 bits (+-) 1, e -38 à (+-) 6, e 38 long double 32 bits (+-) 1, e -38 à (+-) 6, e 38 * Palavras entre parenteses são opcionais. 6

7 Declaração de Variáveis: Um variável é declarada da seguinte forma: <qualificador> + <tipo de dado> + <nome da variável> + <valor>; onde o valor pode ou não ser inicializado. Exemplos: unsigned int x = 12345; int conta; short x1; Para atribuir valores às variáveis: conta = 100; (atribui-se o valor 100 à variável conta) x1 = 15; (atribui-se o valor 15 à variável x1) Operadores Matemáticos: Aritméticos: Operador Descrição Exemplo + Soma dos argumentos a + b - Subtração dos argumentos a - b * Multiplicação dos argumentos a * b / Divisão dos argumentos a / b % Resto da divisão (só pode ser utilizado com valores inteiros) a % b ++ Soma 1 ao argumento a++ -- Subtrai 1 ao argumento a-- 7

8 Relacionais: São utilizados para comparação entre argumentos e retornam uma resposta verdadeira ou falsa. Como em linguagem C não existe uma variável booleana para um resultado verdadeiro ou falso, todo valor igual a 0 será considerado falso e todo valor diferente de 0 (qualquer valor) será considerado verdadeiro. Operador Descrição Exemplo == Compara se igual a a == 5!= Compara se diferente de a!= 5 > Compara se maior que a > 5 < Compara se menor que a < 5 >= Compara se maior ou igual a a >= 5 <= Compara se menor ou igual a a <= 5 Operadores lógicos bit-a-bit: Operador Descrição & E (AND) OU (OR) ^ OU EXCLUSIVO (XOR) ~ Complemento (NOT) >> Deslocamento à direita << Deslocamento à esquerda Operadores lógicos relacionais: Operador Descrição && Comparação lógica E (AND) Comparação lógica OU (OR)! Comparação lógica Complemento (NOT) 8

9 Declarações de controle: Decisão Comando IF: O comando IF é utilizado para avaliar uma determinada condição e determinar se ela é verdadeira, caso seja, executa os bloco contido dentro desta condição. Sua forma geral é: if (exp) comando; Se o resultado da condição referente a expressão (exp) for verdadeiro, o comando será executado, caso contrário, o programa segue sem executar o comando. if (exp) comando1; comando2; Para o caso acima, a mesma explicação anterior se encaixa, sendo que agora, se a condição da expressão for verdadeira, serão executados os comando1 e comando2. Exemplos: if (conta>50) conta = 0; if (conta>50) conta = 0; conta1++; Decisão Comando IF-ELSE: Neste caso, a condição IF é utilizada da mesma forma acima, sendo que agora, se a condição da expressão for falsa a condição ELSE será executada. Sua forma é: if (exp) comando1; else comando2; Caso a expressão seja verdadeira, o comando1 será executado, caso seja falsa, o comando2 será executado. Exemplo: if (conta>0) conta = 0; conta1++; 9

10 else conta++; É possível também encadear diversos comando IF, como a forma abaixo: if (exp1) comando1; else if (exp2)comando2; else if(exp3) comando3;... Decisão SWITCH-CASE: Quando existem muitos valores para testar de uma só variável, o comando IF pode ficar meio confuso ou sem muita eficiência, para isso podemos utilizar o SWITCH-CASE. Segue sua forma: switch(variável) case valor1: comando1;... break; case valor2: comando2;... break; default: comandon; Neste caso, a variável será testada e se o valor dela for igual a valor1, o comando1 será executado, se for igual ao valor2, o comando2 será executado e assim por diante, agora se o valor for diferente de qualquer caso (case), o comandon será executado. Exemplo: switch(conta) case 10 : conta1++; break; case 15: conta2++; break; case 20: conta1++; conta2++ break; default: conta3++; Neste caso, se o valor de conta for igual a 10, conta1 será incrementado, se o valor for igual a 15, o valor de conta2 será incrementado, caso o valor de conta seja igual a 20, tanto conta1 quanto conta2 10

11 serão incrementados, para todos outros valores diferentes, o valor de conta3 será incrementado. Laço FOR: Este é um dos comandos de laço (loop ou repetição) disponíveis na linguagem C, a sua forma é: ou, for(inicialização;condição(término);incremento) comando: for(inicialização;condição(término);incremento) comando1; comando2; onde: inicialização: essa seção conterá uma inicialização para a variável; condição: responsável por contar a condição de finalização do laço; incremento: aqui pode conter uma ou mais variáveis para incremento da variável. Exemplo: int conta; int a = 0; Laço WHILE: for (conta=0;conta<=10;conta++) a = a + conta; Neste laço, os comandos serão repetidos enquanto a expressão for verdadeira, sua forma é: Exemplo: while (exp) comando; int x; while(x<=10) x++; 11

12 Laço DO-WHILE: Este laço é uma variação do comando WHILE, sendo que neste caso o comando será executado antes de testa se a condição é verdadeira. Sua forma é: do comando; while(exp); O comando será executado pelo menos uma vez antes de verificar a condição da expressão. Exemplo: int x; int y; do x++; while(y!=1); Ponteiros: Podemos dizer que um ponteiro é uma variável onde será armazenado o endereço de outra variável, ou seja, o ponteiro é um apontador para uma outra variável. A sintaxe para a declaração de uma variável ponteiro é: TIPO *NOME onde TIPO é um tipo de dados válido e NOME é o nome da variável. Exemplo: int *idade; 12

13 Exibindo uma string usando um ponteiro: Uma string é uma matriz de caracteres. Podemos usar um ponteiro para exibí-la assim: unsigned char *txt = "Exibindo uma string usando um ponteiro."; do Usart_Write(*txt); //envia um caracter pela serial *txt++; //incrementa o ponteiro delay_ms(100); while (*txt!= '\0'); Obs.: Ver exemplo serial3, página 48. Matrizes: Uma matriz é uma estrutura de dados que pode armazenar vários valores do mesmo tipo. A sintaxe para declarar uma matriz é: TIPO NOME[QUANTIDADE]; onde TIPO é o tipo dos dados que serão armazenados na matriz. Todos os dados colocados na matriz devem ser deste tipo. NOME é o nome a ser dado a matriz. Este nome identificará a matriz no código do programa. E QUANTIDADE é a quantidade máxima de itens a ser armazenados. Exemplos: int nr_de_livros[50]; //esta matriz pode armazenar até 50 valores do tipo int. float nota[30]; //esta matriz pode armazenar até 30 valores do tipo float. Os valores armazenados na matriz são chamados de "elementos da matriz". O primeiro elemento da matriz é indexado como item zero e o último é indexado como QUANTIDADE menos 1. Assim, para nossa matriz nota, mostrada no exemplo acima, o primeiro elemento é nota[0] e o último elemento é nota[29]. Você pode inicializar os elementos de uma matriz na sua declaração usando a sintaxe: int notas[5] = 60,70,35,50,68; Obs.: Ver exemplo na página

14 O Ambiente MikroC O compilador MikroC foi desenvolvido pela Mikroelektronika e é com ele que vamos desenvolver nossos projetos. Abaixo está a tela inicial do compilador. 14

15 Criando um novo projeto: O mikroc organiza as aplicações dentro de projetos, onde nele é possível ter vários arquivos fonte. A compilação do arquivo fonte somente poderá ser realizada se fizer parte de um projeto. Para criar um projeto basta clicar menu Project e em seguida escolha a opção New Project. A seguinte tela será apresentada: -Em Project Name, deve-se informar o nome do projeto; -Em Project Path, deverá conter o caminho da pasta onde o projeto será salvo; -Description é opcional e pode-se relatar algo sobre o projeto; -Em Device, deve-se escolher o dispositivo a ser utilizado no projeto; -Em Clock, informa-se a freqüência do cristal que será utilizado na montagem do circuito; -Em Device Flags, as informação são em relação à configuração dos fusíveis. 15

16 Definindo o projeto: -Project Name : PiscaLed -Project Path : \MikroC\Proj1\ -Description :... -Device : P16F877A -Clock : Device Flags: Default Circuito: Primeiro Projeto Estrutura básica de um programa em C utilizando o compilador mikroc: void main() //Este é o bloco principal do programa e é o único que a linguagem C precisa para funcionar. obs.: Tudo que vem precedido de // é chamado comentário e não é interpretado pelo compilador. Também pode-se fazer comentário assim: /* Isto é um comentário */ 16

17 Código do Projeto: void main() PORTD = 0; TRISD = 0, //Configura os pinos da porta D como saída while(1) PORTD = ~PORTD; delay_ms(1000); //Começo do loop (infinito) //Troca situação dos pinos na porta D //Tempo de atraso de 1 segundo Depois de escrevermos o código, devemos compilar o projeto para que possamos gravar no microcontrolador. A compilação se dá pressionando-se ctrl + F9 ou clicando no menu Project e escolher a opção Build, conforme abaixo. 17

18 Estando o projeto sem erros, as informações abaixo devem ser mostradas na parte de baixo do programa. Gravando o Projeto Utilizaremos, para gravar o programa no microcontrolador, o programa ICPROG como segue a figura abaixo: 18

19 Antes de gravarmos o programa, precisamos configurar o ICPROG para o correto funcionamento com a placa CUSCOPIC. Para isso, clica-se em Configuração e escolhe-se a opção 'Hardware' ou, diretamente, pressiona-se a tecla F3. A tela de 'Configurações de Hardware' aparecerá. Então, escolhe-se, em 'Programador:' a opção 'TAIT Serial Programmer', conforme acima e deve-se também em 'Comunicação' habilitar a opção 'Iverter MCLR'. Clica-se em 'OK' e o programa ICPROG estará pronto. Abrindo o programa: Vamos, então, escolher o dispositivo a ser gravado na janela destacada em vermelho, conforme abaixo: 19

20 Agora abriremos o programa referente ao nosso projeto. Clica-se em 'Arquivo' e escolhe-se a opção 'Abrir': Na janela que se abre a seguir, deveremos encontrar o arquivo do nosso projeto, que neste caso é o arquivo 'PiscaLed.hex'. O programa ICPROG terá a aparência parecida com a figura abaixo: 20

21 Identificação dos botões: -Ler Tudo: Usado para a leitura do conteúdo gravado no microcontrolador; -Programar Tudo: Usado para gravarmos o programa no microcontrolador; -Limpar Tudo: Usado para limparmos o conteúdo gravado no microcontrolador; -Verificar: Usado para fazer uma comparação do conteúdo gravado no microcontrolador com o programa aberto. Gravando o programa: Para gravar o programa no microcontrolador, pressionaremos, então o botão 'Limpar Tudo', para certificarmos que o microcontrolador estará pronto para o nosso programa e logo após, pressiona-se 'Programar Tudo'. Na janela que é mostrada, confirmamos a pergunta clicando em 'Sim'. 21

22 Após a gravação, se tudo estiver correto, a seguinte mensagem aparecerá: Pronto, nosso programa já está no microcontrolador. Projetos de fixação: -Este projeto faz piscar o led conectado ao pino 0 da porta D void main() TRISD.F0 = 0; //Configura o pino 0 da porta D com saída while (1) PORTD.F0 = 0; //Faz com que o pino 0 da Porta D tenha nível lógico 0 delay_ms(500); //Tempo de atraso de 500ms PORTD.F0 = 1; //Faz com que o pino 1 da porta D tenha nível lógico 1 delay_ms(500); //Tempo de atraso de 500ms -O projeto abaixo tem a mesma função, só que utiliza a diretiva #define para identificação, conforme abaixo: #define DirLed TRISD.F0 //Identifica a variável TRISD.F0 como DirLed #define Led PORTD.F0 //Identifica a variável PORTD.F0 como Led void main() DirLed = 0; //Configura o pino 0 da porta D com saída while (1) Led = 0; //Faz com que o pino 0 da Porta D tenha nível lógico 0 delay_ms(500); //Tempo de atraso de 500ms Led = 1; //Faz com que o pino 1 da porta D tenha nível lógico 1 delay_ms(500); //Tempo de atraso de 500ms 22

23 obs.: Os registradores especiais, TRISD, PORTD, PORTA, TRISA, INTCON, TMR0 e outros são tratados, pelo compilador, como variáveis, portanto, podemos atribuir valor e tratá-los exatamente como uma variável qualquer. Exercício proposto: -Fazer um programa onde todos os LEDS serão acesos em seqüência, exemplo: acende LED1, atraso de 300ms, acende LED2, outro atraso de 300ms e assim por diante até o LED8, em seguida fazer com que todos apaguem também começando do LED1 e terminando no LED8. 23

24 Definindo o projeto: -Project Name : Botao -Project Path : \MikroC\Proj2\ -Description :... -Device : P16F877A -Clock : Device Flags: Default Circuito: Acionamento de Botões 24

25 Código do Projeto: #define botao PORTD.F0 #define led PORTD.F1 void main() TRISD = 0x01; //Configura o pino 0 da porta D como entrada e o restante como saída PORTD = 0x00; //Zera toda a porta D while(1) //Loop principal if (botao == 1) //Compara o valor do pino 0 ao valor 1 (nível lógico alto) led = 1; //Sendo o valor igual a 1, então acende o led conectado ao //pino 1 da porta D. Projeto de fixação: #define botao PORTD.F0 #define led PORTD.F1 void main() TRISD = 0x01; PORTD = 0x00; //Configura o pino 0 da porta D como entrada e o restante como saída //Zera toda a porta D while(1) //Loop principal if (botao == 1) //Compara o valor do pino 0 ao valor 1 (nível lógico alto) //Sendo o valor igual a 1, executa os comandos do bloco led = 1; //Coloca em 1 o pino 1 da porta D, acendendo o LED delay_ms(1000); //Atraso de 1 segundo led = 0; //Coloca em 0 o pino 1 da porta D, apagando o LED 25

26 Estudo dos Timers e interrupções TIMER 0 O Timer 0 é um contador interno e pode contar estímulos externos ou contar internamente, utilizando o oscilador. Ele possui um prescaler de até 1:256 e tem 8 bits, ou seja, para um prescaler de 1:1, haverá um overflow (estouro) a cada 256 contagens (0 à 255). Para o controle do Timer 0, vamos utilizar os registros especiais OPTION_REG e INTCON, como segue: OPTION_REG Nome /RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0 Bit TOCS = 1: Incremento a cada transição no pino RA4/T0CKI. TOCS = 0: Incremento a cada ciclo de máquina. TOSE = 1: Incremento na borda de descida. TOSE = 0: Incremento na borda de subida. PSA = 1: Prescale aplicado ao WDT. PSA = 0: Prescale aplicado ao TMR0. PS2 PS1 PS0 TMRO WDT :2 1: :4 1: :8 1: :16 1: :32 1: :64 1: :128 1: :256 1:128 Para utilizarmos a interrupção do TMR0, devemos setar o registro INTCON.T0IE e também o registro INTCON.GIE (interrupção geral). Deste modo, toda vez que houver um estouro do TMR0, o flag INTCON.T0IF será setado, devendo ser limpo quando do tratamento da interrupção INTCON Nome GIE PEIE TOIE INTE RBIE T0IF INTF RBIF Bit

27 Contando um tempo com o Timer 0: Vamos supor que queremos contar um tempo com o timer 0 de 100us e o prescaler seja de 1:1. Neste caso, só temos a opção 1:1 quando aplicamos o prescaler ao WDT, então tanto o timer0 como o WDT estarão com prescaler de 1:1. Quando fazemos o prescaler igual a 1:1, estamos fazendo com que o TMR0 incremente seu valor em 1 a cada ciclo de máquina, ou seja, para um cristal de 4MHz, o incremento se dará a cada 1us. Então para um tempo de 100us, queremos que o TMR0 seja incrementado 100 vezes. O estouro do Timer0 ocorre quando o TMR0 chega à contagem 256, portanto, no nosso caso, haverá um estouro a cada 256us, mas o que queremos é 100us. Basta, então inicializarmos o TMR0 com o valor de = 156. Inserindo no código os valores de contagem: No MikroC, toda vez que ocorre uma interrupção, o programa entra na função 'interrupt' e nela serão tratadas as interrupções ocorridas. void interrupt() TMR0 = 156; INTCON = 0x20; // Valor inicial para o Timer0 // Seta T0IE e limpa T0IF void main() OPTION_REG = 0x80; TMR0 = 156; INTCON = 0xA0; // Atribui prescaler de 1:1 ao to TMR0 // Valor inicial para o Timer0 // Habilita a interrupção do TMR0, seta os registros GIE e T0IE while(1) Projeto: Façamos um LED piscar a cada 1 segundo utilizando o Timer0. Resolução: Então: 1 segundo = us ou 1 segundo = x 100us. 27

28 unsigned int cnt; //contador para acerto do tempo (ver 'unsigned int' na pág. 4) void interrupt() cnt++; TMR0 = 156; INTCON = 0x20; // Incrementa o valor de cnt a cada interrupção // Valor inicial para o Timer0 // Seta T0IE e limpa T0IF void main() OPTION_REG = 0x80; TMR0 = 156; INTCON = 0xA0; TRISD.F0 = 0; PORTD.F0 = 0; // Atribui prescaler de 1:1 ao to TMR0 // Valor inicial para o Timer0 // Habilita a interrupção do TMR0, seta os registros GIE e T0IE // Faz pino 0 da porta D como saída // Limpa o pino 0 da porta D, LED apagado cnt = 0; while(1) if (cnt >= 10000) // Executa o bloco abaixo SE a variável cnt for maior ou igual a PORTD.F0 = ~PORTD.F0; //Inverte a situação do pino 0 da porta D. cnt = 0; //Zera cnt para um novo ciclo. Ajustando alguns valores: Seguindo o exemplo acima, vamos ajustar os valores para um prescaler de 1:32, então ficaria assim: Valor Inicial para o TMR0 = = 99. Calculando 157 x 32 = 5024 x 200 = us <=> 1,005s unsigned cnt; void interrupt() cnt++; TMR0 = 99; INTCON = 0x20; //~ // Incrementa o valor de cnt a cada interrupção // Valor Inicial para o TMR0 // Seta T0IE e limpa T0IF void main() OPTION_REG = 0x84; TMR0 = 99; INTCON = 0xA0; // Atribui prescaler de 1:32 ao TMR0 // Valor Inicial para o TMR0 // Habilita a interrupção do TMRO 28

29 TRISD.F0 = 0; PORTD.F0 = 0; cnt = 0; // Inicializa cnt do if (cnt == 200) PORTD.F0 = ~PORTD.F0; cnt = 0; while(1); // Inverte os valores do pino 0 da porta D // Inicializa cnt novamente 29

30 TIMER 1 O Timer 1 tem suas características muito parecidas com as do Timer 0, sendo que ele também pode operar como contador ou temporizador, mas agora, com 16 bits. Desta forma, podemos concluir que um ciclo de contagem do Timer 1 se incia em 0 e termina em (equivalente aos 16 bits do contador com prescaler de 1:1). Registradores associados: Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 INTCON GIE PEIE TOIE INTE RBIE T0IF INTF RBIF PIR1 PSPIF ADIF RCIF RXIF SSPIF CCP1IF TMR2IF TMR1IF PIE1 PSPIE ADIE RCIE RXIE SSPIE CCP1IE TMR2IE TMR1IE TMR1L TMR1H Contador 8 bits Parte menos significativa Contador 8 bits Parte mais significativa T1CON - - T1CKPS1 T1CKPS2 T1OSCEN /T1SYNC TM1CS TMR1ON Registrador T1CON T1CKPS0 e T1CKPS1, são utilizados para selecionar 1 dos 4 fatores de prescaler. T1CKPS1 T1CKPS0 Prescaler 0 0 1: : : :8 T1OSCEN 1 - Habilita oscilador externo. O pino RC0 e RC1 são configurados como entrada e não poderão ser utilizados como I/O. 0 - Desabilita oscilador externo. RC0 opera como entrada para sinal externo para contagem (T1CKI), RC1 opera como I/O. /T1SYNC 1 - Sincronismo desligado. 0 - Sincronismo ligado. 30

31 TMR1CS 1 - Clock externo via RC0/T1CKI. 0 - Clock interno através dos ciclos de máquina. Registrador PIR1 Neste registrador são sinalizados os flgs das interrupções e estouro dos Timer1 e Timer2. Registrador PIE1 Registrador onde são habilitadas as interrupções. Calculando o tempo total de estouro do Timer 1: Na placa em questão, o microcontrolador está trabalhando com um cristal externo de 4MHz, então o tempo total do timer 1, utilizando o maior prescaler 1:8 e clock interno pelo ciclo de máquina, será: (65536 valor do contador) x (1/(FOSC/4)) x prescaler No caso, o valor do contador será 0 (queremos o tempo total), então: Tempo = ( ) x 1us x 8 Tempo = 524,28ms Tempo máximo com prescaler 1:1: Tempo = ( ) x 1us x 1 Tempo = 65,535ms Projeto: Configurar o timer 1 para fornecer um tempo de 100ms e com isso fazer todos os LED's da porta D piscarem a cada 1s. Resolução: Como com o prescaler 1:1, conseguiremos no máximo 65,535ms, então teremos que utilizar um prescaler de 1:2, então teremos: Tempo = (65536 TMR1) x (1/(FOSC/4) x prescaler 100ms = (65536 TMR1) x 1us x 2 31

32 TMR1 = = 0x3CB0 Código do projeto: unsigned short cnt; void interrupt() cnt++ ; PIR1.TMR1IF = 0; // Limpa o flag TMR1IF TMR1H = 0x3C; // Inicializa registro do Timer 1 TMR1L = 0xB0; void main() PORTD = 0x00; TRISD = 0; T1CON = 0x11; PIR1.TMR1IF = 0; TMR1H = 0x3C; TMR1L = 0xB0; PIE1.TMR1IE = 1; cnt = 0; INTCON = 0xC0; do if (cnt == 10) PORTD = ~PORTD; cnt = 0; while (1); // Inicializa PORTD // PORTD é saída // Ajuste do Timer1 // Limpa o flag TMR1IF // Inicializa o registro do Timer1 // Habilita a interrupção do Timer1 // inicializa cnt // habilita GIE, PEIE // se cnt é 10 (10 x 100ms = 1000ms) // Troca posição da porta D // zera cnt 32

33 Timer 2 O timer 2 também é um contador de 8 bits, sendo relacionado somente ao clock interno, a diferença deste timer é que ele não conta de 0 à 255(8 bits). Quem impõe o limite de contagem é o valor do registrador PR2. Então sempre que o registrador TMR2 tiver o mesmo valor que PR2, o timer é resetado, voltando a zero. Quando isto ocorre, um outro contador que chamamos de postcaler é incrementado e quando houver o término do da contagem do postcaler, uma interrupção será gerada. Registradores associados: Nome Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 INTCON GIE PEIE TOIE INTE RBIE T0IF INTF RBIF PIR1 PSPIF ADIF RCIF RXIF SSPIF CCP1IF TMR2IF TMR1IF PIE1 PSPIE ADIE RCIE RXIE SSPIE CCP1IE TMR2IE TMR1IE TMR2 Contador 8 bits T2CON - TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 PR2 Limite de contagem para o timer 2 Registrador T2CON: Seleção do postcaler do timer 2 TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 POTSCALER : : : : : : : : : : : : : : : :16 33

34 TMR2ON 1 - Timer 2 desativado. 0 - Timer 2 ativado. Seleção do prescaler: T2CKPS1 T2CKPS0 PRESCALER 0 0 1: : : :16 Obs.: As duas últimas opções são realmente iguais. Calculando o tempo total de estouro do Timer 2: Tempo = prescaler x postcaler x PR2 x (1/(FOSC/4)) Tempo = 16 x 16 x 255 x 1us Tempo = 65,28ms Projeto 1: Configurar o timer para piscar os leds da porta D a cada 1 segundo. Resolução: Neste caso, podemos utilizar os valores acima sendo que teremos um estouro do timer a cada 65,28ms. Assim, para que possamos fazer uma contagem de 1 segundo, deveremos multiplicar o valor por 15 que resultará em 979,2 ms, aproximadamente 0,97 s. Código do projeto: unsigned short cnt; void interrupt() if (PIR1.TMR2IF) cnt++ ; PIR1.TMR2IF = 0; TMR2 = 0; // incrementa cnt // limpa flag TMR2IF 34

35 void main() cnt = 0; PORTD = 0xFF; TRISD = 0; T2CON = 0xFF; TMR2 = 0; PR2 = 0xFF; PIE1.TMR2IE = 1; INTCON = 0xC0; // inicializa cnt // Inicializa PORTD // PORTD é saída // Ajustes do Timer2 // Inicializa registro do Timer2 // Inicializa PR2 com o valor 255 (não é necessário // para este caso, pois ele já tem com default esse // valor). // habilita interrupção // habilita GIE, PEIE while (1) // loop infinito if (cnt == 15) // se cnt = 15 PORTD = ~PORTD; // troca posição na PORTD cnt = 0; // zera cnt Projeto 2: Configurar o timer2 para uma interrupção a cada 50ms e fazer piscar os Leds da porta D a cada 1 segundo. Resolução: O valor máximo de estouro para o timer2 é de 65,28ms utilizando prescaler e postcaler 1:16, então para 50ms temos: PR2 = 195,31 <=>

36 Código do projeto: unsigned short cnt; void interrupt() if (PIR1.TMR2IF) cnt++ ; PIR1.TMR2IF = 0; TMR2 = 0; PR2 = 195; void main() cnt = 0; PORTD = 0xFF; TRISD = 0; T2CON = 0xFF; TMR2 = 0; PR2 = 195; PIE1.TMR2IE = 1; INTCON = 0xC0; // incrementa cnt // limpa flag TMR2IF // inicializa cnt // Inicializa PORTD // PORTD é saída // Ajustes do Timer2 // Inicializa registro do Timer2 // Inicializa PR2. // habilita interrupção // habilita GIE, PEIE while (1) // loop infinito if (cnt == 20) // se cnt = 15 PORTD = ~PORTD; // troca posição na PORTD cnt = 0; // zera cnt O importante é que o valor do PR2 TMR2 seja de 195, então podemos fazer: Código: unsigned short cnt; void interrupt() if (PIR1.TMR2IF) cnt++ ; PIR1.TMR2IF = 0; TMR2 = 55; PR2 = 200; // incrementa cnt // limpa flag TMR2IF 36

37 void main() cnt = 0; PORTD = 0xFF; TRISD = 0; T2CON = 0xFF; TMR2 = 55; PR2 = 200; PIE1.TMR2IE = 1; INTCON = 0xC0; // inicializa cnt // Inicializa PORTD // PORTD é saída // Ajustes do Timer2 // Inicializa registro do Timer2 // Inicializa PR2. // habilita interrupção // habilita GIE, PEIE while (1) // loop infinito if (cnt == 20) // se cnt = 15 PORTD = ~PORTD; // troca posição na PORTD cnt = 0; // zera cnt 37

38 Funções A linguagem C nos permite montar blocos de comandos para que possamos executá-los sem a necessidade de repeti-los no bloco principal. Esses blocos são chamados Funções e são parecidos com as chamadas de sub-rotinas em assembly. Nos exemplos anteriores, usamos uma função para chamar e tratarmos as interrupções, só que esta função é chamada pelo próprio compilador diratemente. Como declarar a função Tipo + Nome da Função (parâmetro) Bloco de Execução Ex: int.adição (int a, int b) Return a e b Chamando a função: Int adicao (int a, int b) return a + b; Void main ( ) Int c; TRISD = 0x00; PORTD = 0x00; c = adicao (2, 3) ; While (1 ) PORTD = c; 38

39 Debug no MikroC Clicando no menu Run e escolhendo-se a opção Start Debugger, a janela abaixo será mostrada Em Select variable from List, seleciona-se Portd e clica-se em Add, 39

40 Repete-se a operação para as variáveis a, b e c Para iniciar a simulação (Debugger) deve-se clicar no botão conforme a figura abaixo ou pode-se iniciar a simulação simplesmente pressionando-se a tecla F9 40

41 A tecla F7 faz a simulação passo a passo e F6 inicia o modo Run -Run/Pause Debugger (F6) -Stop Debugger (Ctrl = F12) -Step over (F8) -Step Out (Ctrl + F8) -Run to cursor (F4) -Step Into (F7) 41

42 Display de Cristal Líquido (LCD) Pinagem do LCD Pino Descrição 1 Gnd 2 +5V 3 Ajuste de contraste 4 Seleção RS: 1 - dado, 0 - escrita 5 Seleção R/W, 1 leitura, 0 - escrita 6 Em habilita p/ dado ou escrita em 1 ou transição 1 -> 0, 0 - desabita Barramento de Dados Endereços dos caracteres p/um LCD de 2 linhas e 16 colunas A 8B 8C 8D 8E 8F C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF 42

43 Biblioteca LCD no MikroC para o modo de 4 bits. LCD_Custon_Config: Inicializa e configura especificação. a linguagem do microcontrolador conforme Sintaxe: LCD_Custon_Config, (char=data.port, char db3, char db2, char db2, char db1, char d30, char+ctel-port, char res, char rw, char em); Onde: data port => porta ondeos dados db0,db1, db2 e db3serão conectados Ctel-port => porta onde os controles r5, w e em do LCD serão conectados Exemplo: LCD_Custom_Config(&Portd, 3,2,1,0, $Portb, R, 3, 4); LCD_Custon_Out: Escreve um texto no LCD na linha e coluna específica Sintaxe: LCD_Custon_Out (char row, char cal, char text) Onde: row = linha Col = coluna Exemplo: LCD_Custom_Out (1, 3, Hello ), LCD_Custon_Out_CP: Escreve um texto no LCD na posição corrente do cursor Sintaxe: LCD_Custon_Out_CP (char text) Exemplo: LCD_Custon_Out_CP ( Aqui ), LCD_Custon_Chr: Escreve um caracter numa linha e numa coluna específica no LCD Sintaxe: LCD_Custon_Chr (char row, char cal, char character) Exemplo: LCD_Custon_Chr (2, 3, r ), LCD_Custon_Chr_CP: Escreve um caracter na posição corrente do cursor Sintaxe: LCD_Custon_Chr_CP (char character) Exemplo: LCD_Custon_Chr_CP ( c ), LCD_ Custon_CMD: Envia um comando p/o LCD Sintaxe: LCD_Custon_CMD (char out_char), Onde: out_char = comando conforme tabela de comandos disponíveis: Exemplo: LCD_Custon_CMD (LCD-Clear), 43

44 Comandos Disponíveis Comando LCD_First_Row LCD_Second_Row LCD_Third_Row LCD_Fourth_Row LCD_Clear LCD_Return_Home LCD_Cursor_Off LCD_Underline_On LCD_Blink_Cursor_On LCD_Move_Cursor_Left LCD_Blink_Cursor_Right LCD_Turn_On LCD_Turn_Off LCD_Shift_Left LCD_Shift_Right Propósito Move o cursor p/1a.linha Move o cursor p/2a.linha Move o cursor p/3a.linha Move o cursor p/4a.linha Limpa o display Move cursor para a primeira coluna da primeira linha Desliga o cursor Liga o Underline no cursor Liga o modo piscante do cursor Move o cursor p/a esquerda sem mover o texto Move o cursor p/a direita sem mover o texto Liga o visor do LCD Desliga o visor do LCD sem perder os dados Move o texto p/a esquerda Move o texto p/a direita 44

45 Projeto LCD Escrever o texto LCD Display Test na primeira linha do display de LCD Resolução - Código do Projeto: char *text = "LCD Display Test"; void main() unsigned i; TRISB = 0; // PORTB is output Lcd_Custom_Config(&PORTB,7,6,5,4,&PORTB,1,2,0); // Initialize LCD on PORTB Lcd_Custom_Cmd(Lcd_CURSOR_OFF); // Turn off cursor Lcd_Custom_Out(1, 1, text); // Print text at LCD while(1) Lcd_Custom_Cmd(LCD_RETURN_HOME); Lcd_Custom_Cmd(LCD_UNDERLINE_ON); for(i=0;i<=15;i++) Lcd_Custom_Cmd(LCD_MOVE_CURSOR_RIGHT); Delay_ms(100); for(i=0;i<=15;i++) Lcd_Custom_Cmd(LCD_MOVE_CURSOR_LEFT); Delay_ms(100); Lcd_Custom_Cmd(LCD_TURN_OFF); Delay_ms(500); Lcd_Custom_Cmd(LCD_TURN_ON); 45

46 - Biblioteca ADC no MikroC Conversão A/D No MikroC utiliza-se a função abaixo para leitura do conversor AD do PIC ADC_Read(channel): Faz a leitura da conversão AD no canal especificado Sintaxe: ADC_Read (unsigned short channel) Onde channel = canal do provedor AD que desejamos ler Exemplo: Int ad ad= ADC_Ready (0), //lê o canal Ado do PIC e armazena o //valor na variavel ad. Esta função retorna um valor sem sinal de 10 bits, ou seja, de 0 à Projeto ADC: Fazer uma leitura do canal do PICe mostrar os 8 bits menos siginificativos nos LCD s conectados à porta D. Resolução: Primeiramente é necessário configurar o registrador ADCON1. Nele podemos definir o modo de trabalho dos pinos de A/D, conforme a tabela ADCON1 à seguir: ADCON1 PCFG <3 0> AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 VREF+ VREF A A A A A A A A VDD VSS 0001 A A A A VREF+ A A A AN3 VSS 0010 D D D A A A A A VDD VSS 0011 A A A A VREF+ A A A AN3 VSS 0100 D D D D A D A A VDD VSS 0101 D D D D VREF+ D A A AN3 VSS 0111 D D D D D D D D A A A A VREF+ VREF- A A AN3 AN D D A A A A A A VDD VSS 1010 D D A A VREF+ A A A AN3 VSS 1011 D D A A VREF+ VREF- A A AN3 AN D D D A VREF+ VREF- A A AN3 AN D D D D VREF+ VREF- A A AN3 AN D D D A D D D A VDD VSS 1111 D D D A VREF+ VREF- D A AN3 AN2 46

47 Queremos, então, utilizar a conversão no canal 0 (RA0), então atribuímos o ADCON1 com o valor 1110 ou 14 ou ainda OxOE. Código: unsigned int ad; void main() ADCON1 = 0x0E; // Configure analog inputs and Vref TRISA = 0xFF; // PORTA is input TRISD = 0x00; // Pins RB7, RB6 are outputs do ad = Adc_Read(0); // Get results of AD conversion PORTD = ad; // Send lower 8 bits to PORTD while(1); Projeto ADC 2: Mostrar o valor da conversão no LCD Código: unsigned int ad; char txt[7]; void main() ADCON1 = 0x0E; // Configure analog inputs and Vref TRISA = 0xFF; // PORTA is input Lcd_Custom_Config(&PORTB,7,6,5,4,&PORTB,1,2,0); // Initialize LCD on PORTB Lcd_Custom_Cmd(Lcd_CURSOR_OFF); // Turn off cursor do ad = Adc_Read(0); // Get results of AD conversion IntToStr(ad,txt); Lcd_Custom_Out(1, 1, "AD = "); Lcd_Custom_Out(1, 5, txt); // Print text at LCD while(1); 47

48 Comunicação Serial (USART) USART= Universal Synchronous Asynchronous Receiver Transmitter Biblioteca USART no MIKROC Usart_init: Inicializa o modo de comunicação serial informando o Band-Rate (Taxa de Comunicação) utilizado para a comunicação Sintaxe: Usart_init (BaudRate) Exemplo: Usart_init (9600), inicializa a serial com taxa de 9600 bps. Usart_Data_Ready: Verifica se existe algum byte no buffer de recepção serial, retornando 1 se existir e 0 se não existir nenhum byte. Sintaxe: var = Usart_Data_Ready( ), onde var = variável. Exemplo: if (Usart_Data_Ready()) //se existir algum byte no buffer, executa a expressão abaixo:...expressão... Usart_Read: Lê o valor armazenado no buffer de recepção serial. Sintaxe: recepção = Usart_read( ); Exemplo: if (Usart_Data_Ready()) //se existir algum byte no buffer, executa a expressão abaixo: receive = Usart_Read(); //armazena o byte recebido na variável //receive. Usart_Write: transmite um byte pela serial. Sintaxe: Usart_Write (byte chr), Exemplo: Usart_Write('A'); ou Usart_Write (61); // escreve o caracter A na serial. 48

49 Projeto Serial: 1-) Enviar o caracter A pela serial. Resolução: Neste caso, vamos atuar sobre o botão conectado ao pino 0 da porta D e a cada atuação, o caracter A será enviado para a serial. Utilizamos, agora, uma maneira diferente de verificar o acionamento de um botão que é através da biblioteca UTIL e o comando BUTTON, conforme segue: Sintaxe: unsigned short Button(unsigned short *port, unsigned short pin, unsigned short time, unsigned short active_state); Exemplo: if (Button(&PORTD,0,1,1))...comando... Para o exemplo acima, conclui-se que se o botão conectado ao pino 0 da porta D, por um tempo de 1 ms, o estado do pino mudará para nível lógico 1 e o que está entre chaves será executado. Código: void main() // Initializa o módulo USART (8 bit, baud rate 9600, no parity bit..) Usart_Init(9600); while (1) if (Button(&PORTD,0,100,1)) //Se o botão conectado ao pino 0 da Porta D, o comando //abaixo será executado. Usart_Write('A'); //Envia o caracter A pela serial. Obs.: Faça uma experíência modificando para baixo o tempo de 100ms. Projeto Serial 2: 2-) Receber um caracter do PC e enviá-lo novamente pela serial, além de acender o LED1 se o caracter for a e apagar o led se o caracter for b. 49

50 Código: unsigned short i; void main() TRISD = 0x00; PORTD = 0x00; // Initializa USART (8 bit, baud rate 9600, no parity bit..) Usart_Init(9600); do if (Usart_Data_Ready()) // Se algum dado for recebido i = Usart_Read(); // Lê o dado recebido Usart_Write(i); // Envia o dado pela serial novamente if (i=='a') PORTD.F0 = 1; //Se o caracter for 'a', acende o LED 1 if (i=='b') PORTD.F0 = 0; //Se o caracter for 'b', apaga o LED 1 while (1); Projeto Serial 3: 3-) Enviar a palavra MICROCONTROLADOR pela serial. Resolução: No MikroC, não existe uma maneira de enviarmos uma string, somente podemos enviar 1 caracter por vez, portanto podemos enviar assim: Usart_Write('M'); Usart_Write('I'); Usart_Write('C');... Ou podemos utilizar uma maneira mais usual que é a utilização de ponteiros que será mostrada no código abaixo: No caso de ponteiros, podemos dizer que cada caracter será colocado numa posição do ponteiro, ou seja, o caracter M será colocado ou estará apontando para a posição 0, o caracter I será colocado ou estará apontando para aa posição 1 e assim por diante até o final, sendo que a última posição será ocupada por um valor nulo e essa será a finalização do ponteiro. M I C R O C O N T R O L A D O R \

51 Código: unsigned char *txt = "MICROCONTROLADOR"; void main() // Initializa USART (8 bit, baud rate 9600, no parity bit..) Usart_Init(9600); do Usart_Write(*txt); //envia um caracter pela serial *txt++; //incrementa o ponteiro delay_ms(100); while (*txt!= '\0'); //Verifica a finalização do ponteiro Projeto Serial 4: 4-) Receber do PC a string LD1 e acender o LED1 e se a string for DL1, apagar o LED1. Resolução: Neste caso utilizaremos uma matriz com 4 posições ou 4 endereços (rec[4]) onde serão armazenados os valores recebidos pela serial, lembrando que é necessário sempre inicializarmos com 0 o posicionamento. No caso, a variável i será a responsável pelo posicionamento da matriz. Código: char rec[4]; short i; void trata_serial() if ((rec[0] == 'L') && (rec[1] == 'D') && (rec[2] == '1')) // Faz a comparação dos valores // armazenados na Matriz 'rec' PORTD.F0 = 1; if ((rec[0] == 'D') && (rec[1] == 'L') && (rec[2] == '1')) PORTD.F0 = 0; void main() TRISD = 0x00; PORTD = 0x00; 51

52 // Initializa USART (8 bit, baud rate 9600, no parity bit..) Usart_Init(9600); i=0; while(1) if (Usart_Data_Ready()) //Se existir um caracter no buffer da serial rec[i] = Usart_Read(); //O caracter será lido e colocado na matriz 'rec' i++; //Incrementa o valor da posição da matriz if (rec[i-1] == 0x0D) //Verifica se o valor armazenado na Matriz é // 0x0D (Código hexa para o ASCII <enter>) trata_serial(); // Sendo 0x0D, vai para a função trata_serial //for(i=0;i<=3;i++) // 'Limpa' a Matriz // rec[i] = '\0'; i=0; // Reinicializa o posicionamento da matriz 52

53 Biblioteca EEPRON EEPRON Interna EEPRON_Read: Lê um byte da memória EEPRON Sintaxe: Variável = EEPRON_Read (byte adress), OBS: O PIC 16F877A tem 256 bytes de memória EEPRON Exemplo: tmp = EEPRON_Read(0); //Lê a posição 0 e carrega o valor na variável tmp EEPRON_Write: Escreve um byte na memória EEPRON Sintaxe: EEPRON_Write (byte adress, byte dado) Exemplo: EEPRON_Write (0, 100); // escreve o valor 100 no endereço 0 da memória EEPRON. Projeto EEPRON: 1-) Escrever o valor 61 ('caracter a ) no endereço 0 da memória EEPRON, após ler o valor e escrever no LCD. Código: void main() Lcd_Custom_Config(&PORTB,7,6,5,4,&PORTB,1,2,0); // Initializa o LCD na PORTB Lcd_Custom_Cmd(Lcd_CURSOR_OFF); // Desliga o cursor EEPROM_Write(0,0x61); // Escreve o código 0x61 ('caracter 'a') na EEPROM do PIC Lcd_Custom_Out(1,1,"Leitura EEPROM"); //Escreve na primeira linha do LCD while(1) if (button(&portd,0,100,1)) //Se o botão no pino 0 da porta D for acionado Lcd_Custom_Chr(2, 1, EEPROM_Read(0)); // Faz a leitura no endereço 0 // da EEPROM do PIC e // escreve o conteúdo na // linha 2 do LCD 53

54 Projeto EEPRON 2: 2-) Receber da serial um caracter, escrever no endereço 10 da memória EEPRON, ler este valor da memória, escrever no LCD e envia-lo à serial. Código: unsigned short i; void main() Usart_Init(9600); Lcd_Custom_Config(&PORTB,7,6,5,4,&PORTB,1,2,0); // Initializa LCD na PORTB Lcd_Custom_Cmd(Lcd_CURSOR_OFF); // Desliga o cursor Lcd_Custom_Out(1,1,"Leitura EEPROM"); //Escreve na primeira linha do LCD while(1) if (Usart_Data_Ready()) // Se existir um caracter no buffer da serial i = Usart_Read(); // Faz a leitura do buffer e armazena na variável i Usart_Write(i); // Escreve o conteúdo da variável i na Serial EEPROM_Write(10,i); // Escreve o conteúdo da variável i na EEPROM if (button(&portd,0,100,1)) //Se o botão no pino 0 da porta D for acionado Lcd_Custom_Chr(2, 1, EEPROM_Read(10)); //Escreve na segunda linha //do LCD o valor armazenado //no endereço 10 da EEPROM. 54

55 PWM - (Pulse Width Modulation) A modulação PWM (modulação por largura de pulso) consiste basicamente na aplicação de uma onda quadrada de amplitude igual à VCC e freqüência alta substituindo a tensão contínua. A tensão média varia em função do tempo em que a onda fica em nível alto (VCC) e do tempo em que a onda fica em nível básico (0V). A relação entre o tempo em que a onda fica em nível alto e o período total é conhecido como Duty Cycle que é normalmente expresso em percentual. Portanto para um Duty Cycle de 50 %, metade do tempo a onda se mantém em nível alto e a outra metade do tempo a onda se mantém em nível baixo. Por exemplo, uma modulação de amplitude 5V e Duty Cycle de 50 %. Tem o mesmo efeito de uma tensão contínua de 2,5 V que é a tensão média para este caso. Biblioteca PWM no MikroC PWM_init: Inicializa o módulo PWM informando a freqüência de operação. Sintaxe: PWM_init (Unsigned long Freq) Exemplo: PWM_init(5000); // inicializa o módulo PWM com frequência de 5KHz. PWM_Change_Duty: Altera o valor do Duty-Cycle. Sintaxe: PWM_Change_Duty (Unsigned Char Duty) Duty é uma valor do tipo char, portanto de 0 à 255, onde 255 representa 100 % de Duty Cycle. Exemplo: PWM_Change_Duty (192); //configura o Duty-Cycle p/ 75 %. PWM_Start: Inicializa a geração do PWM. Sintaxe: PWM_Start( ); 55

56 PWM_Stop: Interrompe a geração do PWM. Projeto PWM: Controlar o brilho de um Led, ligado ao CCP1 (RC2), utilizando PWM e variando o Duty-Cycle de 0 a 100 %. Código: void main() unsigned i; i = 0; Pwm_Init(5000); Pwm_Start(); //Indica ao módulo PWM o funcionamento com frequencia de 5KHz //Inicializa o Modo PWM while(1) Pwm_Change_Duty(i); //Modifica o Duty_cycle i++; if (i>=100) i = 0; delay_ms(50); 56

57 Projeto PWM 2: Controlar o brilho do Led utilizando PWM e variando o Duty-Cycle de acordo com a leitura do A/D e mostrar no LCD o valor do Duty. Código: unsigned int ad; char txt[7]; void main() ADCON1 = 0x0E; // Configura as entradas analógicas e referência TRISA = 0xFF; // Faz PORTA como entrada Pwm_Init(10000); //Indica ao módulo PWM o funcionamento com frequencia de 10KHz Pwm_Start(); //Inicializa o modo PWM Lcd_Custom_Config(&PORTB,7,6,5,4,&PORTB,1,2,0); // Initializa LCD na PORTB Lcd_Custom_Cmd(Lcd_CURSOR_OFF); // Desliga o cursor while(1) ad = ADC_Read(0); //Faz a leitura da conversão AD e armazena na variável 'ad'. Pwm_Change_Duty(ad/4); // Modifica o Duty_cycle ad = ((ad /4) * 100) / 255; IntToStr(ad,txt); // converte a variável inteira 'ad' na variável texto txt // (matriz) Lcd_Custom_Out(1, 1, "Duty = "); // Escreve na linha 1 do LCD Lcd_Custom_Out(1, 7, txt); // Escreve o valor de Duty no LCD 57

www.vwsolucoes.com Copyright 2011 VW Soluções

www.vwsolucoes.com Copyright 2011 VW Soluções 1 Apresentação O adaptador ADP.v01 é utilizado para facilitar a instalação de display Lcd 16x2 ou display Lcd 20x4 nos CLP PIC28 ou CLP PIC40 através de um flat cable de 10vias de acordo com a necessidade

Leia mais

WWW.cerne-tec.com.br. Comunicação USB com o PIC Vitor Amadeu Souza Parte II vitor@cerne-tec.com.br

WWW.cerne-tec.com.br. Comunicação USB com o PIC Vitor Amadeu Souza Parte II vitor@cerne-tec.com.br 1 Comunicação USB com o PIC Vitor Amadeu Souza Parte II vitor@cerne-tec.com.br Continuando com o artigo apresentado na edição passada de comunicação USB com o PIC, continuaremos nesta edição o estudo do

Leia mais

Programação Básica em Arduino Aula 2

Programação Básica em Arduino Aula 2 Programação Básica em Arduino Aula 2 Execução: Laboratório de Automação e Robótica Móvel Variáveis são lugares (posições) na memória principal que servem para armazenar dados. As variáveis são acessadas

Leia mais

Interrupções e timers

Interrupções e timers Prática 3: 3.1 Introdução e objetivos Interrupções e timers Na prática anterior foi visto que a função main fica continuamente monitorando o teclado avaliando se alguma tecla foi pressionada através da

Leia mais

Comunicação Serial com o AVR ATMEGA8

Comunicação Serial com o AVR ATMEGA8 Comunicação Serial com o AVR ATMEGA8 Vitor Amadeu Souza vitor@cerne-tec.com.br Introdução Os microcontroladores AVR vem a cada dia tomando cada vez mais espaço nos novos projetos eletrônicos microcontrolados.

Leia mais

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores. Tipos de Instruções Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada

Leia mais

Sistemas Microcontrolados

Sistemas Microcontrolados Sistemas Microcontrolados Aula 4: Programação em C para PIC Marco Jose da Silva mdasilva@utfpr.edu.br Compiladores C para PICs C18 HI-TECH CCS IAR MikroC http://www.microchip.com/ http://www.htsoft.com/

Leia mais

Programação em BASIC para o PIC Mostrando Mensagens no Display LCD Vitor Amadeu Souza

Programação em BASIC para o PIC Mostrando Mensagens no Display LCD Vitor Amadeu Souza Programação em BASIC para o PIC Mostrando Mensagens no Display LCD Vitor Amadeu Souza Introdução Nesta terceira série de artigos que aborda a programação na linguagem BASIC para o microcontrolador PIC,

Leia mais

Programação em BASIC para o PIC Projetos com Display Gráfico Vitor Amadeu Souza

Programação em BASIC para o PIC Projetos com Display Gráfico Vitor Amadeu Souza Programação em BASIC para o PIC Projetos com Display Gráfico Vitor Amadeu Souza Introdução No artigo desta edição, veremos os passos para controlar um dispaly gráfico de 128 x 64 pixels. A idéia será apresentar

Leia mais

O cursor se torna vermelho e uma Paleta de Edição contendo as instruções mais utilizadas é apresentada.

O cursor se torna vermelho e uma Paleta de Edição contendo as instruções mais utilizadas é apresentada. Editor de Ladder para VS7 Versão Teste O editor de ladder é um software de programação que permite que o VS7 e o µsmart sejam programados em linguagem de contatos. Esse editor está contido na pasta Público

Leia mais

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos TUTORIAL Memória Flash Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br contato@maxwellbohr.com.br

Leia mais

PROGRAMA DE GERENCIAMENTO DOS AMPLIFICADORES MR 4.50D-XT MR 6.50D-XT MR 6.80-XT Rev. 2.3 de 29/01/2014

PROGRAMA DE GERENCIAMENTO DOS AMPLIFICADORES MR 4.50D-XT MR 6.50D-XT MR 6.80-XT Rev. 2.3 de 29/01/2014 PROGRAMA DE GERENCIAMENTO DOS AMPLIFICADORES MR 4.50D-XT MR 6.50D-XT MR 6.80-XT Rev. 2.3 de 29/01/2014 Introdução: Este programa permite o gerenciamento dos amplificadores MR 4.50D-XT MR 6.50D-XT MR 6.80-XT

Leia mais

www.vwsolucoes.com Copyright 2013 VW Soluções

www.vwsolucoes.com Copyright 2013 VW Soluções 1 1. Especificação técnicas: Dimensões do módulo 4EA2SA v1.0: 100 mm x 56 mm Peso aproximado: xxx gramas (montada). Alimentação do circuito : 12 ou 24Vcc Tipo de comunicação: RS232 ou RS485 Tensão de referencia:

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

Resumo da Matéria de Linguagem de Programação. Linguagem C

Resumo da Matéria de Linguagem de Programação. Linguagem C Resumo da Matéria de Linguagem de Programação Linguagem C Vitor H. Migoto de Gouvêa 2011 Sumário Como instalar um programa para executar o C...3 Sintaxe inicial da Linguagem de Programação C...4 Variáveis

Leia mais

TEM VÁRIOS ESTADOS: 0V,0.1V,3V,3.3V,4V,5V,10V, ETC.

TEM VÁRIOS ESTADOS: 0V,0.1V,3V,3.3V,4V,5V,10V, ETC. CONVERSOR ANALÓGICO / DIGITAL SINAL DIGITAL ASSUME APENAS 2 ESTADOS: 0V E 5V SINAL ANALÓGICO TEM VÁRIOS ESTADOS: 0V,0.1V,3V,3.3V,4V,5V,10V, ETC. 1 FONTE DESTES SINAIS ANALÓGICOS UM DOS NOSSOS OBJETIVOS

Leia mais

Sistemas Microcontrolados

Sistemas Microcontrolados Sistemas Microcontrolados Aula 5: Interrupções e Temporizadores Marco Jose da Silva mdasilva@utfpr.edu.br Interrupções Interrupção é um evento externo ao programa que provoca: A parada da sua execução;

Leia mais

OPERADORES E ESTRUTURAS DE CONTROLE

OPERADORES E ESTRUTURAS DE CONTROLE OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em

Leia mais

Display de Cristal Líquido

Display de Cristal Líquido TUTORIAL Display de Cristal Líquido Autor: Tiago Lone Nível: Básico Criação: 09/03/2006 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br contato@maxwellbohr.com.br

Leia mais

ACENDENDO AS LUZES. Capitulo 2 - Aula 1 Livro: Arduino básico Tutor: Wivissom Fayvre

ACENDENDO AS LUZES. Capitulo 2 - Aula 1 Livro: Arduino básico Tutor: Wivissom Fayvre ACENDENDO AS LUZES Capitulo 2 - Aula 1 Livro: Arduino básico Tutor: Wivissom Fayvre Projeto 1 LED piscante Neste capitulo, todos os projetos utilizam luzes LED s de diversas formas. Em relação ao hardware,

Leia mais

Algoritmos e Programação Estruturada

Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.

Leia mais

PROGRAMAÇÃO EM LINGUAGEM LADDER LINGUAGEM DE RELÉS

PROGRAMAÇÃO EM LINGUAGEM LADDER LINGUAGEM DE RELÉS 1 PROGRAMAÇÃO EM LINGUAGEM LADDER LINGUAGEM DE RELÉS INTRODUÇÃO O processamento interno do CLP é digital e pode-se, assim, aplicar os conceitos de lógica digital para compreen8 der as técnicas e as linguagens

Leia mais

Prof. Esp. Adriano Carvalho

Prof. Esp. Adriano Carvalho Prof. Esp. Adriano Carvalho O que é um Programa? Um arquivo contendo uma sequência de comandos em uma linguagem de programação especifica Esses comandosrespeitam regras de como serem escritos e quais

Leia mais

PROCEDIMENTO PARA INSTALAR REDE ETHERNET EM CNC s FAGOR.

PROCEDIMENTO PARA INSTALAR REDE ETHERNET EM CNC s FAGOR. PROCEDIMENTO PARA INSTALAR REDE ETHERNET EM CNC s FAGOR. INDICE 1 Verificar a compatibilidade dos sistemas de hardware e software 1.1 Opcionais de Hardware 1.2 Opcionais de Software 2 Parametrização do

Leia mais

2 Orientação a objetos na prática

2 Orientação a objetos na prática 2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos

Leia mais

Central de Alarme de Oito Zonas

Central de Alarme de Oito Zonas Central de Alarme de Oito Zonas R02 ÍNDICE CARACTERÍSTICAS GERAIS:... 3 CARACTERÍSTICAS TÉCNICAS:... 3 CONHECENDO A CENTRAL:... 4 COMO A CENTRAL FUNCIONA:... 4 COMO APAGAR A MEMÓRIA DA CENTRAL:... 4 COMO

Leia mais

INTRODUÇÃO À LINGUAGEM C++

INTRODUÇÃO À LINGUAGEM C++ INTRODUÇÃO À LINGUAGEM C++ 1 - VARIÁVEIS Variáveis espaço de memória reservado para armazenar tipos de dados, com um nome para referenciar seu conteúdo. Observações importantes Todas as variáveis devem

Leia mais

Programação em BASIC para o PIC Vitor Amadeu Souza

Programação em BASIC para o PIC Vitor Amadeu Souza Programação em BASIC para o PIC Vitor Amadeu Souza Introdução Continuando com a série do último artigo, hoje veremos os passos para o desenvolvimento de uma minuteria com o microcontrolador PIC18F1220

Leia mais

Boletim Técnico R&D 03/08 CARACTERÍSTICAS DO DRIVER MPC6006L 14 de março de 2008

Boletim Técnico R&D 03/08 CARACTERÍSTICAS DO DRIVER MPC6006L 14 de março de 2008 Boletim Técnico R&D 03/08 CARACTERÍSTICAS DO DRIVER MPC6006L 14 de março de 2008 O objetivo deste boletim é mostrar as características do driver MPC6006L. Tópicos abordados neste boletim: APRESENTAÇÃO

Leia mais

CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO

CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO O seguinte artigo apresenta uma UCP hipotética construída no software simulador DEMOWARE Digital Works 3.04.39. A UCP (Unidade Central de Processamento)

Leia mais

Algoritmos e Programação

Algoritmos e Programação Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Algoritmos e Programação Parte 05 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti

Leia mais

Programação de Robótica: Modo Circuitos Programados - Avançado -

Programação de Robótica: Modo Circuitos Programados - Avançado - Programação de Robótica: Modo Circuitos Programados - Avançado - 1 Programação de Robótica: Modo Circuitos Programados - Avançado ATENÇÃO Lembramos que você poderá consultar o Manual de Referência do Software

Leia mais

Criando um script simples

Criando um script simples Criando um script simples As ferramentas de script Diferente de muitas linguagens de programação, você não precisará de quaisquer softwares especiais para criar scripts de JavaScript. A primeira coisa

Leia mais

Mapeamento de memória e programação da IHM do controlador CP-WS41/8DO8DI4AO2AI2TAI

Mapeamento de memória e programação da IHM do controlador CP-WS41/8DO8DI4AO2AI2TAI Comércio e Manutenção de Produtos Eletrônicos Manual CP-WS1 Mapeamento de memória e programação da IHM do controlador CP-WS41/8DO8DI4AO2AI2TAI PROXSYS Versão 1.0 Março-2013 Controlador Industrial CP-WS1

Leia mais

IINTRODUÇÃO SOFTWARE DE PROGRAMAÇÃO GP-SOFTWARE

IINTRODUÇÃO SOFTWARE DE PROGRAMAÇÃO GP-SOFTWARE IINTRODUÇÃO SOFTWARE DE PROGRAMAÇÃO GP-SOFTWARE Rev.: 01 (03/09/2007) PRODUTOS ELETRÔNICOS METALTEX LTDA. Rua: José Rafaelli, 221 - Socorro - S. Amaro - São Paulo / SP. CEP: 04763-280 - Brasil Tel.: 55

Leia mais

O Excel é um programa de computador desenvolvido para gerenciar dados na forma de planilhas.

O Excel é um programa de computador desenvolvido para gerenciar dados na forma de planilhas. O que é o Excel? O Excel é um programa de computador desenvolvido para gerenciar dados na forma de planilhas. Ele possibilita ao usuário desenvolver planilhas que efetuem cálculos, dos mais simples aos

Leia mais

Hardware Parte I. Fábio Rodrigues de la Rocha

Hardware Parte I. Fábio Rodrigues de la Rocha Hardware Parte I Fábio Rodrigues de la Rocha PIC16F877 40 pinos Freqüência máxima 20MHz. Vias de programação 14 bits 33 portas configuráveis como entradas/saídas 15 interrupções diferentes Memória EEPROM

Leia mais

Robótica com Arduino

Robótica com Arduino Robótica com Arduino Nesta apresentação veremos conceitos sobre contadores, estrutura de condição if, e trabalharemos com a comunicação Serial entre o Arduino e o Computador. Professor: Paulo Marcos Trentin

Leia mais

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10 1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...

Leia mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

PAINEL DE SENHAS RBSG4JE. Imagem ilustrativa do painel. Operação/Configuração Painel Eletrônico de Senhas / Guichê com jornal de mensagens.

PAINEL DE SENHAS RBSG4JE. Imagem ilustrativa do painel. Operação/Configuração Painel Eletrônico de Senhas / Guichê com jornal de mensagens. PAINEL DE SENHAS RBSG4JE Imagem ilustrativa do painel Operação/Configuração Painel Eletrônico de Senhas / Guichê com jornal de mensagens. Há basicamente dois modos de operação no Painel de Senhas: - Operação

Leia mais

Multimedidores Inteligentes MGE G3 Modo de uso do software IBIS_BE_cnf. ABB Automação. Hartmann & Braun

Multimedidores Inteligentes MGE G3 Modo de uso do software IBIS_BE_cnf. ABB Automação. Hartmann & Braun Multimedidores Inteligentes MGE G3 Modo de uso do software IBIS_BE_cnf ABB Automação Hartmann & Braun Índice 1. IBIS_BE_CNF - DEFINIÇÃO... 3 2. INSTALAÇÃO... 3 2.1. PRÉ-REQUISITOS PARA INSTALAÇÃO... 3

Leia mais

EXPERIÊNCIA 17 USO DO TEMPORIZADOR INTERNO

EXPERIÊNCIA 17 USO DO TEMPORIZADOR INTERNO EXPERIÊNCIA 17 USO DO TEMPORIZADOR INTERNO Parte I Fundamentos Teóricos O que diferencia um microcontrolador (como o 8051) de um microprocessador é o fato de que o primeiro pode apresentar, integrados

Leia mais

Para que o NSBASIC funcione corretamente em seu computador, você deve garantir que o mesmo tenha as seguintes características:

Para que o NSBASIC funcione corretamente em seu computador, você deve garantir que o mesmo tenha as seguintes características: Cerne Tecnologia www.cerne-tec.com.br Conhecendo o NSBASIC para Palm Vitor Amadeu Vitor@cerne-tec.com.br 1. Introdução Iremos neste artigo abordar a programação em BASIC para o Palm OS. Para isso, precisaremos

Leia mais

Manual completo Programador PRG-8051-USB

Manual completo Programador PRG-8051-USB APRESENTAÇÃO: O gravador PRG-8051-USB é um gravador de 8051 da linha ATMEL com integração USB. Este gravador é extremamente prático, pois não necessita de fonte de alimentação, bastando apenas conectá-lo

Leia mais

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos TUTORIAL Display de 7 Segmentos Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br contato@maxwellbohr.com.br

Leia mais

Componentes da linguagem C++

Componentes da linguagem C++ Componentes da linguagem C++ C++ é uma linguagem de programação orientada a objetos (OO) que oferece suporte às características OO, além de permitir você realizar outras tarefas, similarmente a outras

Leia mais

Programação WEB I Estruturas de controle e repetição

Programação WEB I Estruturas de controle e repetição Programação WEB I Estruturas de controle e repetição Operadores de Incremento Operadores de incremento servem como expressões de atalho para realizar incrementos em variáveis Operadores de Incremento Vamos

Leia mais

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.

Leia mais

2 echo "PHP e outros.";

2 echo PHP e outros.; PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento

Leia mais

Manual Equipamento ST10 Flasher Rev. 1

Manual Equipamento ST10 Flasher Rev. 1 Maio de 2014 2 Sumário Introdução:... 3 Acessórios utilizados:... 4 Instalação:... 5 Abrindo e Conhecendo o Software:... 10 SET PORT... 11 RELOAD MONITOR... 13 BlankCheck... 14 ERASE FLASH... 14 DUMP...

Leia mais

MANUAL ZEDIT 32 Índice:

MANUAL ZEDIT 32 Índice: MANUAL ZEDIT 32 Índice: Configuração Painel -------------------------------------------------------------------- 02 à 04 Criar Novo modelo Painel -------------------------------------------------------------

Leia mais

Capítulo 12. Projeto 5 Controle de Motores de Passo. 12.1 Circuito e Funcionamento

Capítulo 12. Projeto 5 Controle de Motores de Passo. 12.1 Circuito e Funcionamento Capítulo 12 Projeto 5 Controle de Motores de Passo A crescente popularidade dos motores de passo deve-se a sua adaptação à lógica digital. Estes dispositivos são usados em inúmeras aplicações, tais como:

Leia mais

1 Code::Blocks Criação de projetos

1 Code::Blocks Criação de projetos Programação MEEC Índice 1Code::Blocks Criação de projetos...1 2Code::Blocks Localização do projeto...5 3Code::Blocks Abertura de projetos já existentes...7 4Code::Blocks Funcionamento...8 5Code::Blocks

Leia mais

Quadro de consulta (solicitação do mestre)

Quadro de consulta (solicitação do mestre) Introdução ao protocolo MODBUS padrão RTU O Protocolo MODBUS foi criado no final dos anos 70 para comunicação entre controladores da MODICON. Por ser um dos primeiros protocolos com especificação aberta

Leia mais

Controladores Lógicos Programáveis CLP (parte-3)

Controladores Lógicos Programáveis CLP (parte-3) Controladores Lógicos Programáveis CLP (parte-3) Mapeamento de memória Na CPU (Unidade Central de Processamento) de um CLP, todas a informações do processo são armazenadas na memória. Essas informações

Leia mais

ULA Sinais de Controle enviados pela UC

ULA Sinais de Controle enviados pela UC Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento

Leia mais

Geral: Manual de Utilização do Software de Teste Gradual Windows

Geral: Manual de Utilização do Software de Teste Gradual Windows Manual de Utilização do Software de Teste Gradual Windows Geral: Este aplicativo é utilizado para testar os Microterminais Gradual Tecnologia Ltda. Para tanto deve ter as Dll s necessárias para controlar

Leia mais

Estrutura de um Computador

Estrutura de um Computador SEL-0415 Introdução à Organização de Computadores Estrutura de um Computador Aula 7 Prof. Dr. Marcelo Andrade da Costa Vieira MODELO DE VON NEUMANN PRINCÍPIOS A arquitetura de um computador consiste de

Leia mais

1- Scilab e a placa Lab_Uino. 2- Instalação do ToolBox

1- Scilab e a placa Lab_Uino. 2- Instalação do ToolBox 1- Scilab e a placa Lab_Uino A placa Lab_Uino, é uma plataforma aberta para aprendizagem de sistemas microprocessados. Com a utilização de um firmware especifico a placa Lab_Uino é reconhecido pelo sistema

Leia mais

Testando a Comunicação e Transferindo o Código de Máquina

Testando a Comunicação e Transferindo o Código de Máquina Testando a Comunicação e Transferindo o Código de Máquina Todas as etapas do fluxograma da figura x.x foram realizada no PC. O código de máquina foi criado no PC na pasta Resource. O arquivo a ser transferido

Leia mais

LINEAR EQUIPAMENTOS RUA SÃO JORGE, 267/269 - TELEFONE: (11) 2823-8800 SÃO CAETANO DO SUL - SP - CEP: 09530-250

LINEAR EQUIPAMENTOS RUA SÃO JORGE, 267/269 - TELEFONE: (11) 2823-8800 SÃO CAETANO DO SUL - SP - CEP: 09530-250 LINEAR EQUIPAMENTOS RUA SÃO JORGE, 267/269 - TELEFONE: (11) 2823-8800 SÃO CAETANO DO SUL - SP - CEP: 09530-250 1 SISTEMA HCS 2005 PROTOCOLO DE COMUNICAÇÃO (Baseado no Guarita Vr5.0x Última modificação:

Leia mais

Autor: Daniel Corteletti Centro Tecnológico de Mecatrônica SENAI

Autor: Daniel Corteletti Centro Tecnológico de Mecatrônica SENAI LINGUAGEM LADDER p/ microcontroladores microchip PIC Autor: Daniel Corteletti Centro Tecnológico de Mecatrônica SENAI Ladder: É uma linguagem de programação gráfica, em forma de diagrama, que por ser de

Leia mais

STK (Start Kit DARUMA) Primeiro contato com a Impressora Fiscal, a ECF chegou e agora?

STK (Start Kit DARUMA) Primeiro contato com a Impressora Fiscal, a ECF chegou e agora? O que será abordado neste SKT: STK (Start Kit DARUMA) Primeiro contato com a Impressora Fiscal, a ECF chegou e agora? Verificando o papel. Verificando se o ECF está inicializado, caso não esteja como proceder.

Leia mais

Algoritmos em Javascript

Algoritmos em Javascript Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays

Leia mais

Microsoft Office Excel 2007

Microsoft Office Excel 2007 1 Microsoft Office Excel 2007 O Excel é um programa dedicado a criação de planilhas de cálculos, além de fornecer gráficos, função de banco de dados e outros. 1. Layout do Excel 2007 O Microsoft Excel

Leia mais

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados I 01/2013 Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Problema 1 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em

Leia mais

Manual do instalador Box Output AC Rev. 0.01.000. Figura 01 Apresentação do Box Output AC.

Manual do instalador Box Output AC Rev. 0.01.000. Figura 01 Apresentação do Box Output AC. Pág. 1/10 Apresentação Equipamento para acionamento de cargas em corrente alternada 110/220V. Comunicação com outros dispositivos por rede CAN. 6 entradas digitais para acionamento local ou remoto. 6 entradas/saídas

Leia mais

JAVA NETBEANS PGOO Prof. Daniela Pires Conteúdo

JAVA NETBEANS PGOO Prof. Daniela Pires Conteúdo Conteúdo Estruturas de repetição (loops, laços)... 2 WHILE (enquanto)... 2 DO... WHILE (faça... enquanto)... 2 FOR... 3 FOREACH... 4 EXERCICIO LOOP FOR... 4 Novo Projeto... 5 Controles SWING... 10 1 Estruturas

Leia mais

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA 8 CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA A porta paralela, também conhecida por printer port ou Centronics e a porta serial (RS-232) são interfaces bastante comuns que, apesar de estarem praticamente

Leia mais

PROCEDIMENTO PARA REPASSAR BACKUP s EM CNC s FAGOR 8035 / 8055 ATRAVÉS DO SOFTWARE FAGOR WINDNC. REVISÃO 2.0

PROCEDIMENTO PARA REPASSAR BACKUP s EM CNC s FAGOR 8035 / 8055 ATRAVÉS DO SOFTWARE FAGOR WINDNC. REVISÃO 2.0 PROCEDIMENTO PARA REPASSAR BACKUP s EM CNC s FAGOR 8035 / 8055 ATRAVÉS DO SOFTWARE FAGOR WINDNC. REVISÃO 2.0 1 Ajustes dos parâmetros no CNC. 1.1 Explicações sobre parâmetros de Linha de Série 2 Software

Leia mais

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos Este procedimento corresponde ao fluxo de trabalho de Indexação de código de barras e de separação de documentos no programa de treinamento do Capture Pro Software. As etapas do procedimento encontram-se

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

1- Requisitos mínimos. 2- Instalando o Acesso Full. 3- Iniciando o Acesso Full pela primeira vez

1- Requisitos mínimos. 2- Instalando o Acesso Full. 3- Iniciando o Acesso Full pela primeira vez Manual Conteúdo 1- Requisitos mínimos... 2 2- Instalando o Acesso Full... 2 3- Iniciando o Acesso Full pela primeira vez... 2 4- Conhecendo a barra de navegação padrão do Acesso Full... 3 5- Cadastrando

Leia mais

ÍNDICE... 2 INTRODUÇÃO... 4

ÍNDICE... 2 INTRODUÇÃO... 4 Mic crosoft Excel 201 0 ÍNDICE ÍNDICE... 2 INTRODUÇÃO... 4 Interface... 4 Guias de Planilha... 5 Movimentação na planilha... 6 Entrada de textos e números... 7 Congelando painéis... 8 Comentários nas Células...

Leia mais

Microprocessadores e Microcontroladores Parte 3. Expansão de Memória Mapeamento de Memória

Microprocessadores e Microcontroladores Parte 3. Expansão de Memória Mapeamento de Memória Microprocessadores e Microcontroladores Parte 3 Expansão de Memória José Wilson Lima Nerys www.eee.ufg.br/ jwilson 2013 Um microcontrolador padrão da família 8051 possui normalmente uma memória de programa

Leia mais

Manual de Instalação... 2 RECURSOS DESTE RELÓGIO... 3 1 - REGISTRANDO O ACESSO... 4 1.1 Acesso através de cartão de código de barras:...

Manual de Instalação... 2 RECURSOS DESTE RELÓGIO... 3 1 - REGISTRANDO O ACESSO... 4 1.1 Acesso através de cartão de código de barras:... 0 Conteúdo Manual de Instalação... 2 RECURSOS DESTE RELÓGIO... 3 1 - REGISTRANDO O ACESSO... 4 1.1 Acesso através de cartão de código de barras:... 4 1.2 Acesso através do teclado (digitando a matrícula):...

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem

Leia mais

TS-12864 Display Gráfico Serial

TS-12864 Display Gráfico Serial TS-12864 Display Gráfico Serial Manual do Usuário TS-12864 - v1.1-0305 - pg 1 O display gráfico serial TS-12864 combina um módulo serial com um display gráfico de 128x64 pontos. Este conjunto recebe dados

Leia mais

Conhecendo o Computador

Conhecendo o Computador Capítulo 1 Conhecendo o Computador 1.1 Conhecendo o Computador Tudo que é novo nos causa um certo receio. Com os computadores não é diferente. Tenha sempre em mente que o homem domina a máquina e não a

Leia mais

Sistemas de Numeração

Sistemas de Numeração Sistemas de Numeração Um numeral é um símbolo ou grupo de símbolos que representa um número em um determinado instante da evolução do homem. Tem-se que, numa determinada escrita ou época, os numerais diferenciaram-se

Leia mais

A4 Projeto Integrador e Lista de Jogos

A4 Projeto Integrador e Lista de Jogos A4 Projeto Integrador e Lista de Jogos 1ª ETAPA PROJETO INTEGRADOR (2 pontos na A4) Como discutido em sala de aula, a disciplina de algoritmos I também fará parte do projeto integrador, para cada grupo

Leia mais

3 Sistemas de Numeração:

3 Sistemas de Numeração: 3 Sistemas de Numeração: Os computadores eletrônicos têm como base para seu funcionamento a utilização de eletricidade. Diferente de outras máquinas que a presença ou ausência de eletricidade apenas significam

Leia mais

PAINEL ELETRÔNICO DE MENSAGENS MANUAL DE OPERAÇÃO E INSTALAÇÃO CARROS URBANOS E G7 MARCOPOLO

PAINEL ELETRÔNICO DE MENSAGENS MANUAL DE OPERAÇÃO E INSTALAÇÃO CARROS URBANOS E G7 MARCOPOLO PAINEL ELETRÔNICO DE MENSAGENS MANUAL DE OPERAÇÃO E INSTALAÇÃO CARROS URBANOS E G7 MARCOPOLO INTRODUÇÃO INFORMAÇÃO GERAL 1 O Painel Eletrônico LOHR foi desenvolvido para ser instalado no interior de veículos

Leia mais

Manual MifareUSB/Serial

Manual MifareUSB/Serial Manual MifareUSB/Serial 08/2012 V2.6 Manual MifareUSB/Serial Este manual descreve as conexões de hardware e os comandos para leitura, escrita e configurações para os leitores/gravadores de cartão Mifare

Leia mais

Placa Acessório Modem Impacta

Placa Acessório Modem Impacta manual do usuário Placa Acessório Modem Impacta Parabéns, você acaba de adquirir um produto com a qualidade e segurança Intelbras. A Placa Modem é um acessório que poderá ser utilizado em todas as centrais

Leia mais

Este tutorial mostra como utilizar as ferramentas Send Mail e Web Commands.

Este tutorial mostra como utilizar as ferramentas Send Mail e Web Commands. Este tutorial mostra como utilizar as ferramentas Send Mail e Web Commands. Antes de começamos certifique-se de estarem com o programa instalado, com sua conta e licenças ativas. Neste tutorial não irei

Leia mais

NetBeans. Conhecendo um pouco da IDE

NetBeans. Conhecendo um pouco da IDE NetBeans Conhecendo um pouco da IDE Professor: Edwar Saliba Júnior Sumário Apresentação:...1 Criando Um Novo Projeto de Software:...1 Depurando Um Código-fonte:...4 Entendendo o Código-fonte:...7 Dica

Leia mais

Linha de Módulos de Comando

Linha de Módulos de Comando RKM SISTEMAS DE AUTOMAÇÃO E CONTROLE LTDA. Rua Catão Coelho, 215 PORTO ALEGRE RS Fone: (51) 3029-3250 www.rkmautomacao.com.br Linha de Módulos de Comando RKM Aurora MANUAL DE CONFIGURAÇÃO Rev. 1.0 Abril

Leia mais

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1 Conteúdo Página Operações Lógicas Binárias: AND, OR...2 Operações Lógicas Binárias: OR Exclusivo (XOR)...3 Contatos Normalmente Abertos e Normalmente Fechados. Sensores e Símbolos... 4 Exercício...5 Resultado

Leia mais

Fundação Universidade Federal do Rio Grande Colégio Técnico Industrial Prof. Mário Alquati Divisão de Ensino de Eletrotécnica Módulo III Automação

Fundação Universidade Federal do Rio Grande Colégio Técnico Industrial Prof. Mário Alquati Divisão de Ensino de Eletrotécnica Módulo III Automação Fundação Universidade Federal do Rio Grande Colégio Técnico Industrial Prof. Mário Alquati Divisão de Ensino de Eletrotécnica Módulo III Automação TUTORIAL DO SOFTWARE MASTERTOOL 4.01 DA ALTUS 1 - Considerações

Leia mais

Comm5 Tecnologia Manual de utilização da família MI. Manual de Utilização. Família MI

Comm5 Tecnologia Manual de utilização da família MI. Manual de Utilização. Família MI Manual de Utilização Família MI ÍNDICE 1.0 COMO LIGAR O MÓDULO... pág 03 e 04 2.0 OBJETIVO... pág 05 3.0 COMO CONFIGURAR O MÓDULO MI... pág 06, 07, 08 e 09 4.0 COMO TESTAR A REDE... pág 10 5.0 COMO CONFIGURAR

Leia mais

JSP - ORIENTADO A OBJETOS

JSP - ORIENTADO A OBJETOS JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...

Leia mais

Capítulo 2: Introdução à Linguagem C

Capítulo 2: Introdução à Linguagem C Capítulo 2: Introdução à Linguagem C INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso

Leia mais

Guia de utilização do software. universal GPRS M-300.

Guia de utilização do software. universal GPRS M-300. Guia de utilização do software Programador do módulo universal GPRS M-300. JFL Equipamentos Eletrônicos Ind. e Com. Ltda. Rua: João Mota, 471 - Bairro: Jardim das Palmeiras Santa Rita do Sapucaí - MG CEP:

Leia mais

Dispositivos de Entrada e Saída

Dispositivos de Entrada e Saída SEL-0415 Introdução à Organização de Computadores Dispositivos de Entrada e Saída Aula 9 Prof. Dr. Marcelo Andrade da Costa Vieira ENTRADA e SAÍDA (E/S) (I/O - Input/Output) n Inserção dos dados (programa)

Leia mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

Leia mais