Baixe o app para aproveitar ainda mais
Prévia do material em texto
MCS51 Prof. Celso 1 MICROCONTROLADOR A figura abaixo mostra a diferença entre um microprocessador e um microcontrolador. O microprocessador (ou CPU) é o gerenciador de um sistema microcontrolado, possui internamente a unidade lógica aritmética (ULA), registradores e a unidade de controle (UC). O microprocessador necessita de unidades de memórias (ROM e/ou RAM) e de dispositivos de entrada e saída (I/O) para se comunicar com o ambiente externo. O microcontrolador é um dispositivo que possui internamente um microprocessador, unidades de memórias e interface com o mundo externo (porta serial, porta paralela, temporizadores). Na figura abaixo o retângulo marrom corresponde ao microprocessador e retângulo azul corresponde ao microcontrolador. O microcontrolador é utilizado para sistemas dedicados, tais como: injeção eletrônica, ignição eletrônica, computador de bordo, relógios microcontrolados, sistemas de automação. Num chão de fábrica é muito utilizado o CLP, sendo que este equipamento possui internamente um microcontrolador. FAMÍLIA MCS-51 Existem vários microcontroladores disponíveis no mercado. Um dos mais utilizados se refere à família MCS-51. Estes microcontroladores possuem a vantagem de serem produzidos por vários fabricantes (Atmel, Philips, Texas...) que mantém núcleo base (core) e diferem em outras características: uns apresentam conversores analógicos digitais (A/D), outros variam na quantidade de memória, no tipo de memória (flash, eeprom), uns possuem PWM, comunicação SPI, I2C, Ethernet, clocks que variam de 2 a 100 MHz. MCS51 Prof. Celso 2 A figura abaixo apresenta o diagrama de um microcontrolador 8051: O 8051 possui um conjunto de 111 instruções, sendo que 98% destas são instruções de 1 ou de 2 ciclos de máquina, o que fornece uma maior velocidade de processamento. A figura abaixo mostra o encapsulamento de 40 pinos do 8051: MCS51 Prof. Celso 3 MEMÓRIA EXTERNA O contador de endereço do 8051 (PC) é de 16 bits, portanto pode ser adicionado até: 64 Kbytes de memória de dados (Pinos RD e WR) 64 Kbytes de memória de programa (Pino PSEN) A habilitação da memória externa de programa é feita através do pino EA: EA = 0 utiliza a memória externa de programa (até 64 Kbytes) EA =1 utiliza a princípio a memória interna (4 Kbytes) e depois a memória externa. Para o uso de memórias externas, os seguintes pinos devem ser utilizados: Pino 17 (RD) – utilizado para leitura na memória de dados (RAM) externa. Pino 16 (WR) – utilizado para escrita na memória de dados (RAM) externa. Pino 29 (PSEN) – utilizado para leitura na memória de programa (ROM) externa. Pino 30 (ALE) – sinal para demultiplexar a porta P0 (enable latch). Pino 31 (EA) – habilita o acesso externo da memória de programa (external Access) Pinos de 1 a 8 (porta 0) – bus multiplexado endereços (A0-A7) e dados (D0-D7). Pinos de 21 a 28 (porta 2) – contém os endereços de A8 a A15. Esquema para ligar uma ROM externa de 64kbytes: MCS51 Prof. Celso 4 Esquema para ligar uma RAM de 64 Kbytes: Esquema simplificado para ligar uma ROM de 64 Kbytes e uma RAM de 64 Kbytes: ORGANIZAÇÃO DA MEMÓRIA RAM INTERNA MCS51 Prof. Celso 5 O diagrama abaixo mostra a organização interna da memória RAM: É mostrado no diagrama acima que a memória interna RAM é dividida em: - 128 bytes superiores (de 80h a FFh) que são utilizados pelos registradores de funções especiais (acumulador, psw, sp, dptr....). - 128 bytes superiores (de 80h a FFH) com os mesmos endereço do SFR. Esta memória está presentes apenas nos microcontroladores 8032, 8052 e 8752. - 128 bytes inferiores de uso geral (de 00h a 7Fh) divididos em: - 80 bytes de uso geral - 16 bytes que podem ser endereçados bit a bit - 4 bancos (banco 0, Banco 1, Banco 2 e Banco 3) de 8 bytes cada. Pelo diagrama anterior nota-se que os 8 bytes de cada Banco possui uma denominação comum: R0, R1, R2, R3, R4, R5, R6 e R7. Desta forma, deve-se definir qual banco está se utilizando, se nenhum banco for definido o microntrolador trabalhará com o banco 0 (default). MCS51 Prof. Celso 6 Exemplo: O comando MOV é utilizado para transferência (movimento) de dados entre memórias. O movimento é sempre para, de: 1) Se o banco 0 for selecionado a instrução: MOV A, R0 ; isto movimenta o valor que está em R0 do banco 0 (2Eh, no exemplo ; acima) para o acumulador (que é o principal registrador). Neste comando teríamos: (A) 2Eh os parênteses indicam que o valor no registrador A recebe o valor constante 2Eh. Outra forma de acessar os valores nos registradores sem selecionar o banco seria através da sua posição de memória. Por exemplo, acessando o registrador R0 através de seu endereço: MOV A, 00h ; isto movimenta o valor que está na posição de memória 00h (2Eh, no ;exemplo acima) para o acumulador (que é o principal registrador). Neste comando teríamos: (A) (00h) os parênteses indicam que o valor no registrador A recebe o valor que está na posição de memória 00h (que é 2Eh). Exercício 1) Qual os valores que serão movidos para o acumulador quando for dada a instrução: MOV A, R6 e como esses valores poderiam ser acessados pela posição de memória: Se for selecionado o banco 0:_________ ou _______________ o banco 1:_________ ou _______________ o banco 2:_________ ou _______________ o banco 3:_________ ou _______________ Exercício 2) Qual os valores que serão movidos para o acumulador: MOV A, 15h (A) MOV A, 0CH (A) MOV A, 06h (A) MOV A, 0Eh (A) MOV A, 2Eh (A) MCS51 Prof. Celso 7 REGISTRO DE FUNÇÕES ESPECIAIS (SFR) O mapa abaixo mostram os registradores de funções especiais bem como os valores que eles assumem após o sinal de reset: 0F8h 0FFh 0F0h B 00000000 0F7h 0E8h 0EFh 0E0h ACC 00000000 0E7h 0D8h 0DFh 0D0h PSW 00000000 0D7h 0C8h 0CFh 0C0h 0C7h 0B8h IP XX000000 0BFh 0B0h P3 11111111 0B7h 0A8h IE 0X000000 0AFh 0A0h P2 11111111 0A7h 98h SCON 00000000 SBUF XXXXXXXX 9Fh 90h P1 11111111 97h 88h TCON 00000000 TMOD 00000000 TL0 00000000 TL1 00000000 TH0 00000000 TH1 00000000 8Fh 80h PO 11111111 SP 00000111 DPL 00000000 DPH 00000000 PCON 0XXX0000 87h Registros que podem ser acessados bit a bit Endereço Final Endereço Inicial Pelo mapa, temos os endereços: P0 - Porta 0, endereço 80h P1 - Porta 1, endereço 90h P2 – Porta 2, endereço A0h P3 – Porta 3, endereço B0h SP (stack point) – pilha, endereço 81h DPTR – ponteiro para endereçar dados externos, é dividido em DPL (82h) e DPH (83h), como cada registro possui 8 bits, o DPTR possui 16 bits, sendo possível com isso acessar 64 Kbytes de memória externa. PCON – controle de potência, endereço 87h MCS51 Prof. Celso TCON – controle do timer/contador, endereço 88h TMOD – modo de controle do timer/contador, endereço 89h TL0 – byte baixo do timer/contador 0, endereço 8Ah TL1 – byte baixo do timer/contador 1, endereço 8BhTH0 – byte alto do timer/contador 0, endereço 8Ch TH1 – byte alto do timer/contador 1, endereço 8Dh SCON – controle da porta serial, endereço 98h SBUF – porta de dados serial, endereço 99h IE – habilita interrupção, endereço A8h IP – controle de prioridade de interrupção, endereço B8h ACC – acumulador, endereço E0h registrador mais importante contém os resultados das operações aritméticas e lógicas. B – registrador B, endereço F0h utilizado para realizar multiplicação e divisão PSW – contém os flags de estado e os bits para selecionar o banco de registradores, endereço D0h. O PSW é mostrado abaixo: Uso geral Seleção do Banco Carry auxiliar Overflow Carry Paridade CY AC F0 RS1 RS0 OV - P 0 0 banco 0 0 1 banco 1 1 0 banco 2 1 1 banco 3 Exemplo: mover o conteúdo do acumulador (A) para o registrador R1 do banco 2. Para isso, o primeiro passo é selecionar o banco de interesse, no caso o banco 2. Para isso RS1=1 e RS0=0: PSW: CY AC F0 RS1 RS0 OV - P 0 0 0 1 0 0 0 0 MOV PSW,#10H ; selecionando o banco 2 MOV R1, A ; o conteúdo de R1 recebe o conteúdo do acumulador ; (R1) (A) Exercício 3): Selecione o banco 1 e faça o acumulador receber o valor de R3, depois selecione o banco 3 e faça o registrador R3 receber o valor do acumulador: ________________________ ________________________ ________________________ 8 MCS51 Prof. Celso 9 CICLO DE MÁQUINA No 8051, cada ciclo de máquina possui 6 estados (de S1 a S6), cada estado possui 2 períodos do oscilador, portanto: 1 ciclo de máquina no 8051 possui 12 períodos de clock. Se for utilizado um cristal de 12 Mhz, o ciclo de máquina será: s Mhzfcristal máquinadeTciclo µ1 12 1*121*12__ === 1 ciclo de máquina – 1 byte (Ex.: inc A) O 8051 possui instruções de 2 ciclos de máquina – 2 bytes (Ex.: add a,#dado) 2 ciclos de máquina – 1 byte (Ex.: inc dptr) Abaixo é mostrado o diagrama de tempo da leitura da memória externa de programa: Para leitura de memória externa de dados, o diagrama é mostrado abaixo: MCS51 Prof. Celso 10 RESET Para iniciar o processamento, o microcontrolador necessita de um sinal de reset. Este sinal faz a CPU procurar o endereço 00h da memória de programa para iniciar o programa armazenado nela. No 8051 este sinal corresponde a uma borda de descida no pino 9 (RST), que pode ser feita automaticamente através do seguinte esquema: O valor do capacitor e do resistor pode ser calculado utilizando o tempo de carga no capacitor e considerando que seja necessário: 10 ms para estabilizar a tensão de alimentação 10 ms para partida do oscilador 24 período de clock para inicialização do sistema. No diagrama de tempo, vr corresponde a tensão de referência (3,5 V – acima deste valor é considerado nível alto). Considerando que seja utilizado um cristal de 1 MHz, o período do clock será” s MHz Tcristal 610 1 1 −== portanto seria necessário um tempo de 20,024 ms (10 m + 10 m + 24 * 1 µs). A tensão no capacitor é dada por: RC t eVccVr − = * aplicando ln RC t VVreVVcceVccVr RC t −= ==+= − 5ln5,3ln 5,35)ln()ln()ln( RCt RCt 3566,0 )5,3ln5(ln = −= Como o tempo t é conhecido (20,024 ms), será necessário assumir um valor para o capacitor (C=10 µF) e calcular o valor do Resistor: 625 10.10.3566,010.034,20 3566,0 63 kR R RCt = = = −− ou utilizando um valor comercial R = 6k8.
Compartilhar