Microprocessador 8051 Aula 01 Prof Afonso Ferreira Miguel Sistemas Processados Fundamentos de computação: (cont.) Programa (Software): conjunto de instruções arranjadas de forma organizada que apresenta função específica (Ex: Programas Básicos, Aplicativos, Utilitários, etc.); Firmware: Programa que está armazenado em memória não volátil (ROM); Hardware: partes eletrônicas de um microcomputador; Microcontrolador: microcomputador integrado num único chip (microprocessador + periféricos); Sistemas Processados Periféricos Circuitos acessórios ao computador que realizam tarefas específicas; Exemplos: • • • • Timers; CCP (Comparação, Captura e PWM); Conversores Analógico-Digital e Digital-Analógico; Portas de comunicação (USART, I2C, SPI, USB, CAN,...). Arquiteturas von Neumann “Instruções e dados compartilham a mesma unidade física de memória” Hamacher – Computer Organization Arquiteturas - von Neumann BUS uP AX BX CX DX tempA tempA =0 tempB A Entrada A Entrada B Saída Z Memória IR=MOV AX,0 0 MOV AX,0 MOV AX,0 IP = 0 1 MOV BX,1 MOV BX,1 MA = 0 MD=MOV AX,0 2 ADD AX,BX 3 JMP 22 JMP 4 54 . ... ... O 46 74 L ... ... A Inst. Dados Arquiteturas Harvard “Instruções e dados são armazenados em memórias diferentes” Heuring – Computer Systems Disignd and Architecture Vantagem: Instruções e dados podem ser acessados simultaneamente, aumentando o desempenho! Arquiteturas Memória de Programa Harvard BUS uP IR=MOV AX,0 IP = 0 IP CTRL tempA tempA =0 tempB Entrada B Saída Z MOV AX,0 MOV AX,0 1 MOV BX,1 MOV BX,1 2 ADD AX,BX 3 Inst. JMP 22 JMP AX BX Entrada A 0 CX DX MA = 0 MD=MOV AX,0 Memória de Dados 40 14 . ... ... O 42 34 L ... ... A Dados Instruction Set Definição: Conjunto de instruções que um processador compreende; Cada processador possui seu próprio conjunto de instruções, inviabilizando, na maioria dos casos, a portabilidade. Instruction Set Ciclo de execução de uma instrução em processadores seqüenciais Fetch 0 ... Fetch 1 Decod 0 Decod 1 Exec 0 Exec 1 Primeira instrução Tempo perdido entre uma instrução e outra Instruction Set Pipeline de Instrução Ciclo de execução de uma instrução em processadores seqüenciais com Pipeline. Fetch 0 Fetch 1 Fetch 2 Fetch 3 Dec 0 Dec 1 Dec 2 Dec 3 Exec 0 Exec 1 Exec 2 ... Exec 3 Na maioria das vezes, uma instrução é executada imediatamente após a outra. Instruction Set CISC – Complex Instruction Set Computing Computação onde o número de instruções é muito grande; RISC Computação onde um número reduzido de instruções estão disponíveis. Instruction Set Considerações sobre RISC e CISC Uma única instrução CISC pode equivaler a várias instruções RISC; Uma instrução CISC precisa realizar passos semelhantes aos realizados pelas RISC equivalentes (não há ganho de desempenho); CISC minimiza o número de acessos a memória de programa; RISC simplifica a decodificação de instruções, deixando esta etapa mais rápida. Instruction Set Vantagens CISC: Apesar do conjunto de instruções ser muito grande, oferece um número maior de instruções (“ferramentas”) ao programador Assembly; Menor quantidade de instruções são necessárias para desenvolver um programa (programas ocupam menos memória). Instruction Set Vantagens RISC: Etapa de decodificação tão simples que pode, em alguns casos, ser eliminada; Com um número menor de instruções, os parâmetros destas podem ser agregados no opcode (código de máquina de uma instrução), simplificando inclusive o FETCH. Simplificação dos circuitos eletrônicos. Quem é melhor? RISC x CISC Microcontrolador 8051 (MCS-51) Família INTEL MSC-51 – CISC/von Neumann Membro original é o 8051; CPU de 8 bits otimizada para aplicações de controle; Poderosa capacidade de processamento booleano, incluindo lógica individual de bits; 64 Kbytes de endereçamento de memória de programa; 64 Kbytes de endereçamento de memória de dados; 4 Kbytes de memória de programa interna. Microcontrolador 8051 (MCS-51) Família INTEL MSC-51 128 bytes de memória RAM de dados interna; 32 linhas de I/O bidirecionais endereçáveis individualmente; 2 Timers/Contadores de 16 bits; 5 entradas de interrupções (3 internas e 2 externas) com 2 níveis de prioridade; 1 oscilador interno de clock. Microcontrolador 8051 (MCS-51) Microcontrolador 8051 (MCS-51) Philips/Signetics 8051 Family Product Name Process ROM RAM Pins 8-bit Ports Serial I/O Timers Special 8031/51 NMOS 4K 128 40 4 UART 2 Industry Standard 8032/52 NMOS 8K 256 40 4 UART 3 Industry Standard 8XC751 CEPROM 2K 64 24 2+3/8 I2C 1 24 Pin Skinny DIP 8XC752 CEPROM 2K 64 28 2+5/8 I2C 1 8-bit A/D,PWM 8XC31/51 CEPROM 4K 128 40 4 UART 2 20,24, 30MHz 8XCL410 SACMOS 4K 128 40 4 I2C 2 LowVolt/Power (1.8 volts) 80/3C851 EEPROM 4K 128 40 4 UART 2 256 EEPROM 8XC550 CEPROM 4K 128 40 4 UART 2 8-bit A/D, WD 8XC451 CEPROM 4K 128 68 7 UART 2 7 I/O Ports 8XC652 CEPROM 8K 256 40 4 UART,I2C 2 8K ROM, I2C Serial Bus 8XC52 CEPROM 8K 256 40 4 UART 3 Industry Standard 8XC053/054 CEPROM 8K/16k 192 42 4 2 TV Display (OSD), D/A 8XC562 CEPROM 8K 256 68 6 UART 4 8-bit A/D, PWM, WD, T2 8XC552 CEPROM 8K 256 68 6 UART,I2C 4 10-bit A/D, PWM, WD, T2 8XC654 CEPROM 16K 256 40 4 UART,I2C 2 16K ROM, I2C Serial Bus 8XC524 CEPROM 16K 512 40 4 UART, I2C 3 16K, 512 bytes, WD 8XC528 CEPROM 32K 512 40 4 UART,I2C 32K ROM, 512 RAM, WD -- 3 Microcontrolador 8051 (MCS-51) Pinagens Microcontrolador 8051 (MCS-51) Organização de Memória Microcontrolador 8051 (MCS-51) Memória de programa Externa Microcontrolador 8051 (MCS-51) Memória de dados Interna FFh Acessível somente por endereçamento indireto (128 bytes superiores) 80h 7Fh Acessível por endereçamento direto e indireto (128bytes inferiores) 00h FFh Acessível por endereçamento direto (SFRs: Portes, Bits de controles dos Timers, Acumulador, etc) 80h 80h Microcontrolador 8051 (MCS-51) 128 bytes inferiores da RAM 7Fh 30h 2Fh Endereçamento por byte Endereçável por bit e/ou byte 20h 1Fh R7 Banco 3 18h 17h R0 R7 Banco 2 Valor inicial do SP (Stack Pointer: ponteiro de pilha) após um sinal de Reset. 10h 0Fh R0 R7 Banco 1 08h 07h R0 R7 Banco 0 00Hh R0 Microcontrolador 8051 (MCS-51) Program Status Word bits 7 (PSW) = C 6 5 4 3 2 AC F0 RS1 RS0 OV 1 0 - P RS1 RS0 Banco Selecionado Registradores Selecionados Endereços de Memória Selecionados 0 0 0 R0 a R7 00h a 07h 0 1 1 R0 a R7 08h a 0Fh 1 0 2 R0 a R7 10h a 17h 1 1 3 R0 a R7 18h a 1Fh Microcontrolador 8051 (MCS-51) Registradores de Funções Especiais (SFRs) Registradores A ou ACC B* DPL DPH IE* IP SCON* SBUF PSW* PCON TCON* TMOD TH0 TL0 TH1 TL1 P0* P1* P2* P3* Endereço E0h F0h 82h 83h A8h B8h 98h 99h D0h 87h 88h 89h 8Ch 8Ah 8Dh 8Bh 80h 90h A0h B0h Nome dos Registradores Acumulador Registrador B Byte menos significativo do Ponteiro de Dados Byte mais significativo do Ponteiro de Dados Habilitador de Interrupções Priorizador de Interrupções Controlador da Comunicação Serial Buffer de Dados Serial Palavra de Status de Programa Controle de Potência Controle do Timer/Contador Modo de operação de Timer/Contador Byte mais significativo do Timer/Contador 0 Byte menos significativo do Timer/Contador 0 Byte mais significativo do Timer/Contador 1 Byte menos significativo do Timer/Contador 1 Porte 0 Porte 1 Porte 2 Porte 3 Microcontrolador 8051 (MCS-51) Regs de Funções Especiais (SFRs) Microcontrolador 8051 (MCS-51) Modos de endereçamento Particular On-chip Resources: This includes the Accumulator (A), the Stack Pointer (SP), the Data Pointer (DP), the Program Counter (PC), and the Carry (C). Other On-chip Registers are Memorymapped while these have special Op-codes. Immediate operands: The # sign is the designator. These are 8-bits except for DPTR contents (16-bits). Register operands: Designated as Rn, where n is 0..7. One of the four Register Banks is used (PSW selected). Microcontrolador 8051 (MCS-51) Modos de endereçamento Direct Operands: From 00 to FF Hex, specifies one of the internal data addresses. Indirect Address: Designated as @Ri, where i is 0 or 1, uses the contents of R0 or R1 in the selected Register Bank to specify the address. Other form is @A, using Accumulator contents. Microcontrolador 8051 (MCS-51) Instruction Set : Arithmetic Mnemonics Operands Bytes/Cycles ADD A, Rn 1/1 ADDC A, direct 2/1 SUBB A, @Ri 1/1 A, #data 2/1 INC A 1/1 DEC Rn 1/1 direct 2/1 @Ri 1/1 INC DPTR 1/2 MUL AB 1/4 DIV AB 1/4 DA A 1/1 Microcontrolador 8051 (MCS-51) Instruction Set : Logic Mnemonic Operands ANL A, Rn 1/1 ORL A, direct 2/1 XRL A, @Ri 1/1 A, #data 2/1 direct, A 2/1 direct, #data 3/2 C, bit 2/2 C, /bit 2/2 CLR A 1/1 CPL C 1/1 bit 2/1 Bytes/Cycles Microcontrolador 8051 (MCS-51) Instruction Set : Logic (cont'd) Mnemonic Operands RL A 1/1 RLC A 1/1 RR A 1/1 RRC A 1/1 SWAP A 1/1 SETB C 1/1 CLR bit Bytes/Cycles CPL 2/1 Microcontrolador 8051 (MCS-51) Instruction Set : Data Transfer Mnemonic Operands Bytes/Cycles MOV A, Rn 1/1 A, direct 2/1 A, @Ri 1/1 A, #data 2/1 Rn, A 1/1 Rn , direct 2/2 Rn, #data 2/1 direct, A 2/1 direct, Rn 2/2 direct, direct 3/2 direct, @Ri 2/2 direct, #data 3/2 Microcontrolador 8051 (MCS-51) Instruction Set : Data Transfer (cont'd) Mnemonic Operands MOV @Ri, A 1/1 @Ri, direct 2/2 @Ri, #data 2/1 DPTR, #data16 3/2 C, bit 2/1 bit, C 2/2 A,@DPTR 1/2 @DPTR,A 1/2 A,@Ri 1/2 @Ri,A 1/2 MOVX Bytes/Cycles Microcontrolador 8051 (MCS-51) Instruction Set: Data Transfer Mnemonic Operands MOVC A, @A+DPTR 1/2 A, @A+PC 1/2 PUSH direct 2/2 POP direct 2/2 XCH A, Rn 1/1 A, direct 2/1 A, @Ri 1/1 A, @Ri 1/1 XCHD (cont'd) Bytes/Cycles Microcontrolador 8051 (MCS-51) Instruction Set : Branching Mnemonic Operands Bytes/Cycles LCALL addr16 3/2 ACALL addr11 2/2 RET - 1/2 RETI - 1/2 LJMP addr16 3/2 AJMP addr11 2/2 SJMP rel 2/2 JMP @A+DPTR 1/2 JZ rel 2/2 JNZ rel 2/2 Microcontrolador 8051 (MCS-51) Instruction Set : Branching Mnemonic Operands CJNE A, direct, rel 3/2 A, #data, rel 3/2 Rn, #data, rel 3/2 @Ri,#data,rel 3/2 Rn, rel 2/2 direct, rel 3/2 NOP - 1/1 JC rel 2/2 JNC rel 2/2 JB bit, rel 3/2 JNB bit, rel 3/2 JBC bit, rel 3/2 DJNZ (cont'd) Bytes/Cycles Microcontrolador 8051 (MCS-51) Ferramentas de desenvolvimento IAR Microcontrolador 8051 (MCS-51) Portas de IO Four 8-bit I/O ports; Most have alternate functions; Quasi-bidirectional: • Soft pull-up when port latch contains a 1. Can be used as inputs (30kohm average pull-up). Microcontrolador 8051 (MCS-51) Porta P0 As an I/O port: • No strong pull-up, outputs act as open drain. As a multiplexed data bus: • • • • Tristate bus with strong pull-ups. 8-bit instruction bus, strobed by PSEN. Low byte of address bus, strobed by ALE. 8-bit data bus, strobed by WR and RD. 3.2 mA outputs (about 8 LS-TTL loads). Microcontrolador 8051 (MCS-51) Porta P1 As an I/O port: • Standard quasi-bidirectional. Alternate functions: • Only on some derivatives. 1.6 mA outputs (about 4 LS-TTL loads). Microcontrolador 8051 (MCS-51) Porta P2 As an I/O port: • Standard quasi-bidirectional. Alternate functions: • High byte of address bus for external program and data memory accesses. 1.6 mA outputs (about 4 LS-TTL loads). Microcontrolador 8051 (MCS-51) Porta P3 As an I/O port: • Standard quasi-bidirectional. Alternate functions: • • • • Serial I/O - TXD, RXD Timer clocks - T0, T1 Interrupts - INT0, INT1 Data memory - RD, WR 1.6 mA outputs (about 4 LSTTL loads). Microcontrolador 8051 (MCS-51) Valores após o RESET REGISTRO VALOR REGISTRO VALOR PC 0000 H TMOD 00 H ACC 00 H TCON 00 H B 00 H TH0 00 H PSW 00H TL0 00 H SP 07 H TH1 00 H DPTR 0000 H TL1 00 H P0 a P3 FF H ou 11111111 B SCON 00 H IP 0XX00000 B SBUF indeterminado IE 00 H PCON (CMOS) 0XXX0000 B Microcontrolador 8051 (MCS-51) Ligando o 8051 – Circuito de RESET típico Microcontrolador 8051 (MCS-51) Ligando o 8051 – Clock