Upload
ngonhu
View
222
Download
0
Embed Size (px)
Citation preview
06/08/2017
1
Parte 10BÔNUS
106/08/2017 206/08/2017
1. I2C2. USART3. OPERAÇÕES ARITMÉTICAS4. DSP5. APLICAÇÕES DE DSP6. INTEL® 8051
I2C1
06/08/2017 3
I2C
I2C1
06/08/2017 4
Diagrama
• A gigantesca complexidade do circuito empregado naimplementação do protocolo I2C™ na PIC16F877 emrelação ao protocolo SPI™ revela que a maior parte docircuito do módulo MSSP presta-se ao uso exclusivo doprotocolo I2C™ e que a implementação do protocoloSPI™ não acarreta aumento de custo no sistema.
I2C1
06/08/2017 5
SPI™/I2C™ – Pinagem
SDASCL
• Os dois pinos devemser configurados comoentrada.
• 18 RC3/SCL• 23 RC4/SDA
• TRISC<3> = 1 SCL Entrada• TRISC<4> = 1 SDA Entrada
I2C1
06/08/2017 6
Diagrama
• O mesmo pino (SDA) é usado para entrada e para saída.• Para a entrada, existe um buffer ST para filtragem de
altas frequências.• O deslocamento é feito a partir do bit mais significativo.• Esses dois pinos devem ser configurados como entrada.
glitch filter
glitch filter
06/08/2017
2
I2C1
06/08/2017 7
Diagrama
• O buffer register é o mesmo usado na função SPI™.• O shift register é o mesmo usado na função SPI™.
glitch filter
glitch filter
I2C1
06/08/2017 8
SFR’s – MSSP
SSPCON2
SSPSTAT
SSPCON
I2C1
06/08/2017 9
<SSPM3:SSPM0> SSP BSSP MSSP0110 I2C™ Slave0111
1000Reservado
I2C™ Master1001
Reservado
10101011 I2C™ Master1100 Reservado11011110 I2C™ Slave I2C™ Master1111
VEREMOS
SSPCONI2C1
06/08/2017 10
<SSPM3:SSPM0> Modo0110 I2C™ Slave mode, 7-bit address0111 I2C™ Slave mode, 10-bit address1000 I2C™ Master mode, clock = fOSC/(4(SSPADD+1))1001 I2C™ Firmware Controlled Master mode (slave idle)1010
I2C™ Firmware Controlled Master mode, 7-bit address with START and STOP bit interrupts enabled
1011I2C™ Firmware Controlled Master mode, 10-bit address with START and STOP bit interrupts enabled
11xx Reservado
SSPCON
VEREMOS
I2C1
06/08/2017 11
DiagramaI2C1
06/08/2017 12
Slave address• No SPI™, se vários slaves estão presentes, então o
master precisa usar bits de portas paralelas paraexecutar a função slave select, uma para cada slave.
• No I2C™, não existe a função slave select,economizando, assim, os bits de portas paralelas.
• Cada slave possui um exclusivo slave address, enviadojuntamente com as palavras de dados, em SDA.
• Este endereço pode ser de 7 (128 slaves) ou de 10 bits(1024 slaves).
• Este endereço é enviado antes das palavras de dados.
<SSPM3:SSPM0> Modo0110 I2C™ Slave mode, 7-bit address0111 I2C™ Slave mode, 10-bit address
06/08/2017
3
I2C1
06/08/2017 13
Slave address
<SSPM3:SSPM0> Modo0110 I2C™ Slave mode, 7-bit address0111 I2C™ Slave mode, 10-bit address
• Em 7-bit address, o endereço é fornecido por SSPADR<6:0>.• Em 10-bit address, o endereço é fornecido por um GPR
seguido por SSPADR<7:0>.
X 6 5 4 3 2 1 0
SSPADR
7 6 5 4 3 2 1 0
SSPADR1 1 1 1 0 9 8 0
GPR
7-bit address
10-bit address
I2C1
06/08/2017 14
7-bit Slave address
SSPSR<7:1>
7-bitCOMPARATOR
SSPADD<7:1>
Acknowledge
8 shifts
SCL
I2C1
06/08/2017 15
• Cada slave possui um endereço próprio.• O endereço é armazenado em SSPADD<7:1>.• O slave verifica se o endereço enviado pelo
master corresponde ao seu endereço.• Em caso afirmativo (reconhecimento), é
gerado o pulso /ACK.
• SSPCON2<4> ACKEN: Acknowledge Sequence Enable bit.• SSPCON2<5> ACKDT: Acknowledge Data bit.• SSPCON2<6> ACKSTAT:Acknowledge Status bit.
7-bit Slave addressI2C1
06/08/2017 16
• O slave address precisa ser configurado emSSPADR<7:1> antes do início da comunicação.
• A primeira palavra enviada na comunicação é o slaveaddress.
• Se o slave address recebido na comunicação correspondea SSPADR, então a palavra de dado recebia em seguidaem SSPSR<7:0> é copiada para SSPBUF<7:0>.
• Se o slave address recebido na comunicação nãocorresponde a SSPADR, então a palavra de dado recebiaem seguida em SSPSR<7:0> não é copiada paraSSPBUF<7:0>.
• Várias palavras de dados podem ser recebidassequencialmente no mesmo slave address.
7-bit Slave address
I2C1
06/08/2017 17
Comunicação
Recepção do slave address Recepção/envio do dado
Recepção do slave address
Recepção do slave address Recep/env do dado 1 Recep/env do dado 2
I2C1
06/08/2017 18
Comunicação
Recepção do slave address
Start bit Stop bit
Nenhum dado
Recepção do slave address
Start bitUm dado
Recepção/envio do dado
Stop bit
Recepção do slave address
Start bitDois dado
Recepção/envio do dado 2
Stop bitRecepção/envio do dado 1
06/08/2017
4
I2C1
06/08/2017 19
SSPCON
• SSPCON<4> CKP: Clock Polarity Select bit.• 1: Relógio habilitado.• 0: Relógio em nível baixo (reset default).
• Usado, apenas, no modo Master.• Em nível baixo, é usado no clock stretch, visto mais adiante.
I2C1
06/08/2017 20
SSPCON
• SSPCON<5> SSPEN: Synchronous Serial Port Enable bit.• SSPCON<6> SSPOV: Receive Overflow Indicator bit.• SSPCON<7> WCOL: Write Collision Detect bit.• Possuem a mesma função vista no SPI™.
I2C1
06/08/2017 21
• SSPSTAT<0> BF: Buffer full status bit.• 1: Recepção completada ou transmissão em progresso.• 0: Nada recebido ou transmissão completada (reset default).
• SSPSTAT<1> UA: Update address (10-bit address).• 1: Precisa atualizar o endereço em SSPADD.• 0: Não precisa atualizar o endereço (reset default).
• SSPSTAT<2> R_W: Read/Write bit information.• 1: Read.• 0: Write (reset default).
SSPSTATI2C1
06/08/2017 22
• SSPSTAT<3> S: Start bit.• 1: Start bit has been detected last.• 0: Start bit was not detected last (reset default).
• SSPSTAT<4> P: Stop bit.• 1: Stop bit has been detected last.• 0: Stop bit was not detected last (reset default).
• SSPSTAT<5> D_NOT_A: Data/Address bit.• 1: A última palavra recebida é um dado.• 0: A última palavra recebida é um endereço (reset default).
SSPSTAT
I2C1
06/08/2017 23
• SSPSTAT<6> CKE: Edge select bit.• 1: Níveis de entrada conforme especificação SMBus™.• 0: Níveis de entr. conf. espec. I2C™ (reset default).
• SSPSTAT<7> SMP: Sample bit.• 1: Slew rate control disabled.• 0: Slew rate control enabled (reset default).
SSPSTATI2C1
06/08/2017 24
SSPCON2
• SSPCON2<0> SEN: START Condition Enable bit.• SSPCON2<1> RSEN: Repeated START Condition Enable bit.• SSPCON2<2> PEN: STOP Condition Enable bit.• SSPCON2<3> RCEN: Receive Enable bit.• SSPCON2<4> ACKEN: Acknowledge Sequence Enable bit.• SSPCON2<5> ACKDT: Acknowledge Data bit.• SSPCON2<6> ACKSTAT:Acknowledge Status bit.• SSPCON2<7> GCEN: General Call Enable bit.
• Bits 0 a 6: Somente no modo master.• Bits 7: Somente no modo master.
06/08/2017
5
I2C1
06/08/2017 25
General call address
• Após o início da comunicação, o primeiro byte recebidoidentifica qual slave precisa copiar o SSPSR<7:0> para oSSPBUF<7:0>.
• O general call address é um modo especial de operação, noqual todos os slave´s fazem esta cópia.
• SSPCON2<7> GCEN = 1
• SSPSTAT<2> R_W = 0
• Slave address = 00h
I2C1
06/08/2017 26
Modo multi-master
• O protocolo SPI™ permite a existência de, apenas, um master.• O protocolo I2C™ permite a existência de mais de um master.• É necessário procedimento para determinar se o barramento
está ocupado por uma comunicação efetuada por outro master.• Arbitration logic: Lógica para determinação de prioridade.• O master que iniciou a comunicação antes tem preferência.• Quando dois master´s iniciam a comunicação ao mesmo
tempo, algum critério de desempate precisa ser determinado.• Todos os master´s precisam estar operando no modo multi-
master.
USART2
2706/08/2017
USART
USART2
2806/08/2017
Introdução
• USART Universal SynchronousAsynchronous Receiver Transmitter.
• Também conhecido como:• SCI Serial Communications Interface .• Dois modos de operação:
• Assíncrono.• Síncrono.
USART2
2906/08/2017
Pinagem na PIC
RX/DTTX/CK
Multiplexação
• TX Asynchronous Transmit• RX Asynchronous Receive• CK Synchronous Clock• DT Synchronous Data
USART2
3006/08/2017
Modo assíncrono
• TXSTA<4> SYNC=0 (reset default)• Não é usado serial clock.• Uma via é o envio (TX) e a outra via é o recebimento (RX).• Os dados trafegam em duas vias, como no SPI™.• Como há duas vias de dados, é permitido full-duplex.• Como não existe serial clock, não existe master e slave.
06/08/2017
6
USART2
3106/08/2017
RXTX
• TXSTA<7> SCRC=X
• TXSTA<4> SYNC=0
• TRISC<7> = 1 RX Entrada• TRISC<6> = 0 TX Saída
Modo assíncronoUSART2
3206/08/2017
Modo síncrono• TXSTA<4> SYNC=1
• É usado serial clock, tal como no SSP.• Uma via é o relógio (CK) e a outra via é o dado (DT).• Os dados trafegam em uma única via, como no I2C™.• Como há uma única via de dados, não é permitido full-duplex.• É permitida comunicação half-duplex e simplex.• Como existe serial clock, existe master e slave.• TXSTA<7> SCRC: Clock Source Select bit.
• 0: Síncrono Slave (reset default).• 1: Síncrono Master.
USART2
3306/08/2017
DTCK
• TXSTA<7> SCRC=1
• TXSTA<4> SYNC=0
• TRISC<6> = 0 CK Saída
Modo síncrono masterUSART2
3406/08/2017
DTCK
• TXSTA<7> SCRC=0
• TXSTA<4> SYNC=0
• TRISC<6> = 1 CK Entrada
Modo síncrono slave
USART2
3506/08/2017
• Baud Rate Generator.• Baud: Bits transmitidos por segundo.• Usado nos modos:
• Assíncrono• Síncrono Master.
• Controlado pelo SFR SPBGR.• 8 bits.• SPBGR é um period register para um 8-bit timer.• O cálculo do Baud Rate em função de SPBGR é
diferente nos modo síncrono e assíncrono.
BRGUSART2
3606/08/2017
• TXSTA<2> BRGH: High Baud Rate Select bit.• 0: Baixa velocidade (reset default).• 1: Alta velocidade.
• Somente para modo assíncrono.• A alta velocidade é o quádruplo da baixa.
BRGH
Low High
06/08/2017
7
USART2
3706/08/2017
SFR’s• TXSTA Transmit Status 098h• RCSTA Receive Status 018h
• TXREG Transmit Data Register 019h• RCREG Receive Data Register 01Ah
• SPBRG Baud Rate Generator Register 099h
USART2
3806/08/2017
SFR’s
RCSTA
TXSTA
USART2
3906/08/2017
• RCSTA<7> SPEN: Serial Port Enable bit.• 0: Desabilitado (reset default).• 1: Habilitado.
• TXSTA<4> SYNC: USART Mode Select bit.• 0: Assíncrono (reset default).• 1: Síncrono.
• TXSTA<7> SCRC: Clock Source Select bit.• 0: Síncrono Slave (reset default).• 1: Síncrono Master.
ConfiguraçõesUSART2
4006/08/2017
• TXSTA<5> TXEN: Transmit Enable bit.• 0: Transmissão desabilitada (reset default).• 1: Transmissão habilitada.
• RCSTA<5> SREN: Single Receive Enable bit*.• 0: Desabilitad0 (reset default).• 1: Habilitado.
• RCSTA<4> CREN: Continuous Receive Enable bit.• 0: Desabilitad0 (reset default).• 1: Habilitado.
Configurações
* Somente no modo síncrono master.
USART2
4106/08/2017
• Dois tipos de informação podem ser enviados:• Dado 8 bits.• Endereço 9 bits.• O USART permite o envio de palavras de 8 ou 9 bits.• O nono bit também pode ser usado como paridade.• O controle de paridade não está implementado em
hardware mas pode ser implementado em software.
Data / AddressUSART2
4206/08/2017
• TXSTA<6> TX9: 9-bit Transmit Enable bit.• 0: Transmissão de 8 bits (reset default).• 1: Transmissão de 9 bits.
• CXSTA<6> RX9: 9-bit Receive Enable bit.• 0: Recepção de 8 bits (reset default).• 1: Recepção de 9 bits.
• TXSTA<0> TX9D: 9th bit of transmit data.• RCSTA<0> RX9D: 9th bit of received data.• RCSTA<3> ADDEN: Address Detect Enable bit.
• 0: Desabilitado.• 1: Habilitado.
• O bit 9D é o mais significativo do endereço.
Address Detection
06/08/2017
8
USART2
4306/08/2017
Data / Address
AN547
USART2
4406/08/2017
• No modo assíncrono, os pinos TX e RXgarantem a comunicação full-duplex, tal comoocorre com o protocolo SPI™.
• No modo síncrono, é necessária a comunicaçãodo sinal de relógio (pino CK), a comunicação éfeita por um único pino (DT), half-duplex, talcomo ocorre com o protocolo I2C™.
• O modo assíncrono é mais utilizado.• Um exemplo de aplicação assíncrona é a
comunicação com PC por meio do protocoloRS-232 (requer adequação das tensões).
Modos
USART2
4506/08/2017
MAX232 e RS-232
http://www.ti.com/lit/ds/symlink/max232.pdf
• Dual EIA-232 drivers/receivers.• O protocolo RS232 não emprega níveis TTL.• Interface entre níveis TTL e RS232.
USART2
4606/08/2017
Ethernet na PIC
• Presente na PIC18 ou superior.• 10Base-T Ethernet transceiver.• 8KB dedicated Ethernet buffer RAM.• Up to 128KB of Flash, easily accommodating a TCP/IP stack.• Advanced analog and communication peripherals.
USART2
4706/08/2017
• Quando não há transmissão nem recepção,o pino permanece em nível lógico alto.
• Ao iniciar uma transmissão ou recepção, oprocedimento é identificado por meio dostart bit.
• O start bit é ativo em nível baixo.• Se o pino RX recebe o start bit, é iniciada
uma recepção.• Se é iniciada uma transmissão, o pino TX
recebe o start bit
Modo Assíncrono – DesocupadoUSART2
4806/08/2017
• Ao escrever em TXREG, os oito bits dodado ou os nove bits do endereço sãocopiados para o transmit shift register.
• Os bits são enviados ao pino TX.• Inicialmente, é enviado o start bit.• A palavra é enviada (8 ou nove bits).• O bit 0 é enviado primeiramente.• Para finalizar, é enviado o stop bit.
Modo Assíncrono – Transmissão
06/08/2017
9
USART2
4906/08/2017
Modo Assíncrono – Transmissão• A existência do TXREG e do transmit shift register
permite que a segunda palavra seja escritaantes do término do envio da primeira palavra.
USART2
5006/08/2017
Modo Assíncrono – Transmissão
Transmit Shift Register
USART2
5106/08/2017
Modo Assíncrono – TransmissãoDado = 00100101b
Endereço = 100100101b
USART2
5206/08/2017
• O start bit é identificado no pino RX.• Os bits são enviados ao receive shift register.• O bit 0 é recebido primeiramente.• O stop bit é identificado no pino RX.• A palavra é copiada a um registrador provisório (buffer).• O buffer é copiado para RXREG e RX9D.
Modo Assíncrono – Recepção
USART2
5306/08/2017
Modo Assíncrono – Recepção
Receive Shift Register
USART2
5406/08/2017
Modo Assíncrono – Recepção
06/08/2017
10
USART2
5506/08/2017
EUSART
• Enhanced USART.• Presente na PIC18 ou superior.• Possui recursos adicionais como:
• Automatic baud rate detection.• Automatic baud rate calibration.• Automatic wake-up on Sync Break reception.• 12-bit Break character transmit.
OPERAÇÕES ARITMÉTICAS3
06/08/2017 56
OPERAÇÕES ARITMÉTICAS
OPERAÇÕES ARITMÉTICAS3
06/08/2017 57
Algoritmos• Em fundo rosa, são apresentados os algoritmos que
aplicam as rotações.• Quando rotações são usadas (RRF e RLF), e se presume
que o argumento seja um número inteiro de 8 bits, épreciso colocar o carry em zero previamente.
• BCF STATUS, C
• Quando várias rotações são realizadas, é precisoreiniciar o carry antes de cada rotação.
• Em fundo verde, são apresentados os algoritmos que nãoaplicam as rotações, não requerendo limpeza do carry.
• Em fundo branco, são apresentadas outras opções.• Todos esses programas usam, apenas, um GPR.
OPERAÇÕES ARITMÉTICAS3
06/08/2017 58
1 – Multiplicação por 2
; 01 - Multiplicação por 2; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 2BCF STATUS,CRLF ondecadê,F
end
Dois opcodes
; 01 - Multiplicação por 2; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 2MOVF ondecadê,WADDWF ondecadê,F
end
Máximo: 127
OPERAÇÕES ARITMÉTICAS3
06/08/2017 59
2 – Multiplicação por 3
; 02 - Multiplicação por 3; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 3BCF STATUS,CRLF ondecadê,WADDWF ondecadê,F
end
Três opcodes
; 02 - Multiplicação por 3; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 3MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
end
Máximo: 85
OPERAÇÕES ARITMÉTICAS3
06/08/2017 60
3 – Multiplicação por 4
; 03 - Multiplicação por 4; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 2BCF STATUS,CRLF ondecadê,F
;multiplica por 2BCF STATUS,CRLF ondecadê,F
end
Outras opções:
Quatro opcodes
MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,F
; 03 - Multiplicação por 4; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 2MOVF ondecadê,WADDWF ondecadê,F
;multiplica por 2MOVF ondecadê,WADDWF ondecadê,F
end
Máximo: 63
BCF STATUS,CBCF STATUS,0x7RLF ondecadê,FRLF ondecadê,F
06/08/2017
11
OPERAÇÕES ARITMÉTICAS3
06/08/2017 61
4 – Multiplicação por 5
; 04 - Multiplicação por 5; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 2MOVF ondecadê,WADDWF ondecadê,F
ADDWF ondecadê,WADDWF ondecadê,F
end
; 04 - Multiplicação por 5; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 2BCF STATUS,CRLF ondecadê,W
ADDWF ondecadê,FADDWF ondecadê,F
end
Quatro opcodesMáximo: 55
OPERAÇÕES ARITMÉTICAS3
06/08/2017 62
5 – Multiplicação por 6
; 05 - Multiplicação por 6; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 2BCF STATUS,CRLF ondecadê,F
;multiplica por 3BCF STATUS,CRLF ondecadê,WADDWF ondecadê,F
end
; 05 - Multiplicação por 6; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 2MOVF ondecadê,WADDWF ondecadê,F
;multiplica por 3MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
end
Cinco opcodesMáximo: 42
OPERAÇÕES ARITMÉTICAS3
06/08/2017 63
6 – Multiplicação por 7
; 06 - Multiplicação por 7; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
BCF STATUS,CRLF ondecadê,WADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,F
end
; 06 - Multiplicação por 7; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
end
Cinco opcodesMáximo: 36
OPERAÇÕES ARITMÉTICAS3
06/08/2017 64
7 – Multiplicação por 8
; 07 - Multiplicação por 8; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
end
Cinco opcodes
; 07 - Multiplicação por 8; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
BCF STATUS,CRLF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,F
end
Máximo: 31
Outras opções:MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,F
BCF STATUS,CBCF STATUS,0x7RLF ondecadê,FRLF ondecadê,F
OPERAÇÕES ARITMÉTICAS3
; 08 - Multiplicação por 9; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 3BCF STATUS,CRLF ondecadê,WADDWF ondecadê,F
;multiplica por 3BCF STATUS,CRLF ondecadê,WADDWF ondecadê,F
end
06/08/2017 65
8 – Multiplicação por 9; 08 - Multiplicação por 9; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 3MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
;multiplica por 3MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
end
;multiplica por 2MOVF ondecadê,WADDWF ondecadê,F
ADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,F
Seis opcodes
;multiplica por 3BCF STATUS,CRLF ondecadê,WADDWF ondecadê,F
ADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,F
;multiplica por 2MOVF ondecadê,WADDWF ondecadê,F
ADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
Máximo: 28
OPERAÇÕES ARITMÉTICAS3
06/08/2017 66
9 – Multiplicação por 10Seis opcodes
; 09 - Multiplicação por 10; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
BCF STATUS,CRLF ondecadê,WADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,F
end
; 09 - Multiplicação por 10; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
end
;multiplica por 2MOVF ondecadê,WADDWF ondecadê,F
;multiplica por 5 (não isolado)MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,F
Máximo: 25
06/08/2017
12
OPERAÇÕES ARITMÉTICAS3
06/08/2017 67
10 – Multiplicação por 11
; 10 - Multiplicação por 11; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
BCF STATUS,CRLF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
end
Seis opcodes
; 10 - Multiplicação por 11; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,F
end
Máximo: 23
OPERAÇÕES ARITMÉTICAS3
; 11 - Multiplicação por 12; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
BCF STATUS,CRLF ondecadê,WADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,F
end
; 11 - Multiplicação por 12; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
end
06/08/2017 68
11 – Multiplicação por 12Seis opcodes
Máximo: 21
OPERAÇÕES ARITMÉTICAS3
; 12 - Multiplicação por 13; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
BCF STATUS,CRLF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
end
; 12 - Multiplicação por 13; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,F
end
06/08/2017 69
12 – Multiplicação por 13Seis opcodes
Máximo: 19
OPERAÇÕES ARITMÉTICAS3
06/08/2017 70
13 – Multiplicação por 14Sete opcodes
; 13 - Multiplicação por 14; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 7MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
;multiplica por 2MOVF ondecadê,WADDWF ondecadê,F
end
; 13 - Multiplicação por 14; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 7BCF STATUS,CRLF ondecadê,WADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,F
;multiplica por 2BCF STATUS,CRLF ondecadê,F
end
MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,F
MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
Máximo: 18
OPERAÇÕES ARITMÉTICAS3
06/08/2017 71
14 – Multiplicação por 15Sete opcodes
; 14 - Multiplicação por 15; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 5MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,F
;multiplica por 3MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
end
; 14 - Multiplicação por 15; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 5BCF STATUS,CRLF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
;multiplica por 3BCF STATUS,CRLF ondecadê,WADDWF ondecadê,F
end; 14 - Multiplicação por 15; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVLW 0x0fANDWF ondecadê,FSWAPF ondecadê,FSWAPF ondecadê,WSUBWF ondecadê,F
end
MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,F
MOVF ondecadê,WADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
Máximo: 17
OPERAÇÕES ARITMÉTICAS3
06/08/2017 72
15 – Multiplicação por 16; 15 - Multiplicação por 16; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
SWAPF ondecadê,F
end
Um opcodeMáximo: 15
06/08/2017
13
OPERAÇÕES ARITMÉTICAS3
06/08/2017 73
16 – Multiplicação por 17; 16 - Multiplicação por 17; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
SWAPF ondecadê,FSWAPF ondecadê,WADDWF ondecadê,F
end
Três opcodesMáximo: 15
OPERAÇÕES ARITMÉTICAS3
06/08/2017 74
17 – Multiplicação por 18; 17 - Multiplicação por 18; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
SWAPF ondecadê,FSWAPF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
end
Quatro opcodesMáximo: 13
OPERAÇÕES ARITMÉTICAS3
06/08/2017 75
18 – Multiplicação por 19Cinco opcodes
; 18 - Multiplicação por 19; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
SWAPF ondecadê,FSWAPF ondecadê,WADDWF ondecadê,FADDWF ondecadê,FADDWF ondecadê,F
end
MOVF ondecadê,WADDWF ondecadê,WADDWF ondecadê,WSWAPF ondecadê,FADDWF ondecadê,F
Máximo: 13
OPERAÇÕES ARITMÉTICAS3
06/08/2017 76
19 – Multiplicação por 20; 19 - Multiplicação por 20; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVF ondecadê,WADDWF ondecadê,WSWAPF ondecadê,FADDWF ondecadê,FADDWF ondecadê,F
end
Cinco opcodesMáximo: 12
OPERAÇÕES ARITMÉTICAS3
06/08/2017 77
20 – Multiplicação por 21Sete opcodes
; 20 - Multiplicação por 21; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
end
MOVF ondecadê,WADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,F
Máximo: 12
OPERAÇÕES ARITMÉTICAS3
06/08/2017 78
21 – Multiplicação por 22Seis opcodes
; 21 - Multiplicação por 22; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVF ondecadê,WADDWF ondecadê,WADDWF ondecadê,WSWAPF ondecadê,FADDWF ondecadê,FADDWF ondecadê,F
end
Máximo: 11
06/08/2017
14
OPERAÇÕES ARITMÉTICAS3
06/08/2017 79
22 – Multiplicação por 24
; 22 - Multiplicação por 24; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
;multiplicação por 16SWAPF ondecadê,F
;multiplicação por 1,5BCF STATUS,CRRF ondecadê,WADDWF ondecadê,F
end
Quatro opcodesMáximo: 10
OPERAÇÕES ARITMÉTICAS3
06/08/2017 80
23 – Multiplicação por 25
; 23 - Multiplicação por 25; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 5MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,F
;multiplica por 5MOVF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,F
end
; 23 - Multiplicação por 25; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
;multiplica por 5BCF STATUS,CRLF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
;multiplica por 5BCF STATUS,CRLF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
end
Oito opcodesMáximo: 10
OPERAÇÕES ARITMÉTICAS3
06/08/2017 81
24 – Multiplicação por 32Três opcodes
; 24 - Multiplicação por 32; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
SWAPF ondecadê,FBCF STATUS,CRLF ondecadê,F
end
Máximo: 7
OPERAÇÕES ARITMÉTICAS3
06/08/2017 82
25 – Multiplicação por 33Seis opcodes
; 25 - Multiplicação por 33; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVLW 0x0fANDWF ondecadê,FSWAPF ondecadê,FSWAPF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
end
OPERAÇÕES ARITMÉTICAS3
06/08/2017 83
26 – Multiplicação por 34Sete opcodes
; 26 - Multiplicação por 34; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVLW 0x0fANDWF ondecadê,FSWAPF ondecadê,FSWAPF ondecadê,WADDWF ondecadê,FMOVF ondecadê,WADDWF ondecadê,F
end
OPERAÇÕES ARITMÉTICAS3
06/08/2017 84
27 – Multiplicação por 35Sete opcodes
; 27 - Multiplicação por 35; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVLW 0x0fANDWF ondecadê,FSWAPF ondecadê,FSWAPF ondecadê,WADDWF ondecadê,FADDWF ondecadê,WADDWF ondecadê,F
end
06/08/2017
15
OPERAÇÕES ARITMÉTICAS3
06/08/2017 85
28 – Multiplicação por 49Sete opcodes
; 28 - Multiplicação por 49; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVLW 0x0fANDWF ondecadê,FSWAPF ondecadê,FSWAPF ondecadê,WADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
end
OPERAÇÕES ARITMÉTICAS3
06/08/2017 86
29 – Multiplicação por 50Sete opcodes
; 29 - Multiplicação por 50; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
MOVLW 0x0fANDWF ondecadê,FSWAPF ondecadê,FSWAPF ondecadê,WADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
end
OPERAÇÕES ARITMÉTICAS3
06/08/2017 87
30 – Multiplicação por 64Quatro opcodes
; 30 - Multiplicação por 64; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
RLF ondecadê,FRLF ondecadê,FMOVLW 0x0cANDWF ondecadê,FSWAPF ondecadê,F
end
OPERAÇÕES ARITMÉTICAS3
06/08/2017 88
31 – Multiplicação por 128Quatro opcodes
; 31 - Multiplicação por 128; Argumento inteiro, desprezar overflow
#include <p16f877.inc>constant ondecadê = 0x20
RLF ondecadê,FRLF ondecadê,FRLF ondecadê,FMOVLW 0x08ANDWF ondecadê,FSWAPF ondecadê,F
end
OPERAÇÕES ARITMÉTICAS3
06/08/2017 89
32 – Multiplicação por 0,5
; 32 - Multiplicação por 0,5; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
;divide por 2BCF STATUS,CRRF ondecadê,F
end
Dois opcodes
OPERAÇÕES ARITMÉTICAS3
06/08/2017 90
33 – Multiplicação por 1,5
; 33 - Multiplicação por 1,5; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
BCF STATUS,CRRF ondecadê,WADDWF ondecadê,F
end
Três opcodes
06/08/2017
16
OPERAÇÕES ARITMÉTICAS3
06/08/2017 91
34 – Multiplicação por 2,5
; 34 - Multiplicação por 2,5; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
BCF STATUS,CRRF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
end
Quatro opcodes
OPERAÇÕES ARITMÉTICAS3
06/08/2017 92
35 – Multiplicação por 3,5; 35 - Multiplicação por 3,5; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
BCF STATUS,CRRF ondecadê,WADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
end
Cinco opcodes
OPERAÇÕES ARITMÉTICAS3
06/08/2017 93
36 – Multiplicação por 4,5
; 36 - Multiplicação por 4,5; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
BCF STATUS,CRRF ondecadê,WADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
end
Seis opcodes
BCF STATUS,CRRF ondecadê,WBCF STATUS,CRLF ondecadê,FADDWF ondecadê,WADDWF ondecadê,F
Outra opção:
OPERAÇÕES ARITMÉTICAS3
06/08/2017 94
38 – Multiplicação por 0,25; 38 - Multiplicação por 0,25; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
;divide por 2BCF STATUS,CRRF ondecadê,F
;divide por 2BCF STATUS,CRRF ondecadê,F
end
Quatro opcodes
OPERAÇÕES ARITMÉTICAS3
06/08/2017 95
39 – Multiplicação por 0,75
; 39 - Multiplicação por 0,75; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
BCF STATUS,CRRF ondecadê,FBCF STATUS,CRRF ondecadê,WADDWF ondecadê,F
end
Cinco opcodes
OPERAÇÕES ARITMÉTICAS3
06/08/2017 96
40 – Multiplicação por 1,25
; 40 - Multiplicação por 1,25; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
BCF STATUS,CRRF ondecadê,FBCF STATUS,CRRF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
end
Seis opcodes
MOVF ondecadê,WBCF STATUS,CRRF ondecadê,FBCF STATUS,CRRF ondecadê,FADDWF ondecadê,F
Outra opção*:
*Contribuição de Diego Fernandes Almeida Silva e João Paulo Vieira Cordeiro
06/08/2017
17
OPERAÇÕES ARITMÉTICAS3
06/08/2017 97
41 – Multiplicação por 1,75; 41 - Multiplicação por 1,75; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
BCF STATUS,CRRF ondecadê,FBCF STATUS,CRRF ondecadê,WADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
end
Sete opcodes
OPERAÇÕES ARITMÉTICAS3
06/08/2017 98
42 – Multiplicação por 40
; 42 - Multiplicação por 40; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
;multiplicação por 16MOVLW 0x0fANDWF ondecadê,FSWAPF ondecadê,F
;multiplicação por 2,5BCF STATUS,CRRF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
end
Sete opcodes
OPERAÇÕES ARITMÉTICAS3
06/08/2017 99
43 – Multiplicação por 48
; 43 - Multiplicação por 48; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
;multiplicação por 16MOVLW 0x0fANDWF ondecadê,FSWAPF ondecadê,F
;multiplicação por 3BCF STATUS,CRLF ondecadê,WADDWF ondecadê,F
end
Seis opcodes
MOVLW 0x0fANDWF ondecadê,FSWAPF ondecadê,WSWAPF ondecadê,FADDWF ondecadê,FADDWF ondecadê,F
Outra opção:
OPERAÇÕES ARITMÉTICAS3
06/08/2017 100
44 – Multiplicação por 56; 44 - Multiplicação por 56; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
;multiplicação por 16MOVLW 0x0fANDWF ondecadê,FSWAPF ondecadê,F
;multiplicação por 3,5BCF STATUS,CRRF ondecadê,WADDWF ondecadê,WADDWF ondecadê,WADDWF ondecadê,F
end
Sete opcodes
OPERAÇÕES ARITMÉTICAS3
06/08/2017 101
45 – Multiplicação por 80
; 45 - Multiplicação por 56; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
MOVLW 0x0fANDWF ondecadê,FSWAPF ondecadê,WSWAPF ondecadê,FADDWF ondecadê,WADDWF ondecadê,FADDWF ondecadê,F
end
Sete opcodes
OPERAÇÕES ARITMÉTICAS3
06/08/2017 102
xx – Multiplicação por 96
; xx - Multiplicação por 96; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
;multiplicação por 32RLF ondecadê,FMOVLW 0x0eANDWF ondecadê,FSWAPF ondecadê,F
;multiplicação por 3BCF STATUS,CRLF ondecadê,WADDWF ondecadê,F
end
Sete opcodes
06/08/2017
18
OPERAÇÕES ARITMÉTICAS3
06/08/2017 103
xx – Multiplicação por 192; xx - Multiplicação por 96; Argumento inteiro, desprezar parte fracionária
#include <p16f877.inc>constant ondecadê = 0x20
;multiplicação por 64RLF ondecadê,FRLF ondecadê,FMOVLW 0x0cANDWF ondecadê,FSWAPF ondecadê,F
;multiplicação por 3BCF STATUS,CRLF ondecadê,WADDWF ondecadê,F
end
Oito opcodes
DSP4
06/08/2017 104
DSP
DSP4
06/08/2017 105
• DSP – Digital Signal Processor.• Processador digital para sinais.• Sinal: Grandeza física que retrata uma informação.• Processador específico para tratamento digital de sinais.• Neste tipo de aplicação, é muito mais rápido do que a MCU.
Significado
• O ponto forte da DSP é a alta capacidade de realizaçãode operações matemáticas complexas que permitam atransformação de um sinal original em um sinal desejado.
DSP4
06/08/2017 106
• O processamento digital de sinais também pode serrealizado por um P, MCU ou, até mesmo, umcomputador, porém de forma mais lenta.
• A vantagem do uso de computador é a facilidade naalteração de parâmetros e da programação.
• A resposta de um DSP é sempre mais lenta do quea proveniente de um processamento analógico.
• A vantagem do processamento digital é a menorsensibilidade a interferências externas ao processo.
Significado
DSP4
06/08/2017 107
Performance em aplicação específica
• Comparação entre DSP, MCU e P comigual capacidade de processamento (MIPS).
Analógico
DSP
MCU
P
Computador
DSP4
06/08/2017 108
Exemplos de DSP’s32-BIT FLOATING POINT (5% do mercado):
– TI TMS320C3X, TMS320C67xx– AT&T DSP32C– ANALOG DEVICES ADSP21xxx– Hitachi SH-4
16-BIT FIXED POINT (95% do mercado):– TI TMS320C2X, TMS320C62xx– Infineon TC1xxx (TriCore1)– MOTOROLA DSP568xx, MSC810x– ANALOG DEVICES ADSP21xx– Agere Systems DSP16xxx, Starpro2000– LSI Logic LSI140x (ZPS400)– Hitachi SH3-DSP– StarCore SC110, SC140
http://meseec.ce.rit.edu/eecc722-fall2003/722-10-8-2003.pdf, página 13, 2003
06/08/2017
19
DSP4
06/08/2017 109
Exemplos de aplicações• Real/Non-real time procesing• Simulação• Radares militares• Controle• Computadores• Processamento de imagem/som• Internet/redes de computadores• Comunicação digital• Telefonia (móvel, VOIP)• Modem’s (dial-up, 2G/3G, cable)• Televisão digital• Instrumentos musicais
http://meseec.ce.rit.edu/eecc722-fall2003/722-10-8-2003.pdf, página 15, 2003
DSP4
06/08/2017 110
Tipos de aquisição de dados• Non-real time procesing• Um arquivo é gerado com o sinal adquirido.• A aquisição do sinal é feita por um certo tempo.• O processamento é feito sobre o arquivo.• O processamento do arquivo pode ser lento.• A exigência de performance é menor.
• Real time procesing• Não há geração de arquivo.• A aquisição do sinal é feita por um tempo indefinido.• O processamento é feito sobre o sinal continuamente.• A exigência de performance é maior.
DSP4
06/08/2017 111
Dados para o processamento
• Arquivo de amostragem – Sample• Non-real time procesing
• Sinal contínuo infinito – Stream• Real time procesing
DSP4
06/08/2017 112
Exemplos
http://meseec.ce.rit.edu/eecc722-fall2003/722-10-8-2003.pdf, página 18, 2003
DSP4
06/08/2017 113
Programação mais comum
• P: Linguagens de alto nível – Exemplo: Java• MCU: Linguagens de baixo nível – Exemplo: C• DSP: Linguagens de baixo nível – Exemplo: C
• P: Multitarefa• MCU: Monotarefa• DSP: Monotarefa
• Exemplos de sistemas P multitarefa: smartphone, smartTV.• Exemplos de sistemas MCU ou DSP monotarefa: telefone e
TV convencionais.
DSP4
06/08/2017 114
Sinal analógico
t
intensidade
• Pode mudar em qualquer instante.• Pode assumir qualquer valor.• Não possui descontinuidade.• A função é derivável em todos os pontos.
06/08/2017
20
DSP4
06/08/2017 115
Sinal analógico amostrado
t
intensidade
• Pode mudar, apenas, em instantes determinados.• Pode assumir qualquer valor analógico.• É descontínuo no tempo.• Proveniente de circuito de amostra e retenção (sample/hold)
DSP4
06/08/2017 116
Sinal analógico amostradohttp://www.eecs.tufts.edu/~dsculley/tutorial/opamps/sampleAndHold.JPG
http://www.spectrum-soft.com/news/winter97/sample2.gif
DSP4
06/08/2017 117
Sinal analógico quantizadointensidade
• Pode mudar em qualquer instante.• Pode assumir, apenas, valores pré-determinados.• É descontínuo em intensidade.
t
DSP4
06/08/2017 118
Sinal analógico amostrado e quantizado
• Pode mudar, apenas, em instantes determinados.• Pode assumir, apenas, valores pré-determinados.• É descontínuo no tempo e na intensidade.• Proveniente de um conversor D/A.
intensidade
t
DSP4
06/08/2017 119
Parâmetros do sinal analógico processado• Sampling rate.• Taxa de amostragem.• Frequência de amostragem.
• Bit rate.• Taxa de bits.• Bits usados na quantização.
• Exemplo: CD-DA.• 44,1 kHz• 16 bits
DSP4
06/08/2017 120
Exemplo 1• Tempo de 16 horas diárias.• Conversor A/D com resolução de 4 bits.• Período de amostra de 8ms.• Determine o tamanho do arquivo diário.
06/08/2017
21
DSP4
06/08/2017 121
Quantização não linear• O intervalo entre os valores quantizados não é constante.• Valores baixos recebem intervalos baixos.• A resolução é proporcional ao valor instantâneo sinal.• Isto melhora a relação sinal/ruído em sinais alternados.
t
intensidade
DSP4
06/08/2017 122
Quantização não linear• Escala logarítmica.• Usado em som e imagem.
nível 1nível 2nível 3nível 4
nível 5
nível 6
nível 7
DSP4
06/08/2017 123
Exemplo 2• Quantização logarítmica.• O nível 3 vale 6mV.• O nível 4 vale 8mV.• Determine n1, n2, n5 e n6.
3,375mV4,5mV6mV8mV
10,67mV
14,22mV
DSP4
06/08/2017 124
Controle Linear• ASP – Analog Signal Processor• Emprega dispositivos analógicos.• Pode ser elétrico, mecânico, ótico, etc.• Pode ser proporcional, integral, derivativo, etc.• Proporciona o controle mais rápido.• O projeto envolve transformada de Laplace.• Operações matemáticas podem ser feitas or AMP-OP.
• Adição• Subtração• Multiplicação• Divisão
• Radiciação• Logaritmação• Exponencial• Derivação• Integração
DSP4
06/08/2017 125
Controle discreto
Discreto.• Emprega eletrônica digital.• O projeto envolve transformada Z.• A resposta é mais lenta do que no controle analógico.• Problemas: Histereses, propagação de atraso, harmônicos.• Operações matemáticas executadas por uma ULA.
DSP4
06/08/2017 126
ControleProcessado.• Para que a resposta seja rápida, usa-se DSP.• Para resposta lenta, pode-se usar P ou MCU.• O controle envolve tomadas de decisão.• Limiares são definidos para a decisão.
Processado por faixas.• O controle envolve tomadas de decisão.• Limiares são definidos para a decisão.• Faixas de valores para a entrada analógica são definidas.• Para cada faixa, é determinado o valor da saída analógica.
06/08/2017
22
DSP4
06/08/2017 127
Exemplo de controle processado por faixas
• Sistema de refrigeração por ventilador.• Abaixo de 20C, o motor é desligado.• Entre 20C e 25C, o motor recebe 1/4 da potência máxima.• Entre 25C e 30C, o motor recebe 2/4 da potência máxima.• Entre 30C e 35C, o motor recebe 3/4 da potência máxima.• Entre 35C e 40C, o motor recebe a potência máxima.
• O controle processado por faixaspode gerar oscilações na seleçãoda faixa por tempo indeterminado.
DSP4
06/08/2017 128
Vantagens do controle processado
• Facilidade na alteração de parâmetros.• Facilidade de projeto.• Facilidade no acréscimo de novas variáveis.• Pequena variação nos requisitos de hardware.• Facilidade na deteção de defeitos.• Possibilidade de monitoramento computacional.• Grande repetibilidade.
DSP4
06/08/2017 129
Desvantagens do controle processado
• Lentidão – Inviável para processos que requeremmonitoramento de muita informação em pouco tempo.
• Limitada faixa de temperatura de operação.• Para projetos pequenos, a versão analógica pode ser
mais barata.• Menor liberdade de escolha dos conceitos envolvidos
no projeto.
DSP4
06/08/2017 130
Controle digital
SensoresProcessamento
DigitalAtuadores
Input Output
DSP4
06/08/2017 131
Controle
• O controle é feito por meio da aplicação de funçõesdeterminadas.
• No controle analógico, estas funções são obtidas, deforma aproximada, por meio de circuitos analógicos.
• No controle processado, estas funções são obtidas apartir das funções básicas contidas na ULA.
• Nas DSP’s, a ULA pode conter funções maissofisticadas, a fim de facilitar a programação e arapidez de execução do programa.
DSP4
06/08/2017 132
ULA
MCU ou P:• ULA com poucas funções.• Funções sofisticadas requerem vários ciclos de instrução.
DSP:• ULA com muitas funções.• ULA com as funções específicas (DSP específica).• Um ou poucos ciclos para realizar operações sofisticadas.
06/08/2017
23
DSP4
06/08/2017 133
Realimentação
• Se nenhum sensor é afetado pelos atuadores, o controleé de malha aberta.
• Se, pelo menos, um sensor é afetado por, pelo menos,um atuador, o controle é de malha fechada.
• Um controle de malha aberta é transformado em controlede malha fechada por meio da realimentação (feedback).
DSP4
06/08/2017 134
Controle digital
SensoresProcessamento
DigitalAtuadores
Input Output
Feedback
DSP4
06/08/2017 135
ExemplosSensores• De posição• De temperatura• De pressão• De umidade• De luz• De força• De Ph• De som• De concentração• De viscosidade
Atuadores• Motor• Válvula solenóide• Aquecedor/Forno• Lâmpada• Alto-falante
DSP4
06/08/2017 136
Conversão analógico-digital
Sensores Conversores A/D
BarramentoAnalógico
Processamento
Digital
BarramentoDigital
Opções:• Conversor A/D separado.• Conversor A/D embutido no sensor.• Conversor A/D embutido na DSP ou MCU.
DSP4
06/08/2017 137
Sensoriamento de longa distância
• Para pequenas distâncias ou para sensores espalhados,a transmissão pode ser feita de forma paralela.
• Para longas distâncias ou para sensores concentrados,a transmissão pode ser feita de forma serial.
Sensores Conversores A/D
BarramentoAnalógico
Processamento
Digital
Inlcui entrada serial
Conversor paralelo /
serial
BarramentoDigital 1 bit
DSP4
06/08/2017 138
Sensoriamento de longa distância
Sensores Conversores A/D
BarramentoAnalógico
Processamento
Digital
Inlcui entrada serial
Conversor paralelo /
serial
BarramentoDigital 1 bit
Opções:• Conversores A/D e serial separados.• Conversor A/D embutido no sensor e serial separado.• Conversores A/D e serial embutidos no sensor.
• Como o conversor serial é simplex, há, apenas, uma via desaída de dados, mesmo se o protocolo for Microwire, SPI, etc.
06/08/2017
24
DSP4
06/08/2017 139
Derivadas• Muitas vezes, o valor médio ou instantâneo de
uma grandeza não é interessante.• Há casos em que a variação desta grandeza é
mais importante.• Como exemplo, tem-se o gradiente térmico, que
pode ser mais prejudicial a um sistemaelétrico/mecânico do que uma temperatura alta.
• Sensores especiais conseguem aplicar a derivadaprimeira no valor instantâneo da grandeza medida.
• A forma mais fácil de obter a derivada é por meiodo uso de amplificadores derivadores a AMP-OP.
• Outras funções, como logarítmo ou derivadasegunda, também podem ser obtidos.
DSP4
06/08/2017 140
Derivadas – Exemplo
• Em elevadores, a sacudida é o que determina oconforto para os usuários.
• Em robótica, a sacudida é o que determina o estressemecânico das partes móveis e do objeto manipulado.
DSP4
06/08/2017 141
Adequação do sensoriamento• A adequação do valor medido ao
processamento através da aplicação de algumafunção de transformação (derivação,integração, logaritmação, etc) geralmente éfeita de forma analógica diretamente no sinalfornecido pelo sensor.
• Esta operação pode ser feita por meio de umAMP-OP.
• Caso esta manipulação precise receberparâmetros configuráveis ou precise seralterada livremente, pode ser mais interessanteaplicar a alteração nos valores digitais.
DSP4
06/08/2017 142
Adequação do sensoriamento
SensoresDerivaçãoIntegração
LogaritmaçãoPotenciação
etc
Processamento
DigitalConversores
A/D
SensoresProcessamento Digital
Inlcui derivação, integraçãologaritmação, potenciação,
etc
Conversores A/D
Opção 1
Opção 2
APLICAÇÕES DE DSP5
APLICAÇÕES DE DSP
06/08/2017 143
APLICAÇÕES DE DSP5
06/08/2017 144
Exemplo: Som em computação• Exemplo do computador pessoal.• A CPU poderia lidar com o tratamento de som.• Isso tornaria a performance do computador muito baixa
para outras tarefas durante o tratamento do áudio.• Uma placa de som (off-borad ou on-board) faz o
tratamento do som, liberando a CPU para outras tarefas.• A placa de som possui um DSP (se for on-board, esta
DSP está incorporada ao chipset.• O tratamento do som pode incluir desde a conversão D/A,
como a decodificação de algoritmos de compactação e acolocação de efeitos de áudio.
06/08/2017
25
APLICAÇÕES DE DSP5
06/08/2017 145
Exemplo: Som em computaçãoAPLICAÇÕES DE DSP5
06/08/2017 146
http://www.soundblaster.com/images/desktop/products/zx_pdtimg1.png
Audio Processor: Sound Core3D
Audio Resolution: 24-Bit
Digital Audio Conv ertor (DAC): Cirrus Logic
Signal to Noise Ratio (SNR) (20kHz Low-pass f ilter, A-Wgt): 116dB
Maximum Play back Quality : 5.1 : Up to 96kHz Stereo Direct: Up to 192kHz
Frequency Response @96kHz:
Front Channel Out : 10Hz to 45kHz Rear Channel Out : 15Hz to 45kHz Center Out : 10Hz to 45kHz Headphone (33 ohms): 10Hz to 45kHz
Frequency Response @192kHz (Stereo Direct Only ):
Front Channel Out : 10Hz to 88kHz
16-bit to 24-bit Recording Sample Rates:
8,11.025,16, 22.05, 24, 32, 44.1, 48, 96 (kHz)
16-bit to 24-bit Play back Sample Rates:
8,11.025,16, 22.05, 24, 32, 44.1, 48, 96, 192 (kHz)
Maximum Recording Quality : Up to 24-bit/96kHz
I/O Ports (Main Card):
Headphone : 1 x Amplif ied 3.5mm jack Speaker Out : 3 x 3.5mm jacks(F/R/C-Sub)Line / Mic In : 1x shared 3.5mm jackOptical Out : 1x TOSLINKOptical In : 1x TOSLINK
Audio Control Module / Front Panel Connectiv ity:
Volume Control Knob Built-in Beam-Forming Microphone Headphone-Out : 1x 3.5mm jack, 1x 1/4” jackMicrophone-In : 1x 3.5mm jack, 1x 1/4” jack
600 Ohm Amplif ied Headphone Output: Maxim MAX97220A
Exemplo: Som em computação
APLICAÇÕES DE DSP5
06/08/2017 147
• Exemplo do computador pessoal.• A CPU poderia lidar com o tratamento de imagem.• O tratamento de imagem é muito mais crítico do que o
tratamento de som.• Jogos 3D têm impulsionado a indústria de placas de
processamento de imagem (on-board e,principalmente, off-board).
• O processamento é tão grande que essas placasutilizam GPU (CPU para gráficos), que consomemmuita energia, aquecem bastante e podem, atémesmo, ser mais caras do que a placa-mãe ou a CPU.
• O processamento de imagem é tão intenso que asplacas-mãe possuem barramento para uso específicodo tratamento de imagem.
Exemplo: Imagem em computaçãoAPLICAÇÕES DE DSP5
06/08/2017 148
Exemplo: Imagem em computação
http://www.nvidia.com/content/titan/us/img/titan_angle-view.png
http://images.productwiki.com/upload/images/nvidia_geforce_gt_520m.pnghttp://www.geforce.com/Active/en_US/shared/images/products/geforce-gt-610/geforce-gt-610-3qtr_gallery_preview.png
APLICAÇÕES DE DSP5
06/08/2017 149
Exemplo: IMGLIB
http://www.ti.com/tool/sprc264
• C6000 Image Processing Library (IMGLIB) is an optimizedimage/video processing function library for C programmers.
• It includes C-callable general-purpose image/videoprocessing routines that are typically used incomputationally intensive real-time applications.
• With these routines, you can achieve higher performancethan equivalent code written in standard ANSI C language.
• By providing ready-to-use DSP functions with source code,IMGLIB can significantly shorten your applicationdevelopment time.
APLICAÇÕES DE DSP5
06/08/2017 150
Classes de operações com imagem – IMGLIB
http://www.ti.com/lit/ug/spruf30a/spruf30a.pdf
• Análise de imagem.• Filtragem.• Compressão/descompressão.
06/08/2017
26
APLICAÇÕES DE DSP5
06/08/2017 151
Exemplos de operações de análise de imagem
http://www.ti.com/lit/ug/spruf30a/spruf30a.pdf
APLICAÇÕES DE DSP5
06/08/2017 152
Arquitetura de câmera DSP
http://www.electronicproducts.com/images2/z32texad0202.gif
APLICAÇÕES DE DSP5
06/08/2017 153
Exemplos de funções de câmera DSP• Ajuste à luminosidade.• Ajuste da temperatura de cor.• Ajuste de posicionamento.• Foco automático.• Flash automático.• Zoom máximo automático em função da macro.• Identificação de padrões (ex: sorriso).• Disparo automático por movimento ou som.• Compressão (JPG, LZH, MPEG, outros).• Redução de ruído (som e imagem).
APLICAÇÕES DE DSP5
06/08/2017 154
Exemplo: SGTL5000
http://cache.freescale.com/files/analog/doc/data_sheet/SGTL5000.pdf?pspll=1
• The SGTL5000 is a Low Power Stereo Codecwith Headphone Amp from Freescale, and isdesigned to provide a complete audio solutionfor portable products needing line-in, mic-in,line-out, headphone-out, and digital I/O.
• Target markets include portable mediaplayers, GPS units, and smart phones.
APLICAÇÕES DE DSP5
06/08/2017 155
Exemplo: SGTL5000
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=SGTL5000&nodeId=01435959C059C3
Analog InputsStereo Line In
Support for external analog inputCodec bypass for low power
MIC MIC bias providedProgrammable MIC gainAuto volume control
ADC 85 dB SNR and -70 dB THD+N (VDDA=1.8 V)93 dB SNR and -73 dB THD+N (VDDA = 3.3 V)
Analog OutputsDAC/Line Out
100 dB SNR and -85 dB THD+N (VDDA=3.3 V)DAP/HP Output
98 dB SNR and -80 dB THD+N(VDDA=1.8 V 16 Ohm load, DAC to headphone)45 mW max into 16 Ohm load @ 3.3 VCapless designBest in class PSRR without Lin Reg.Only two external components needed for digital playbackRamped digital volumesPopless volume0.5 db analog volume steps (0 db to – 64 db)
Integrated Digital Audio ProcessingSurround, bass, tone control/parametric equalizer/graphic equalizerDigital I/OI2S port to allow routing to applications processor
APLICAÇÕES DE DSP5
06/08/2017 156
Exemplo: SGTL5000
http://cache.freescale.com/files/graphic/block_diagram/SGTL5000_BD.gif
06/08/2017
27
APLICAÇÕES DE DSP5
06/08/2017 157
Exemplo: SGTL5000
http://cache.freescale.com/files/analog/doc/data_sheet/SGTL5000.pdf?pspll=1
APLICAÇÕES DE DSP5
06/08/2017 158
Exemplo de sistema programável com DSP
http://line6.com/tcddk/images/devbackground.jpg
APLICAÇÕES DE DSP5
06/08/2017 159
Exemplo de sistema programável com DSP
http://www.cuk-audio.com/uploads/images/SymNet_Designer_Glamour3o.pnghttp://www.cuk-audio.com/uploads/images/8x8DSPFront_MF.jpg
APLICAÇÕES DE DSP5
06/08/2017 160
dsPIC30F
http://www.microchip.com/_images/dsPIC30FArchblkdgrm.jpg
APLICAÇÕES DE DSP5
06/08/2017 161
dsPIC33F/E
http://www.microchip.com/_images/dsPIC33FArchblkdgrm.jpg
APLICAÇÕES DE DSP5
06/08/2017 162
SUMMARY• High performance 32-bit/40-bit floating-point processor optimized for high
performance audio processing• Single-instruction, multiple-data (SIMD) computational architecture• On-chip memory—2M bits of on-chip SRAM and 6M bits of on-chip mask
programmable ROM• Code compatible with all other members of the SHARC family• The ADSP-21367/ADSP-21368/ADSP-21369 are available with a 400 MHz
core instruction rate with unique audiocentric peripherals such as the digitalapplications interface, S/PDIF transceiver, serial ports, 8-channelasynchronous sample rate converter, precision clock generators, and more.
DEDICATED AUDIO COMPONENTS• S/PDIF-compatible digital audio receiver/transmitter• 4 independent asynchronous sample rate converters (SRC)• 16 PWM outputs configured as four groups of four outputs• ROM-based security features include• JTAG access to memory permitted with a 64-bit key• Protected memory regions that can be assigned to limit access under
program control to sensitive code• PLL has a wide variety of software and hardware multiplier/divider ratios
ADSP-21367/ADSP-21368/ADSP-21369
06/08/2017
28
APLICAÇÕES DE DSP5
06/08/2017 163
ADZS
-213
69-E
ZLIT
E-N
Dht
tp://
med
ia.d
igike
y.co
m/p
hoto
s/A
nalo
g%20
Devi
ces%
20Ph
otos
/ADZ
S-21
369-
EZLI
TE.J
PG
APLICAÇÕES DE DSP5
06/08/2017 164
ADZS
-213
69-E
ZLIT
E-N
D
http
://m
edia
.dig
ikey.
com
/pho
tos/
Ana
log%
20De
vice
s%20
Phot
os/A
DZS-
2136
9-EZ
LITE
.JPG
APLICAÇÕES DE DSP5
06/08/2017 165
VisualDSP++APLICAÇÕES DE DSP5
06/08/2017 166
VisualDSP++
http://www.automation-drive.com/EX/05-13-10/visualdsp_01_b.gif
APLICAÇÕES DE DSP5
06/08/2017 167
Exemplo de aplicação
http://www.ferrofish.de/gfx/b4000.jpg
Processadores:• Sharc DSP• Cortex 3 ARM
APLICAÇÕES DE DSP5
06/08/2017 168
Sistema embarcado
http://www.microchip.com/_images/dsPIC33FArchblkdgrm.jpg
• Embedded system.• Permite o uso de apenas alguns aplicativos.• Possui aplicação específica.• Tem baixo custo.• Performance facilmente medida.• Ideal para DSP.• Exemplo: Windows Embedded.
06/08/2017
29
APLICAÇÕES DE DSP5
06/08/2017 169
Exemplo de sistema embarcado com P
Placa-mãe dedicada
Sistema operacional dedicado
APLICAÇÕES DE DSP5
06/08/2017 170
Exemplo de sistema embarcado com P
Placa-mãe de PC rodando Windows™
6 INTEL® 8051
17106/08/2017
INTEL® 8051
6 INTEL® 8051
17206/08/2017
Siglas
• R0, R1, R2, R3,R4, R5, R6, R7: GPR´s (8 bits).• A: Acumulador (work register) (8 bits).• IRAM: Internal RAM address (8 bits).• #data: Palavra fornecida na instrução (8 bits).• PC: Program Counter (16 bits).• DPTR: Data Pointer: GPR (16 bits).
6 INTEL® 8051
17306/08/2017
Arquitetura
Program& Data
data bus
data bus
data bus
File registers
6 INTEL® 8051
17406/08/2017
Instruction Set00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
00 NOP AJMP LJMP RR INC INC INC INC INC INC INC INC INC INC INC INC
10 JBC ACALL LCALL RRC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC
20 JB AJMP RET RL ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD
30 JNB ACALL RETI RLC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC
40 JC AJMP ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL
50 JNC ACALL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL
60 JZ AJMP XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL
70 JNZ ACALL ORL JMP MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV
80 SJMP AJMP ANL MOVC DIV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV
90 MOV ACALL MOV MOVC SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB
a0 ORL AJMP MOV INC MUL ? MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV
b0 ANL ACALL CPL CPL CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE
c0 PUSH AJMP CLR CLR SWAP XCH XCH XCH XCH XCH XCH XCH XCH XCH XCH XCH
d0 POP ACALL SETB SETB DA DJNZ XCHD XCHD DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ
e0 MOVX AJMP MOVX MOVX CLR MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV
f0 MOVX ACALL MOVX MOVX CPL MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV
06/08/2017
30
6 INTEL® 8051
17506/08/2017
Instruction Set – Parte 1
Mnem SignificadoACALL Absolute CallADD Add Accumulator (With Carry)ADDC Add Accumulator (With Carry)AJMP Absolute JumpANL Bitwise ANDCJNE Compare and Jump if Not EqualCLR Clear RegisterCPL Complement RegisterDA Decimal AdjustDEC Decrement RegisterDIV Divide Accumulator by BDJNZ Decrement Register and Jump if Not ZeroINC Increment Register
Mnem SignificadoJB Jump if Bit SetJBC Jump if Bit Set and Clear BitJC Jump if Carry SetJMP Jump to AddressJNB Jump if Bit Not SetJNC Jump if Carry Not SetJNZ Jump if Accumulator Not ZeroJZ Jump if Accumulator ZeroLCALL Long CallLJMP Long JumpMOV Move MemoryMOVC Move Code MemoryMOVX Move Extended MemoryMUL Multiply Accumulator by BNOP No OperationORL Bitwise OR
6 INTEL® 8051
17606/08/2017
Mnem SignificadoPOP Pop Value From StackPUSH Push Value Onto StackRET Return From SubroutineRETI Return From InterruptRL Rotate Accumulator LeftRLC Rotate Accumulator Left Through CarryRR Rotate Accumulator RightRRC Rotate Accumulator Right Through CarrySETB Set BitSJMP Short JumpSUBB Subtract From Accumulator With BorrowSWAP Swap Accumulator NibblesXCH Exchange BytesXCHD Exchange DigitsXRL Bitwise Exclusive OR
Instruction Set – Parte 2
6 INTEL® 8051
17706/08/2017
General Purpose Registers
• Oito registradores.• R0, R1, R2, R3,
R4, R5, R6, R7.• Selecionados
através do opcode.
R0 R1 R2 R3 R4 R5 R6 R708 09 0a 0b 0c 0d 0e 0f
00 INC INC INC INC INC INC INC INC
10 DEC DEC DEC DEC DEC DEC DEC DEC
20 ADD ADD ADD ADD ADD ADD ADD ADD
30 ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC
40 ORL ORL ORL ORL ORL ORL ORL ORL
50 ANL ANL ANL ANL ANL ANL ANL ANL
60 XRL XRL XRL XRL XRL XRL XRL XRL
70 MOV MOV MOV MOV MOV MOV MOV MOV
80 MOV MOV MOV MOV MOV MOV MOV MOV
90 SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB
a0 MOV MOV MOV MOV MOV MOV MOV MOV
b0 CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE
c0 XCH XCH XCH XCH XCH XCH XCH XCH
d0 DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ
e0 MOV MOV MOV MOV MOV MOV MOV MOV
f0 MOV MOV MOV MOV MOV MOV MOV MOV
6 INTEL® 8051
17806/08/2017
Operações entre o acumulador e o GPR
R0 R1 R2 R3 R4 R5 R6 R708 09 0a 0b 0c 0d 0e 0f
20 ADD ADD ADD ADD ADD ADD ADD ADD
30 ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC
40 ORL ORL ORL ORL ORL ORL ORL ORL
50 ANL ANL ANL ANL ANL ANL ANL ANL
60 XRL XRL XRL XRL XRL XRL XRL XRL
90 SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB
• A resposta vai para o acumulador.• O acumulador é o primeiro operando.• O GPR é o segundo operando.• A = R op A• 1 byte (sem argumentos).
ADD AdiçãoADDC Adição com carryORL ORANL AND XRL XOR SUBB Subtração com borrow
6 INTEL® 8051
17906/08/2017
Operações com o GPR• A resposta vai para o GPR.• Um operando.• R = op (R)• 1 byte (sem argumentos).
R0 R1 R2 R3 R4 R5 R6 R708 09 0a 0b 0c 0d 0e 0f
00 INC INC INC INC INC INC INC INC
10 DEC DEC DEC DEC DEC DEC DEC DEC
INC IncrementoDEC Decremento
6 INTEL® 8051
18006/08/2017
R0 R1 R2 R3 R4 R5 R6 R708 09 0a 0b 0c 0d 0e 0f
70 MOV MOV MOV MOV MOV MOV MOV MOV
• O 8-bit data é copiado no GPR.• O dado é o operando.• R byte• 2 bytes (um argumento).
Operações de gravação de GPR
06/08/2017
31
6 INTEL® 8051
18106/08/2017
• O segundo operando é copiado no primeiro operando.• 1 byte (sem argumentos).
R0 R1 R2 R3 R4 R5 R6 R708 09 0a 0b 0c 0d 0e 0f
e0 MOV MOV MOV MOV MOV MOV MOV MOV
f0 MOV MOV MOV MOV MOV MOV MOV MOV
MOV A RMOV R A
Operações de movimentação entre GPR e A6 INTEL® 8051
18206/08/2017
• O segundo operando é copiado no primeiro operando.• Somente a memória interna pode ser acessada.• O argumento é o 8-bit IRAM address.• 2 bytes (um argumento).
R0 R1 R2 R3 R4 R5 R6 R708 09 0a 0b 0c 0d 0e 0f
80 MOV MOV MOV MOV MOV MOV MOV MOV
a0 MOV MOV MOV MOV MOV MOV MOV MOV
MOV IRAM RMOV R IRAM
Operações de movimentação com GPR e IRAM
6 INTEL® 8051
18306/08/2017
Operações de permutação entre GPR e A – XCH• Exchange bytes.• A R.• R A.• 1 byte (sem argumentos).
R0 R1 R2 R3 R4 R5 R6 R708 09 0a 0b 0c 0d 0e 0f
c0 XCH XCH XCH XCH XCH XCH XCH XCH
6 INTEL® 8051
18406/08/2017
Operações de decremento de GPR – DJNZ
R0 R1 R2 R3 R4 R5 R6 R708 09 0a 0b 0c 0d 0e 0f
d0 DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ
• Decrement and Jump if Not Zero.• O argumento é o 8-bit relative address da program memory.• 2 bytes (um argumento).
6 INTEL® 8051
18506/08/2017
Operação de comparação com GPR – CJNE
R0 R1 R2 R3 R4 R5 R6 R708 09 0a 0b 0c 0d 0e 0f
b0 CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE
• Compare and Jump If Not Equal.• O segundo operando é comparado com primeiro operando.• O primeiro operando é o GPR.• O segundo operando é o 8-bit data.• O primeiro argumento é o 8-bit data.• O segundo argumento é o 8-bit relative address.• 3 bytes (dois argumentos).
6 INTEL® 8051
18606/08/2017
Resumo das operações sobre GPRR0-7 Endereçamento
direto Bytes08-0f
00 INC R inc R 110 DEC R dec R 120 ADD A A + R 130 ADDC A A + R 140 ORL A A or R 150 ANL A A and R 160 XRL A A xor R 170 MOV R #data 280 MOV IRAM R 290 SUBB A A - R 1a0 MOV R IRAM 2b0 CJNE Compara R e #data 3c0 XCH A R, R A 1d0 DJZN R R-1 2e0 MOV A R 1f0 MOV R A 1
• 128 instruções.• Metade das instruções.
06/08/2017
32
6 INTEL® 8051
18706/08/2017
Endereçamento indireto
• Um GPR contém o 8-bit IRAM address.• O endereçamento indireto é sinalizado por @.• O GPR pode ser R0 ou R1.• O argumento é @R0 ou @R1.
6 INTEL® 8051
18806/08/2017
Endereçamento indiretoR0-7 Endereçamento
direto08-0f
00 INC R inc R10 DEC R dec R20 ADD A A + R30 ADDC A A + R40 ORL A A or R50 ANL A A and R60 XRL A A xor R70 MOV R data80 MOV IRAM R90 SUBB A A - Ra0 MOV R RAMb0 CJNE Compara R e datac0 XCH A R, R Ad0 DJZN R R-1e0 MOV A Rf0 MOV R A
@R0 @R1 Endereçamentoindireto06 07
00 INC INC @R inc @R10 DEC DEC @R dec@R20 ADD ADD A A + @R30 ADDC ADDC A A + @R40 ORL ORL A A or @R50 ANL ANL A A and @R60 XRL XRL A A xor @R70 MOV MOV @R byte80 MOV MOV IRAM @R90 SUBB SUBB A A - @Ra0 MOV MOV @R IRAMb0 CJNE CJNE Compara @R e datac0 XCH XCH A @R, @R A
e0 MOV MOV A @Rf0 MOV MOV @R A
6 INTEL® 8051
18906/08/2017
Operações entre A, IRAM e dataOperação Bytes
42 ORL IRAM = IRAM or A 252 ANL IRAM = IRAM and A 262 XRL IRAM = IRAM xor A 2f5 MOV IRAM A 2
Operação Bytes24 ADD A = A + data 234 ADDC A = A + data 244 ORL A = A or data 254 ANL A = A and data 264 XRL A = A xor data 274 MOV A data 294 SUBB A = A - data 2b4 CJNE Compara A e data 3
Operação Bytes
25 ADD A = A + IRAM 235 ADDC A = A + IRAM 245 ORL A = A or IRAM 255 ANL A = A and IRAM 265 XRL A = A xor IRAM 2e5 MOV A IRAM 295 SUBB A = A - IRAM 2c5 XCH A IRAM, IRAMA 2b5 CJNE Compara A e IRAM 385 MOV IRAM IRAM 3
Operação Bytes
43 ORL IRAM = IRAM or data 353 ANL IRAM = IRAM and data 363 XRL IRAM = IRAM xor data 375 MOV IRAM data 3
Nibble menos signific. Bytesd6 XCHD A @R, @R A 2d7 XCHD A @R, @R A 2
6 INTEL® 8051
19006/08/2017
Operações sobre A ou sobre IRAM
04 Operação Bytes00 INC A inc A 110 DEC A dec A 1e4 CLR A 0 1f4 CPL A A + 1 1
05 Operação Bytes00 INC IRAM inc IRAM 210 DEC IRAM dec IRAM 2d0 DJZN IRAM IRAM-1 3
6 INTEL® 8051
19106/08/2017
Operações sobre bits
Operação no bit(address) Bytes
b2 CPL bit(address) /bit(address) 2c2 CLR bit(address) 0 2d2 SETB bit(address) 1 2
Operação com acumulador Bytes
03 RR Rotate AccumulatorRight 1
13 RRC Rotate Accumulator Right Through Carry 1
23 RL Rotate AccumulatorLeft 1
33 RLC Rotate Accumulator Left Through Carry 1
Operação no C e no b Bytes72 ORL C C or bit address 282 ANL C C andbit address 2a0 ORL C C or /bit address 2b0 ANL C C and /bit address 292 MOV bit address C 2A2 MOV C bit address 2
Operação no carry Bytesb3 CPL C /C 1c3 CLR C 0 1d3 SETB C 1 1
6 INTEL® 8051
19206/08/2017
Outras operações lógicas/aritméticas
Operação Bytes00 NOP None 184 DIV Divide Accumulatorby B 1a4 MUL Multiply Accumulatorby B 1c4 SWAP Swap AccumulatorNibbles 1d4 DA Decimal Adjust Accumulator 1
06/08/2017
33
6 INTEL® 8051
19306/08/2017
DPTR
Operação Bytes73 JMP Jump to DPTR + A 1A3 INC Increment DPTR 190 MOV DPTR data16 393 MOVC A @(A + DPTR) 1E0 MOVX A @DPTR 1F0 MOVX @DPTRA 1
• Data pointer.• 16-bit GPR• @DPTR: Endereçamento indireto.• @DPTR indica o 16-bit address da memória externa.• @(A+DPTR) indica o 16-bit address da memória de programa.
6 INTEL® 8051
19406/08/2017
External Memory
• XRAM• 16-bit program counter• A program memory também é chamada de code memory.• Parte da program memory pode ser externa.
Operação Bytese0 MOVX A @DPTR 1e2 MOVX A @R0 1e3 MOVX A @R1 1f0 MOVX @DPTR A 1f2 MOVX @R0 A 1f3 MOVX @R1 A 1
6 INTEL® 8051
19506/08/2017
Program Memory
• 8-bit program memory• 16-bit program counter• A program memory também é chamada de code memory.• Parte da program memory pode ser externa.
Operação Bytes83 MOVC A @(A + PC) 193 MOVC A @(A + DPTR) 1
6 INTEL® 8051
19606/08/2017
• Long call – Long jump.• Três bytes de instrução.• A program memory possui 16 bits de endereço.• São 64k bytes de memória.• O low byte <A07:A00> é escrito pelo terceiro byte da
instrução.• O high byte <A07:A00> é escrito pelo segundo byte da
instrução.• Na instrução ACALL, a pilha sofre um push de dois bytes
com o endereço da instrução seguinte a ACALL.
LJMP / LCALL
6 INTEL® 8051
19706/08/2017
Jump / Call
Operação no carry Bytes
02 LJMP Long jump within 2K block 312 LCALL Long call within 2K block 380 SJMP Short Jump 2C0 PUSH Push Value Onto Stack 2D0 POP Pop Value From Stack 222 RET Return From Subroutine 132 RETI Return From Interrupt 1
6 INTEL® 8051
19806/08/2017
AJMP / ACALL• Absolute call – Absolute jump.• Dois bytes de instrução.• A program memory possui 16 bits de endereço.• São 64k bytes de memória.• O low byte <A07:A00> provém do segundo byte da instrução.• Os três bits menos significativos do high byte <A10:A08> são
escritos pelo primeiro byte da instrução.• Os cinco bits mais significativos do high byte <A15:A11> não
são alterados.• São alterados os 11 bits menos significativos <A10:A00>
totalizando 2k bytes.• O salto está restrito a 1/32 da program memory.• Na instrução ACALL, a pilha sofre um push de dois bytes.
06/08/2017
34
6 INTEL® 8051
19906/08/2017
• Absolute call – Absolute jump.• A program memory é dividida em oito páginas.• Cada página possui 256 endereços.• Cada página utiliza oito bits de endereço.• A seleção da página é feita por três bits.• Os três bits de seleção de página estão contidos no opcode.• As instruções ACALL e AJMP consomem dois bytes.• O primeiro byte identifica a instrução e a página.• O segundo byte identifica o endereço dentro da página.• A palavra “absolute” indica que é permitido mudar de página.• São usados 11 (3+8) bits de endereço.• O tamanho máximo de programa acessável é de 2k bytes.
AJMP / ACALL6 INTEL® 8051
20006/08/2017
Mnem Page A10:A0901 AJMP
0 00011 ACALL
21 AJMP 1 001
31 ACALL
41 AJMP 2 010
51 ACALL
61 AJMP 3 011
71 ACALL
81 AJMP 4 100
91 ACALL
a1 AJMP 5 101b1 ACALL
c1 AJMP 6 110
d1 ACALL
e1 AJMP 7 111
f1 ACALL
Abso
lute
cal
l with
in 2
K bl
ock
Abso
lute
jum
p w
ithin
2K
bloc
k
AJMP / ACALL
6 INTEL® 8051
20106/08/2017
Outros jumpsJump if not equal Bytes
b4 CJNE Compara A e data 3b5 CJNE Compara A e IRAM 3
b6-b7 CJNE Compara @R e data 3b8-bf CJNE Compara R e data 3
Jump Bytes10 JBC Jump if Bit Set and Clear Bit 320 JB Jump if Bit Set 330 JNB Jump if Bit Not Set 340 JC Jump if Carry Set 250 JNC Jump if Carry Not Set 260 JZ Jump if AccumulatorZero 270 JNZ Jump if Accumulator Not Zero 273 JMP Jump to Data Pointer + Accumulator 1
Jump if not zero Bytesd5 DJZN Decrementa IRAM 3
d6-d7 DJZN Decrementa @R 3d8-df DJZN Decrementa R 3
6 INTEL® 8051
98SUBB A,R0A A addc R0 1
99SUBB A,R1A A addc R1 1
9aSUBB A,R2A A addc R2 1
9bSUBB A,R3A A addc R3 1
9cSUBB A,R4A A addc R4 1
9dSUBB A,R5A A addc R5
1
9eSUBB A,R6A A addc R6 1
9fSUBB A,R7A A addc R7 1
20206/08/2017
Sintaxe
28ADD A,R0A A add R0 1
29ADD A,R1A A add R1 1
2aADD A,R2A A add R2 1
2bADD A,R3A A add R3 1
2cADD A,R4A A add R4 1
2dADD A,R5A A add R5
1
2eADD A,R6A A add R6 1
2fADD A,R7A A add R7 1
38ADDC A,R0A A addc R0 1
39ADDC A,R1A A addc R1 1
3aADDC A,R2A A addc R2 1
3bADDC A,R3A A addc R3 1
3cADDC A,R4A A addc R4 1
3dADDC A,R5A A addc R5
1
3eADDC A,R6A A addc R6 1
3fADDC A,R7A A addc R7 1
Operações aritméticas entre A e GPR
6 INTEL® 8051
58ANL A,R0A A anl R0 1
59ANL A,R1A A anl R1 1
5aANL A,R2A A anl R2 1
5bANL A,R3A A anl R3
1
5cANL A,R4A A anl R4 1
5dANL A,R5A A anl R5 1
5eANL A,R6A A anl R6 1
5fANL A,R7A A anl R7 1
20306/08/2017
Sintaxe
68XRL A,R0A A xrl R0 1
69XRL A,R1A A xrl R1 1
6aXRL A,R2A A xrl R2 1
6bAXRLDD A,R3A A xrl R3 1
6cXRL A,R4A A xrl R4 1
6dXRL A,R5A A xrl R5
1
6eXRL A,R6A A xrl R6 1
6fXRL A,R7A A xrl R7 1
Operações lógicas entre A e GPR
48ORL A,R0A A orl R0 1
49ORL A,R1A A orl R1 1
4aORL A,R2A A orl R2 1
4bORL A,R3A A orl R3
1
4cORL A,R4A A orl R4 1
4dORL A,R5A A orl R5 1
4eORL A,R6A A orl R6 1
4fORL A,R7A A orl R7 1
6 INTEL® 8051
20406/08/2017
Sintaxe
f8MOV R0,AR0 A 1
f9MOV R1,AR1 A 1
faMOV R2,AR2 A 1
fbMOV R3,AR3 A 1
fcMOV R4,AR4 A 1
fdMOV R5,AR5 A
1
feMOV R6,AR6 A 1
ffMOV R7,AR7 A 1
e8MOV A,R0A R0 1
e9MOV A,R1A R1 1
eaMOV A,R2A R2 1
ebMOV A,R3A R3 1
ecMOV A,R4A R4 1
edMOV A,R5A R5
1
eeMOV A,R6A R6 1
efMOV A,R7A R7 1
c8XCH A,R0AR0, R0A 1
c9XCH A,R1AR1, R1A 1
caXCH A,R2AR2, R2A
1
cbXCH A,R3AR3, R3A 1
ccXCH A,R4AR4, R4A 1
cdXCH A,R5AR5, R5A 1
ceXCH A,R6AR6, R6A 1
cfXCH A,R7AR7, R7A 1
Operações de movimentação entre A e GPR
06/08/2017
35
6 INTEL® 8051
20506/08/2017
Sintaxe
08INC R0R0 R0 + 1 1
09INC R1R1 R1 + 1 1
0aINC R2R2 R2 + 1 1
0bINC R3R3 R3 + 1 1
0cINC R4R4 R4 + 1 1
0dINC R5R5 R5 + 1
1
0eINC R6R6 R6 + 1 1
0fINC R7R7 R7 + 1 1
18DEC R0R0 R0 – 1 1
19DEC R1R1 R1 – 1 1
1aDEC R2R2 R2 – 1 1
1bDEC R3R3 R3 – 1 1
1cDEC R4R4 R4 – 1 1
1dDEC R5R5 R5 – 1
1
1eDEC R6R6 R6 – 1 1
1fDEC R7R7 R7 – 1 1
Operações com GPR´s
6 INTEL® 8051
20606/08/2017
Sintaxe
26ADD A,@R0A A add @R0 1
27ADD A,@R1A A add @R1
1
36ADDC A,@R0A A addc @R0 1
37ADDC A,@R1A A addc @R1
1
56ANL A,@R0A A anl @R0 1
57ANL A,@R1A A anl @R1 1
06INC @R0@R0 @R0 + 1 1
07INC @R1@R1 @R1 + 1
1
16DEC @R0@R0 @R0 – 1 1
17DEC @R1@R1 @R1 – 1
1
f6MOV @R0,A@R0A 1
f7MOV @R1,A@R1A 1
e6MOV A,@R0A @R0 1
e7MOV A,@R1A @R1
1
46ORL A,@R0A A orl @R0 1
47ORL A,@R1A A orl @R1
1
96SUBB A,@R0A A subb @R0 1
97SUBB A,@R1A A subb @R1 1
c6XCH A,@R0A@R0, @R0A 1
c7XCH A,@R1A A add @R1 1
66XLR @R0,AA A xlr @R0 1
67XLR @R1,AA A xlr @R1 1
• O endereço da Internal data RAM é fornecido por @R.
Operações com a IRAM – endereçamento indireto
6 INTEL® 8051
20706/08/2017
Sintaxe
25ADD A,iramA A add iram 2
Operações com a IRAM – endereçamento direto
35ADDC A,iramA A addc iram 2
55ANL A,iramA A anl iram 2
52ANL iram,Airam iram anl A 2
05INC iramiram iram + 1 2
15DEC iramiram iram – 1 2
f5MOV iram,Airam A 2
e5MOV A,iramA iram 2
45ORL A,iramA A orl iram 2
42ORL iram,Airam iram orl A
2
95SUBB A,iramA A subb iram 2
c5XCH A,iramA iram, iramA 2
65XLR A,iramA A xlr iram 2
62XLR iram,Airam iram xlr A 2 • Internal data RAM.
• 256 bytes.• 2-bit instruction.• O segundo byte é o 8-bit address.• O endereço é fornecido no opcode.
6 INTEL® 8051
20806/08/2017
Sintaxe
a8MOV R0,iramR0 iram 2
a9MOV R1,iramR1 iram 2
aaMOV R2,iramR2 iram 2
abMOV R3,iramR3 iram
2
acMOV R4,iramR4 iram 2
adMOV R5,iramR5 iram 2
aeMOV R6,iramR6 iram 2
afMOV R7,iramR7 iram 2
88MOV iram,R0iram R0 2
89MOV iram,R1iram R1 2
8aMOV iram,R2iram R2 2
8bMOV iram,R3iram R3
2
8cMOV iram,R4iram R4 2
8dMOV iram,R5iram R5 2
8eMOV iram,R6iram R6 2
8fMOV iram,R7iram R7 2
Operações de movimentação na IRAM – endereçamento direto e indireto
86MOV iram,@R0iram @R0 2
87MOV iram,@R1iram @R1 2
a6MOV @R0,iram@R0 iram 2
a7MOV @R1,iram@R1 iram 2
•O
segu
ndo
byte
éo
8-bi
tadd
ress
.•
Oen
dere
çoé
forn
ecid
ono
opco
de.
6 INTEL® 8051
20906/08/2017
SintaxeOperações com dados de 8 bits
• 8-bit #data.• 2-bit instruction.• O segundo byte é o 8-bit #data.• O valor é fornecido no opcode.
76MOV @R0,#data@R0 @R0 add #data 2
77MOV @R1,#data@R1 @R0 add #data
2
78MOV R0,#dataR0 #data 2
79MOV R1, #dataR1 #data
2
7aMOV R2, #dataR2 #data 2
7bMOV R3, #dataR3 #data 2
7cMOV R4, #dataR4 #data 2
7dMOV R5, #dataR5 #data 2
7eMOV R6, #dataR6 #data 2
7fMOV R7, #dataR7 #data 2
24ADD A,#dataA A add #data 2
34ADDC A,#dataA A addc #data
2
44ORL A,#dataA A orl #data 2
54ANL A,#dataA A anl #data 2
64XRL A,#dataA A xrl #data 2
74MOV A,#dataA #data 2
94SUBB A,#dataA A subb #data 2
6 INTEL® 8051
21006/08/2017
SintaxeOperações com dados de 8 bits e a IRAM
43ORL iram,#datairam iram orl #data 3
53ANL iram,#datairam iram anl #data 3
63XRL iram,#datairam iram xrl #data 3
75MOV iram,#datairam #data 3
• 8-bit #data.• 3-bit instruction.• O segundo byte é o 8-bit address.• O terceiro byte é o 8-bit #data.
06/08/2017
36
6 INTEL® 8051
21106/08/2017
SintaxeOperações com dados de 8 bits e a IRAM
01 AJMP page0 221 AJMP page1 241 AJMP page2 261 AJMP page3 281 AJMP page4 2a1 AJMP page5 2b1 AJMP page6 2c1 AJMP page7 2
11 ACALL page0 231 ACALL page1 251 ACALL page2 271 ACALL page3 291 ACALL page4 2b1 ACALL page5 2d1 ACALL page6 2f1 ACALL page7 2