32
25/04/2017 1 1 25/04/2017 Parte 1 IDE 2 25/04/2017 1. DEFINIÇÃO 2. ASSEMBLY 3. INSTRUÇÕES PIC16F877 4. CONJUNTO DE INSTRUÇÕES 5. BITS DE CONFIGURAÇÃO 6. LITERATURA 1 3 25/04/2017 DEFINIÇÃO DEFINIÇÃO 1 4 25/04/2017 Editor de texto para entrada do código. Debugging do código. Simulador de dispositivo. Assembler (montador). Compilador. Outros itens (opcionais). Componentes DEFINIÇÃO 1 5 25/04/2017 Editor de texto Os montadores e compiladores atuais possuem seus próprios editores de texto. Os primeiros montadores e compiladores não possuíam editor de texto. Era necessário chamar o utilitário IDE na linha de comando (DOS, por exemplo), usando, como argumento, o arquivo texto contendo o programa a ser gravado no dispositivo. Editores de texto embutidos em IDE usam cores pra auxiliar a criação ou edição do programa. DEFINIÇÃO 1 6 25/04/2017 Assembler As primeiras versões de IDE para gravação de P’s e MCU’s permitiam, apenas, o uso dos códigos binários (opcodes). Versões de IDE para gravação de P’s e MCU’s permitiam, apenas, o uso dos códigos Assembler. Versões atuais permitem o uso de pseudocódigos, que facilitam a criação ou edição do programa. O IDE converte o programa contendo os pseudocódigos para o programa em linguagem assembler pura.

1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

Embed Size (px)

Citation preview

Page 1: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

1

125/04/2017

Parte 1

IDE

225/04/2017

1. DEFINIÇÃO

2. ASSEMBLY

3. INSTRUÇÕES PIC16F877

4. CONJUNTO DE INSTRUÇÕES

5. BITS DE CONFIGURAÇÃO

6. LITERATURA

DEFINIÇÃO1

325/04/2017

DEFINIÇÃO

DEFINIÇÃO1

425/04/2017

• Editor de texto para entrada do código.

• Debugging do código.

• Simulador de dispositivo.

• Assembler (montador).

• Compilador.

• Outros itens (opcionais).

Componentes

DEFINIÇÃO1

525/04/2017

Editor de texto

• Os montadores e compiladores atuais possuem seus

próprios editores de texto.

• Os primeiros montadores e compiladores não possuíam

editor de texto.

• Era necessário chamar o utilitário IDE na linha de comando

(DOS, por exemplo), usando, como argumento, o arquivo

texto contendo o programa a ser gravado no dispositivo.

• Editores de texto embutidos em IDE usam cores pra auxiliar

a criação ou edição do programa.

DEFINIÇÃO1

625/04/2017

Assembler

• As primeiras versões de IDE para gravação de P’s e

MCU’s permitiam, apenas, o uso dos códigos binários

(opcodes).

• Versões de IDE para gravação de P’s e MCU’s permitiam,

apenas, o uso dos códigos Assembler.

• Versões atuais permitem o uso de pseudocódigos, que

facilitam a criação ou edição do programa.

• O IDE converte o programa contendo os pseudocódigos

para o programa em linguagem assembler pura.

Page 2: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

2

DEFINIÇÃO1

725/04/2017

Debugger

• As primeiras versões de IDE para

gravação de P’s e MCU’s possuíam,

apenas, o procedimento de gravação do

chip.

• Não era fornecido utilitário para verificação

de erros básicos na programação.

• Versões atuais fornecem opções para a

busca por erros básicos.

DEFINIÇÃO1

825/04/2017

Debugger

• Estrutura: O texto é reconhecido como um programa.

• Sintaxe: Os mnemônicos, códigos e números estão corretos.

• Escopo de variáveis: Nenhum número é maior do que a

maior capacidade de representação para o tipo de variável

em questão.

• Escopo de endereços do chip: Os tamanhos das memórias,

das portas, etc, são respeitados. É preciso identificar o

modelo do chip.

• Outros.

DEFINIÇÃO1

925/04/2017

Simulador

• No passado, não havia como prever se o programa

estava correto ou não.

• A única forma de verificar era por meio da gravação

do chip e da execução no próprio chip.

• A gravação pode ser bastante demorada, tornando o

trabalho de criação/edição/correção bastante tedioso.

• Posteriormente, foi acrescentado o recurso da

simulação do chip no computador.

• Somente depois de concluídas todas as verificações

no simulador é que se parte para a verificação na

execução pelo chip.

DEFINIÇÃO1

1025/04/2017

Compilador

• A inclusão de compilador no IDE permite o uso de

linguagens de alto nível.

• Estas linguagens são mais compreensíveis ao ser humano.

• Qualquer linguagem de alto nível pode ser usada em

qualquer chip.

• A vantagem do uso de um compilador específico para o

modelo de chip em questão é que o debugger observa os

limites de endereçamento e os periféricos disponíveis.

DEFINIÇÃO1

1125/04/2017

Compilador

• Compiladores para chips específicos podem ser pacotes

de grande valor comercial.

• Há casos nos quais são oferecidos o ambiente de

programação em linguagem de alto nível e, como brinde,

recebe-se o kit com o módulo gravador, junto com o chip.

DEFINIÇÃO1

1225/04/2017

Ciclo de desenvolvimento

Page 3: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

3

DEFINIÇÃO1

1325/04/2017

Compilação

Código em linguagem C

Código em

linguagem de máquina

DEFINIÇÃO1

1425/04/2017

Exemplo de compilador C para PIC®

DEFINIÇÃO1

1525/04/2017

Compiladores C, Basic e Pascal

DEFINIÇÃO1

1625/04/2017

Compilador de alto nível

DEFINIÇÃO1

1725/04/2017

Linguagem

• A linguagem de compilação não depende do chip.

• Qualquer linguagem de compilação pode ser usada para

qualquer MCU, desde que haja compilador compatível.

• Um compilador usa uma linguagem específica pra um

chip específico.

ASSEMBLY2

1825/04/2017

ASSEMBLY

Page 4: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

4

ASSEMBLY2

1925/04/2017

• Linguagem de máquina: O dispositivo entende.

• Linguagem humana: O ser humano entende.

Linguagens

• Linguagem de máquina: Zeros e uns.

• Linguagem humana: Palavras e números.

• Assembly: Mnemônicos e números hexadecimais.

• Linguagem de máquina: Montado.

• Linguagem humana: Não montado.

ASSEMBLY2

2025/04/2017

• “To Assemble”:Montar, organizar, reunir.

• Assembler: Linguagem de montagem.

• Assembly: Código de montagem (não montado).

• Disassembly: Assembly obtido a partir do código montado.

• Assembly é a linguagem humana de mais baixo nível.

• Assembly depende do P, da MCU ou da DSP usada.

Definição

ASSEMBLY2

2125/04/2017

• Mnemônicos são palavras fáceis de entender.

• Mnemônicos usam, apenas, letras.

• As letras devem ser maiúsculas.

• Mnemônicos são palavras curtas.

• Os mnemônicos são específicos para o dispositivo.

• Dispositivos diferentes podem usar mnemônicos diferentes.

• Os mnemônicos são digitados pelo programador.

• Cada instrução recebe um mnemônico.

• Disassembly: Assembly obtido a partir do código montado.

• Preferencialmente, usar fonte courier new.

Mnemônicos

ASSEMBLY2

2225/04/2017

• É a conversão da linguagem de montagem (assembler)

para linguagem de máquina.

• É a conversão do código assembly para o código montado.

• Código montado é o código binário.

• A linguagem de montagem (assembler) usa:

• Mnemônicos de instrução.

• Parâmetros numéricos para as instruções.

• A linguagem de máquina usa bits.

Montagem

ASSEMBLY2

2325/04/2017

• A relação entre o código em linguagem de montagem

e o código em linguagem de máquina é biunívoca.

• A relação entre a instrução e seu opcode é

biunívoca.

• Em alguns dispositivos processadores, a tabela de

montagem possui algumas irrelevâncias (don’t care –

X) em alguns bits de algumas instruções.

• Essas irrelevâncias fazem com que a relação

biunívoca seja quebrada.

• Geralmente, os montadores substituem as

irrelevâncias por zero.

Montagem

ASSEMBLY2

2425/04/2017

• A conversão do código feito em linguagem assembly para o

código em linguagem de máquina é chamado de montagem.

• A conversão do código feito em linguagem de compilação para

o código em linguagem de máquina é chamado de compilação.

• Compiladores empregam códigos específicos da própria

linguagem.

• A linguagem de compilação não depende do dispositivo

empregado, não usa os seus mnemônicos.

• Compiladores não permitem que o usuário lide com opcodes e

instruções de máquina.

• Compiladores, geralmente, não fornecem o código assembly

sobre o qual a montagem foi realizada.

• Compiladores podem ser de baixo nível e de alto nível.

Linguagem de compilação

Page 5: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

5

ASSEMBLY2

2525/04/2017

• A compilação é feita pelo compilador (Basic, Pascal, C, C++,

Delphy, Java, etc).

• A montagem é feita pelo montador (assembler).

• O programa editor de assembly pode ser constituído de um

simples editor de textos.

• O programa montador consiste de um programa separado do

editor assembly e alguns montadores não possuem o editor,

o arquivo texto é carregado como parâmetro da montagem.

Montagem

ASSEMBLY2

2625/04/2017

• Cada dispositivo necessita ter seu próprio montador.

• Dispositivos diferentes podem ter montadores compatíveis.

• Para aumentar a compatibilidade entre programas, os P’s

são agrupados em famílias com montadores compatíveis.

• Exemplos:

• IA32 ou i386 ou x86-32 (32 bits).

• IA32-EM64T ou x86-64 (64 bits).

Montagem

ASSEMBLY2

2725/04/2017

• Alguns editores assembly permitem a inclusão de códigos

que não fazem parte do assembly puro, chamados de

pseudocódigos (diretivas de montagem, comentários, etc).

• Estes pseudocódigos permitem que se utilize nomes no

lugar de endereços.

• Endereços podem se referir a registradores, a bits de

registradores e à program memory.

• Estas diretivas tem a função de guiar a criação do código

a ser montado, de modo que o usuário não precise lidar

diretamente com o código assembly, mas, sim, com um

código que apresenta algumas características de

linguagem de compilação.

• Evitaremos o uso de certas diretivas para proporcionar o

aprendizado da linguagem assembler.

Pseudocódigos

ASSEMBLY2

2825/04/2017

• Sabendo qual o modelo do dispositivo, pode-se converter o

seu código de máquina em código de montagem.

• Esta operação é chamada de desmontagem (disassembly).

• O código desmontado somente pode ser obtido usando o

assembly puro, sem os recursos adicionais do montador.

Desmontagem

ASSEMBLY2

2925/04/2017

• Uma e, somente, uma instrução por linha.

• A instrução começa pelo mnemônico.

• O mnemônico é uma palavra, não contém números.

• O mnemônico usa somente letras maiúsculas.

• Após o mnemônico, vem os argumentos da instrução.

• Os argumentos são numéricos.

• Os números são hexadecimais.

• Pode haver zero, um ou dois argumentos.

Código assembly puroEstrutura

ASSEMBLY2

3025/04/2017

• Qualquer outra informação que não seja o mnemônico da

instrução e seus argumentos numéricos não fazem parte do

código assembly puro.

• O código assembly puro pode ser obtido no disassembly.

• O disassembly fornece, apenas, o código assembly puro.

• Informações adicionais não podem ser obtidas no disassembly.

• A relação entre o código disassembly e o código montado é

biunívoca.

Código assembly puro

Page 6: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

6

ASSEMBLY2

3125/04/2017

• O código assembly pode conter outras informações

além do assembly puro que facilitam a

elaboração/compreensão do programa.

• Estas extensões facilitam a elaboração do programa.

• Essas extensões podem ser diretivas de

programação, variáveis, constantes, etc.

• Essas extensões são específicas do fabricante do

programa montador. Cada fabricante pode ter o seu

conjunto próprio de extensões.

• Essas extensões são perdidas no código

disassembly.

• Cores são usadas para facilitar o desenvolvimento

de programas no ambiente assembler.

Código assembly

ASSEMBLY2

3225/04/2017

Debuging

Assembly com

extensões

Assembly puro

Conversão feita manualmente

ou automaticamente pelo

ambiente de desenvolvimento.

Impossível

Digitação

ASSEMBLY2

3325/04/2017

Debuging

• Tanto o código assembly com extensões como o

código assembly puro estão em linguagem humana.

• É na conversão do código assembly com extensões

para o código assembly puro que a verificação de

erros é realizada.

• Se o código pôde ser escrito como assembly puro, é

porque nenhum erro de sintaxe e de escopo foi

encontrado.

• Uma vez “debugado”, o código já pode ser montado.

ASSEMBLY2

3425/04/2017

Ambiente assembler

Assembly com

extensões

Assembly puro

Linguagem de máquina

Montagem

Desmontagem

Chip

Programação

Leitura

Usuário

Automático

001101101011

101001001010

101010001010

101010000110

ASSEMBLY2

3525/04/2017

Ambiente assembler

Editor de texto ou de

hipertexto

DebuggerMontador

Gravador do chip

ASSEMBLY2

3625/04/2017

Ambiente compiler

Linguagem de alto nível

Linguagem de montagem

Linguagem de máquina Chip

Montagem

Desmontagem

Programação

Leitura

Compilação

Usuário

A parte em vermelho geralmente não é disponibilizada.

001101101011

101001001010

101010001010

101010000110

Page 7: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

7

ASSEMBLY2

3725/04/2017

• Sintaxe:

• Mnemônico de instrução inválido.

• Escopo:

• Dado inválido.

• Endereço inválido.

• Parâmetro inválido.

• Erro em parâmetros além do assembly puro.

DebuggerTipos de erro

ASSEMBLY2

3825/04/2017

• O debugger realiza a descoberta de erros porque ele

sabe qual o modelo de P/MCU/DSP a ser usado.

• É preciso definir o modelo do dispositivo.

• É preciso que o montador seja compatível com o modelo.

• O montador compatível possui todos os parâmetros

necessários do dispositivo para que seja feita a busca

por erros de sintaxe ou de escopo.

Debugger

ASSEMBLY2

61.JA

62.JAE

63.JB

64.JBE

65.JNA

66.JNAE

67.JNB

68.JNBE

69.JC

70.JNC

3925/04/2017

Mnemônicos P x86-32 (resumido)1. MOV

2. XCHG

3. STC

4. CLC

5. CMC

6. STD

7. CLD

8. STI

9. CLI

10.PUSH

11.PUSHF

12.PUSHA

13.POP

14.POPF

15.POPA

16.CBW

17.CWD

18.CWDE

19.IN

20.OUT

21.ADD

22.ADC

23.SUB

24.SBB

25.DIV

26.IDIV

27.MUL

28.IMUL

29.INC

30.DEC

31.CMP

38.NEG

39.NOT

40.AND

41.OR

42.XOR

43.SHL

44.SHR

45.NOP

46.LEA

47.INT

48.CALL

49.JMP

50.JE

51.JZ

52.JCXZ

53.JP

54.JPE

55.RET

56.JNE

57.JNZ

58.JECXZ

59.JNP

60.JPO

Transfer

32.SAL

33.SAR

34.RCL

35.RCR

36.ROL

37.ROR

Arithmetic Logic Misc

Jumps

Jumps

Unsigned

71.JG

72.JGE

73.JL

74.JLE

75.JNG

76.JNGE

77.JNL

78.JNLE

79.JO

80.JNO

81.JS

82.JNS

Jumps

Signed

http://www.jegerlehner.ch/intel/IntelCodeTable.pdf

CISC

ASSEMBLY2

4025/04/2017

Exemplos de P x86-32

1. Intel® Pentium processor

2. Intel® Pentium Pro processor

3. Intel® Pentium II processor

4. Intel® Pentium II Xeon processor

5. Intel® Celeron processor

6. Intel® Pentium III processor

7. Intel® Pentium III Xeon processor

8. AdvancedMicroDevices© Athlon processor

9. AdvancedMicroDevices© Opteron processor

http://docs.oracle.com/cd/E19253-01/817-5477/817-5477.pdf

CISC

ASSEMBLY2

4125/04/2017

Mnemônicos ARM1. ABS

2. ACS

3. ADC

4. ADD

5. ADF

6. ADR

7. ADRL

8. ALIGN

9. AND

10. ASL

11. ASN

12. ASR

13. ATN

14. B

15. BIC

16. BKPT

17. BL

18. BLX

19. BX

20. CDP

21. CDP2

22. CLZ

23. CMF

24. CMN

25. CMP

26. CNF

27. COS

28. DCx

29. DVF

30. EOR

31. EQUx

32. EXP

33. FABS

34. FADD

35. FCMP

36. FCVTDS

37. FCVTSD

38. FCPY

39. FDIV

40. FDV

81. LDRSB

82. LDRSH

83. LFM

84. LGN

85. LOG

86. LSL

87. LSR

88. MCR

89. MCR2

90. MCRR

91. MLA

92. MNF

93. MOV

94. MRC

95. MRC2

96. MRRC

97. MRS

98. MSR

99. MUF

100. MUL

101. MVF

102. MVN

103. NEG

104. NOP

105. NRM

106. OPT

107. ORR

108. ORR

109. PLD

110. POL

111. POP

112. POW

113. PUSH

114. QADD

115. QDADD

116. QDSUB

117. QSUB

118. RDF

119. RFC

120. RFS

41. FIX

42. FLD

43. FLDMDB

44. FLDMIA

45. FLT

46. FMAC

47. FMDHR

48. FMDLR

49. FMRDH

50. FMRDL

51. FML

52. FMSC

53. FMRS

54. FMSR

55. FMUL

56. FMRX

57. FMSTAT

58. FMXR

59. FNEG

60. FNMAC

61. FNMSC

62. FNMUL

63. FRD

64. FSITO

65. FSQRT

66. FST

67. FSTMDB

68. FSTMIA

69. FSUB

70. FTOSI

71. FTOUI

72. FUITO

73. LDC

74. LDC2

75. LDF

76. LDM

77. LDMIA

78. LDR

79. LDRB

80. LDRH

121. RMF

122. RND

123. ROR

124. RPW

125. RRX

126. RSB

127. RSC

128. RSF

129. SBC

130. SFM

131. SIN

132. SMLA

133. SMLAL

134. SMLAW

135. SMUL

136. SMULL

137. SMULW

138. SQT

139. STC

140. STC2

141. STF

142. STM

143. STMIA

144. STR

145. STR

146. STRB

147. STRH

148. STRSB

149. STRSH

150. SUB

151. SUF

152. SWI

153. SWP

154. TAN

155. TEQ

156. TST

157. UMLAL

158. UMULL

159. URD

160. WFC

161. WFS

http

://ww

w.h

eyric

k.co.u

k/ass

em

ble

r/qfin

der.htm

l

ASSEMBLY2

4225/04/2017

Mnemônicos AVR

1. ADD

2. ADC

3. SUB

4. SUBI

5. SBC

6. SBCI

7. AND

8. ANDI

9. OR

10. ORI

11. EOR

12. COM

13. NEG

14. SBR

15. CBR

16. INC

17. DEC

18. TST

19. CLR

20. SER

53. LD

54. ST

55. MOV

56. LDI

57. IN

58. OUT

59. LPM

21. RJMP

22. CALL

23. RET

24. RETI

25. CPSE

26. CP

27. CPC

28. CPI

29. SBRC

30. SBRS

31. SBIC

32. SBIS

33. BRBS

34. BRBC

35. BREQ

36. BRNE

37. BRCS

38. BRCC

39. BRSH

40. BRLO

41. BRMI

42. BRPL

43. BRGE

44. BRLT

45. BRHS

46. BRHC

47. BRTS

48. BRTC

49. BRVS

50. BRVC

51. BRIE

52. BRID

60. SBI

61. CBI

62. LSL

63. LSR

64. ROL

65. ROR

66. ASR

67. SWAP

68. BSET

69. BCLR

70. BST

71. BLD

72. SEC

73. CLC

74. SEM

75. CLN

76. SEZ

77. CLZ

78. SEI

79. CLI

80. SES

81. CLS

82. SEV

83. CLV

84. SET

85. CLT

86. SEH

87. CLH

88. NOP

89. SLEEP

90. WDR

http

://en.w

ikipedia

.org

/wiki/A

tmel_

AV

R_in

stru

ctio

n_se

t

Aritmética

Desvio

Transferência

Sobre bits

Page 8: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

8

ASSEMBLY2

4325/04/2017

Mnemônicos 8-bit MCU Intel® 8051

http

://ww

w.w

in.tu

e.n

l/~aeb/co

mp/8

051/s

et8

051.h

tml

0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f

0x00 NOP AJMP LJMP RR INC INC INC INC INC INC INC INC INC INC INC INC

0x10 JBC ACALL LCALL RRC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC

0x20 JB AJMP RET RL ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD

0x30 JNB ACALL RETI RLC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC

0x40 JC AJMP ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL

0x50 JNC ACALL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL

0x60 JZ AJMP XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL

0x70 JNZ ACALL ORL JMP MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV

0x80 SJMP AJMP ANL MOVC DIV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV

0x90 MOV ACALL MOV MOVC SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB

0xa0 ORL AJMP MOV INC MUL ? MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV

0xb0 ANL ACALL CPL CPL CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE

0xc0 PUSH AJMP CLR CLR SWAP XCH XCH XCH XCH XCH XCH XCH XCH XCH XCH XCH

0xd0 POP ACALL SETB SETB DA DJNZ XCHD XCHD DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ

0xe0 MOVX AJMP MOVX MOVX CLR MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV

0xf0 MOVX ACALL MOVX MOVX CPL MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV

ASSEMBLY2

4425/04/2017

Instructions OpCode

INC A 0x04

INC iram addr 0x05

INC @R0 0x06

INC @R1 0x07

INC R0 0x08

INC R1 0x09

INC R2 0x0A

INC R3 0x0B

INC R4 0x0C

INC R5 0x0D

INC R6 0x0E

INC R7 0x0F

INC DPTR 0xA3

Instructions OpCode

ADD A,#data 0x24

ADD A,iram addr 0x25

ADD A,@R0 0x26

ADD A,@R1 0x27

ADD A,R0 0x28

ADD A,R1 0x29

ADD A,R2 0x2A

ADD A,R3 0x2B

ADD A,R4 0x2C

ADD A,R5 0x2D

ADD A,R6 0x2E

ADD A,R7 0x2F

Instructions OpCode

ACALL page0 0x11

ACALL page1 0x31

ACALL page2 0x51

ACALL page3 0x71

ACALL page4 0x91

ACALL page5 0xB1

ACALL page6 0xD1

ACALL page7 0xF1

http://www.win.tue.nl/~aeb/comp/8051/set8051.html

Mnemônicos 8-bit MCU Intel® 8051

• Em arquitetura CISC, um mesmo mnemônico

pode ser empregado em várias instruções.

• Em cada uma delas, a sintaxe é diferente.

ASSEMBLY2

4525/04/2017

ACI DCX LXI RPE

ADC DCX LXI RPO

ADC DCX MOV RZ

ADD DCX MOV RLC

ADD DI MOV RRC

ADI EI MVI RST

ANA HLT MVI SBB

ANA IN NOP SBB

ANI INR ORA SBI

CALL INR ORA SHLD

CC INX ORI SIM

CM INX OUT SPHL

CMA INX PCHL STA

CMC INX POP STAX

CMP JMP POP STAX

CMP JC POP STC

CNC JM POP SUB

CNZ JNC PUSH SUB

CP JNZ PUSH SUI

CPE JP PUSH XCHG

CPI JPE PUSH XRA

CPO JPO RAL XRA

CZ JZ RAR XRI

DAA LDA RET XTHL

DAD LDAX RC

DAD LDAX RIM

DAD LHLD RM

DAD LXI RNC

DCR LXI RNZ

DCR LXI RP

CISC

http://cdn.cpu-world.com/CPUs/8085/S_Intel-D8085AH-1.jpg

Mnemônicos 8-bit P Intel® 8085

ASSEMBLY2

4625/04/2017

Mnemônicos 8-bit P Intel® 8080 e Zilog® Z80adc a,(hl) cp n inc (ii+s) ld (hl),n or n rlc (hl) srl (hl)

adc a,(ii+s) cp r inc r ld (hl),r or r rlc (ii+s) srl (ii+s)

adc a,n cpd inc ss ld (ii+s),n otdr rlc r srl r

adc a,r cpdr inc ii ld (ii+s),r otir rlca sub (hl)

adc hl,ss cpi ind ld a,(nn) out (n),a rld sub (ii+s)

add a,(hl) cpir indr ld a,(bc) out (c),r rr (hl) sub n

add a,(ii+s) cpl ini ld a,(de) outd rr (ii+s) sub r

add a,n daa inir ld a,i outi rr r xor (hl)

add a,r dec (hl) jp (hl) ld a,r pop rr rra xor (ii+s)

add hl,ss dec (ii+s) jp (ii) ld r,(hl) pop ii rrc (hl) xor n

add ii,pp dec r jp nn ld r,(ii+s) push rr rrc (ii+s) xor r

and (hl) dec ss jp c,nn ld r,n push ii rrc r

and (ii+s) dec ii jp m,nn ld r1,r2 res b,(hl) rrca

and n di jp nc,nn ld i,a res b,(ii+s) rrd

and r djnz s jp nz,nn ld r,a res b,r rst k

bit b,(hl) ei jp p,nn ld ss,(nn) ret sbc a,(hl)

bit b,(ii+s) ex (sp),hl jp pe,nn ld hl,(nn) ret c sbc a,(ii+s)

bit b,r ex (sp),ii jp po,nn ld ii,(nn) ret m sbc a,n

call nn ex af,af' jp z,nn ld ss,nn ret nc sbc a,r

call c,nn ex de,hl jr s ld ii,nn ret nz sbc hl,ss

call m,nn exx jr c,s ld sp,hl ret p scf

call nc,nn halt jr nc,s ld sp,ii ret pe set b,(hl)

call nz,nn (HALT) jr nz,s ldd ret po set b,(ii+s)

call p,nn im 0 jr z,s lddr ret z set b,r

call pe,nn im 1 ld (nn),a ldi reti sla (hl)

call po,nn im 2 ld (nn),ss ldir retn sla (ii+s)

call z,nn in a,(n) ld (nn),hl neg rl (hl) sla r

ccf in r,(c) ld (nn),ii nop rl (ii+s) sra (hl)

cp (hl) *1 ld (bc),a or (hl) rl r sra (ii+s)

cp (ii+s) inc (hl) ld (de),a or (ii+s) rla sra r

http://www.angelfire.com/art2/unicorndreams/msx/Z80R800A.html

ASSEMBLY2

27.CALL

28.GOTO

29.RETLW

23.MOVLW

24.IORLW

25.ANDLW

26.XORLW

4725/04/2017

Mnemônicos PIC® 8-bit baseline19.BCF

20.BSF

21.BTFSC

22.BTFSS

bbbf

bbbf

bbbf

bbbf

ffff

ffff

ffff

ffff

01 00

01 01

01 10

01 11

11 00

11 01

11 10

11 11

kkkk

kkkk

kkkk

kkkk

kkkk

kkkk

kkkk

kkkk

10 01

10 1k

10 00

kkkk

kkkk

kkkk

kkkk

kkkk

kkkk

00 00

00 00

00 00

00 00

0000

0000

0000

0000

0100

0010

0011

0fff

30.CLRWDT

31.OPTION

32.SLEEP

33.TRIS

1. ADDWF

2. ANDWF

3. COMF

4. DECF

5. DECFSZ

6. INCF

7. INCFSZ

8. IORWF

9. MOVF

10.RLF

11.RRF

12.SUBWF

13.SWAPF

14.XORWF

15.MOVWF

16.CLRF

17.NOP

18.CLRW

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

0111

0101

1001

0011

1011

1010

1111

0100

1000

1101

1100

0010

1110

0110

0000

0001

0000

0001

df

df

df

df

df

df

df

df

df

df

df

df

df

df

1f

1f

00

00

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

0000

0000

ASSEMBLY2

4825/04/2017

Mnemônicos PIC® 8-bit mid-range19.BCF

20.BSF

21.BTFSC

22.BTFSS

00bb

01bb

10bb

11bb

bfff

bfff

bfff

bfff

ffff

ffff

ffff

ffff

01

01

01

01

0000

0000

0000

0000

0110

0000

0000

0110

0100

1001

1000

0011

32.CLRWDT

33.RETFIE

34.RETURN

35.SLEEP

00

00

00

00

00xx

01xx

1000

1001

1010

110x

111x

kkkk

kkkk

kkkk

kkkkk

kkkk

kkkk

kkkk

kkkk

kkkk

kkkk

kkkk

kkkk

kkkk

kkkk

23.MOVLW

24.RETLW

25.IORLW

26.ANDLW

27.XORLW

28.SUBLW

29.ADDLW

11

11

11

11

11

11

11

0kkk

1kkk

kkkk

kkkk

kkkk

kkkk

30.CALL

31.GOTO

10

10

1. ADDWF

2. ANDWF

3. COMF

4. DECF

5. DECFSZ

6. INCF

7. INCFSZ

8. IORWF

9. MOVF

10.RLF

11.RRF

12.SUBWF

13.SWAPF

14.XORWF

15.MOVWF

16.CLRF

17.NOP

18.CLRW

0111

0101

1001

0011

1011

1010

1111

0100

1000

1101

1100

0010

1110

0110

0000

0001

0000

0001

dfff

dfff

dfff

dfff

dfff

dfff

dfff

dfff

dfff

dfff

dfff

dfff

dfff

dfff

1fff

1fff

0xx0

0xxx

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

0000

xxxx

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

Page 9: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

9

ASSEMBLY2

4925/04/2017

Mnemônicos PIC® 8-bit e.mid-range19.BCF

20.BSF

21.BTFSC

22.BTFSS

00bb

01bb

10bb

11bb

bfff

bfff

bfff

bfff

ffff

ffff

ffff

ffff

01

01

01

01

0000

0100

1000

1001

1010

1100

1110

kkkk

kkkk

kkkk

kkkkk

kkkk

kkkk

kkkk

kkkk

kkkk

kkkk

kkkk

kkkk

kkkk

kkkk

23.MOVLW

24.RETLW

25.IORLW

26.ANDLW

27.XORLW

28.SUBLW

29.ADDLW

11

11

11

11

11

11

11

30.ADDWFC

31.ASRF

32.LSLF

33.LSRF

34.SUBWFB

1101

0111

0101

0110

1011

dfff

dfff

dfff

dfff

dfff

ffff

ffff

ffff

ffff

ffff

11

11

11

11

11

1. ADDWF

2. ANDWF

3. COMF

4. DECF

5. DECFSZ

6. INCF

7. INCFSZ

8. IORWF

9. MOVF

10.RLF

11.RRF

12.SUBWF

13.SWAPF

14.XORWF

15.MOVWF

16.CLRF

17.NOP

18.CLRW

0111

0101

1001

0011

1011

1010

1111

0100

1000

1101

1100

0010

1110

0110

0000

0001

0000

0001

dfff

dfff

dfff

dfff

dfff

dfff

dfff

dfff

dfff

dfff

dfff

dfff

dfff

dfff

1fff

1fff

0000

0000

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

ffff

0000

00xx

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

ASSEMBLY2

5025/04/2017

Mnemônicos PIC® 8-bit e.mid-range

37.MOVLB

38.MOVLP

0000

0001

001k

1kkk

kkkk

kkkk

00

11

39.BRA

40.BRW

41.CALLW

42.RETFIE

43.RETURN

44.CLRWDT

45.OPTION

46.RESET

47.SLEEP

48.TRIS

49.ADDFSR

50.MOVIW

51.MOVWI

001k

0000

0000

0000

0000

0000

0000

0000

0000

0000

0001

0000

1111

0000

1111

kkkk

0000

0000

0000

0000

0110

0110

0000

0110

0110

0nkk

0001

0nkk

0001

1nkk

kkkk

1011

1010

1001

1000

0100

0010

0001

0011

0fff

kkkk

0nmm

1nmm

kkkk

kkkk

11

00

00

00

00

00

00

00

00

00

11

00

11

00

11

kkkk

kkkk

kkkk

kkkk

35.CALL

36.GOTO

10

10

0kkk

1kkk

ASSEMBLY2

5125/04/2017

Quadro comparativoBaseline Mid Range E. M. R.

LSLF

LSRF

MOVF MOVF MOVF

MOVIW

MOVLB

MOVLP

MOVLW MOVLW MOVLW

MOVWF MOVWF MOVWF

MOVWI

NOP NOP NOP

OPTION OPTION

RESET

RETFIE RETFIE

RETLW RETLW RETLW

RETURN RETURN

RLF RLF RLF

RRF RRF RRF

SLEEP SLEEP SLEEP

SUBLW SUBLW

SUBWF SUBWF SUBWF

SUBWFB

SWAPF SWAPF SWAPF

TRIS TRIS

XORLW XORLW XORLW

XORWF XORWF XORWF

Baseline Mid Range E. M. R.ADDFSR

ADDLW ADDLW

ADDWF ADDWF ADDWF

ADDWFC

ANDLW ANDLW ANDLW

ANDWF ANDWF ANDWF

ASRF

BCF BCF BCF

BRA

BRW

BSF BSF BSF

BTFSC BTFSC BTFSC

BTFSS BTFSS BTFSS

CALL CALL CALL

CALLW

CLRF CLRF CLRF

CLRW CLRW CLRW

CLRWDT CLRWDT CLRWDT

COMF COMF COMF

DECF DECF DECF

DECFSZ DECFSZ DECFSZ

GOTO GOTO GOTO

INCF INCF INCF

INCFSZ INCFSZ INCFSZ

IORLW IORLW IORLW

IORWF IORWF IORWF

ASSEMBLY2

5225/04/2017

• Importar um código assembly feito

para um chip e usá-lo em outro tipo

de chip nem sempre é tarefa fácil.

• Podem ser necessárias alterações

em mnemônicos e em faixas de

valores para operandos.

• Diferenças ocorrem até mesmo

dentro da mesma família.

Importação de código

ASSEMBLY2

5325/04/2017

Mnemônicos PIC® 8-bit PIC181. ADDWF

2. ADDWFC

3. ANDWF

4. CLRF

5. COMF

6. CPFSEQ

7. CPFSGT

8. CPFSLT

9. DECF

10.DECFSZ

11.DCFSNZ

12.INCF

13.INCFSZ

14.INFSNZ

15.IORWF

16.MOVF

17.MOVFF

18.MOVWF

19.MULWF

20.NEGF

21.RLCF

22.RLNCF

23.RRCF

24.RRNCF

25.SETF

26.SUBFWB

27.SUBWF

28.SUBWFB

29.SWAPF

30.TSTFSZ

31.XORWF

32.BCF

33.BSF

34.BTFSC

35.BTFSS

36.BTG

37.BC

38.BN

39.BNC

40.BNN

41.BNOV

42.BNZ

43.BOV

44.BRA

45.BZ

46.CALL

47.CLRWDT

48.DAW

59.ADDLW

60.ANDLW

61.IORLW

62.LFSR

63.MOVLB

64.MOVLW

65.MULLW

66.RETLW

67.SUBLW

68.XORLW

69.TBLRD*

70.TBLRD*+

71.TBLRD*-

72.TBLRD+*

73.TBLWT*

74.TBLWT*+

75.TBLWT*-

76.TBLWT+*

49.GOTO

50.NOP

51.POP

52.PUSH

53.RCALL

54.RESET

55.RETFIE

56.RETLW

57.RETURN

58.SLEEP

ASSEMBLY2

5425/04/2017

Mnemônicos PIC24F (ex.:04KA200)1. ADD

2. ADDC

3. AND

4. ASR

5. BCLR

6. BRA

7. BSET

8. BSW

9. BTG

10.BTSC

11.BTSS

12.BTST

13.BTSTS

14.CALL

15.CLR

16.CLRWDT

17.COM

18.CP

19.CP0

20.CPB

21.CPSEQ

22.CPSGT

23.CPSLT

24.CPSNE

25.DAW

26.DEC

27.DEC2

28.DISI

29.DIV

30.FF1L

31.FF1R

32.GOTO

33.INC

34.INC2

35.IOR

36.LNK

37.LSR

38.MOV

39.MUL

40.NEG

41.NOP

42.POP

43.PUSH

44.PWRSAV

45.RCALL

46.REPEAT

47.RESET

48.RETFIE

49.RETLW

50.RETURN

51.RLC

52.RLNC

53.RRC

54.RRNC

55.SE

56.SETM

57.SL

58.SUB

59.SUBB

60.SUBR

61.SUBBR

62.SWAP

63.TBLRDH

64.TBLRDL

65.TBLWTH

66.TBLWTL

67.ULNK

68.XOR

69.ZE

Page 10: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

10

ASSEMBLY2

5525/04/2017

Mnemônicos PIC24HJ (ex.:12GP201/202)1. ADD

2. ADDC

3. AND

4. ASR

5. BCLR

6. BRA

7. BSET

8. BSW

9. BTG

10.BTSC

11.BTSS

12.BTST

13.BTSTS

14.CALL

15.CLR

16.CLRWDT

17.COM

18.CP

19.CP0

20.CPB

21.CPSEQ

22.CPSGT

23.CPSLT

24.CPSNE

25.DAW

26.DEC

27.DEC2

28.DISI

29.DIV

30.EXCH

31.BFCL

32.FF1L

33.FF1R

34.GOTO

35.INC

36.INC2

37.IOR

38.LNK

39.LSR

40.MOV

41.MUL

42.NEG

43.NOP

44.POP

45.PUSH

46.PWRSAV

47.RCALL

48.REPEAT

49.RESET

50.RETFIE

51.RETLW

52.RETURN

53.RLC

54.RLNC

55.RRC

56.RRNC

57.SE

58.SETM

59.SL

60.SUB

61.SUBB

62.SUBR

63.SUBBR

64.SWAP

65.TBLRDH

66.TBLRDL

67.TBLWTH

68.TBLWTL

69.ULNK

70.XOR

71.ZE

ASSEMBLY2

5625/04/2017

Mnemônicos PIC24EP (ex.:64GP202)1. ADD

2. ADDC

3. AND

4. ASR

5. BCLR

6. BRA

7. BSET

8. BSW

9. BTG

10.BTSC

11.BTSS

12.BTST

13.BTSTS

14.CALL

15.CLR

16.CLRWDT

17.COM

18.CP

19.CP0

20.CPB

21.CPSEQ

22.CPSGT

23.CPSLT

24.CPSNE

25.DAW

26.DEC

27.DEC2

28.DISI

29.DIV

30.DIVF

31.DO

32.ED

33.EDAC

34.EXCH

35.BFCL

36.FF1L

37.FF1R

38.GOTO

39.INC

40.INC2

41.IOR

42.LAC

43.LNK

44.LSR

45.MAC

46.MOV

47.MOVPAG

48.MOVSAC

49.MYP

50.MYP.N

51.MSC

52.MUL

53.NEG

54.NOP

55.POP

56.PUSH

57.PWRSAV

58.RCALL

59.REPEAT

60.RESET

61.RETFIE

62.RETLW

63.RETURN

64.RLC

65.RLNC

66.RRC

67.RRNC

68.SAC

69.SE

70.SETM

71.SFTAC

72.SL

73.SUB

74.SUBB

75.SUBR

76.SUBBR

77.SWAP

78.TBLRDH

79.TBLRDL

80.TBLWTH

81.TBLWTL

82.ULNK

83.XOR

84.ZE

ASSEMBLY2

5725/04/2017

MIPS32® e MIPS64®

• Copyright © Imagination Technologies Limited. All

rights reserved.

• Microprocessor without Interlocked Pipeline Stages.

• microMIPS®: Códigos comprimidos.

• Arquitetura RISC.

• Disponível para MCU´s e DSP´s.

• Os conjuntos de instruções, sua arquitetura e

códigos estão disponíveis para implementação em

qualquer dispositivo de qualquer fabricante.

ASSEMBLY2

5825/04/2017

Mnemônicos PIC32MX (MIPS32) (ex.:64GP202)

http

://ww

w.m

ips.c

om

/media

/files/M

D00565-2

B-M

IPS

32-Q

RC

-01.0

1.p

df

ASSEMBLY2

5925/04/2017

Mnemônicos MIPS64®ADD Add (with overflow)

ADDI Add immediate (with overflow)

ADDIU Add immediate unsigned (no overflow)

ADDU Add unsigned (no overflow)

AND Bitwise and

ANDI Bitwise and immediate

BEQ Branch on equal

BGEZ Branch on greater than or equal to zero

BGEZAL Branch on greater than or equal to zero and link

BGTZ Branch on greater than zero

BLEZ Branch on less than or equal to zero

BLTZ Branch on less than zero

BLTZAL Branch on less than zero and link

BNE Branch on not equal

DIV Divide

DIVU Divide unsigned

J Jump

JAL Jump and link

JR Jump register

LB Load byte

LUI Load upper immediate

LW Load word

MFHI Move from HI

MFLO Move from LO

MULT Multiply

MULTU Multiply unsigned

NOOP no operation

OR Bitwise or

ORI Bitwise or immediate

SB Store byte

SLL Shift left logical

SLLV Shift left logical variable

SLT Set on less than (signed)

SLTI Set on less than immediate (signed)

SLTIU Set on less than immediate unsigned

SLTU Set on less than unsigned

SRA Shift right arithmetic

SRL Shift right logical

SRLV Shift right logical variable

SUB Subtract

SUBU Subtract unsigned

SW Store word

SYSCALL System call

XOR Bitwise exclusive or

XORI Bitwise exclusive or immediate

INSTRUÇÕES PIC16F8773

INSTRUÇÕES PIC16F877

6025/04/2017

Page 11: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

11

INSTRUÇÕES PIC16F8773

• PIC16F877

• O MPLAB® monta os bits não usados como “zero”.

• Um opcode com bits não usados em “um” não é

apresentado na coluna “disassembly”.

• Zeros à esquerda não podem ser omitidos.

6125/04/2017

f Register File Adress* 00h até 7Fh – 7 bits

W Working Register / Acumulator 00h até FFh – 8 bits

b Bit Address 0h até 7h – 3 bits

k Constant, 8 bits 00h até FFh – 8 bits

x Don´t Care (bit não usado)

d Destination 0h até 1h – 1 bit

PC Program Counter** 000h até 7FFh – 11 bits

Siglas

* São 9 bits no total.

** São 13 bits no total.

INSTRUÇÕES PIC16F8773

6225/04/2017

Siglas

• O file é um registrador localizado na SRAM.

• A palavra “f” é de 8 bits porque a MCU é de 8 bits.

• O endereço “f” é de 7 bits porque cada banco da SRAM é

formado por 7 bits.

• “W” é um registrador de 8 bits, tal como os registradores

localizados no file registers.

• Sempre um dos argumentos da ULA é o acumulador.

• Em outros P´s, o registrador “W” é chamado de “A”.

• Em P´s de 16 bits, o acumulador é dividido em “AH” e “AL”.

INSTRUÇÕES PIC16F8773

6325/04/2017

Siglas

• O bit address seleciona um bit em uma

palavra de 8 bits, pois a MCU é de 8 bits.

• O bit address possui 3 bits para

endereçar as 8 posições.

• A constante é um número de 8 bits,

proveniente do barramento de dados, de 8 bits.

INSTRUÇÕES PIC16F8773

6425/04/2017

Categorias

• Os dois bits mais significativos do opcode são

usados na identificação da família da instrução.

• OPCODE<13:12>.

• Cada família possui uma estrutura para o

opcode.

INSTRUÇÕES PIC16F8773

6525/04/2017

Família de instruções sobre bytes (00)

01 ANDWF

02 IORWF

03 XORWF

04 ADDWF

05 SUBWF

06 COMF

07 INCF

08 DECF

09 INCFSZ

10 DECFSZ

11 RLF

12 RRF

13 SWAPF

14 MOVF

15 CLRF

16 CLRW

17 MOVWF

18 NOP

W: Work register (accumulator)

F: File register

OPCODE<13:12> = 00

INSTRUÇÕES PIC16F8773

6625/04/2017

SUBWF

DECF

IORWF

ANDWF

XORWF

ADDWF

MOVF

COMF

INCF

DECFSZ

RRF

RLF

SWAPF

INCFSZ

416

DEC

Bit08

Bit09

Bit10

Bit11

Bit12

Bit13

CS

Bit07

NOP

MOVWF

CLRW

CLRF

d

Seleção das instruções sobre bytes (00)

Page 12: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

12

INSTRUÇÕES PIC16F8773

6725/04/2017

Instrução Tipo

01 SUB WF Aritmética

02 DEC F Aritmética

03 IOR WF Lógica

04 AND WF Lógica

05 XOR WF Lógica

06 ADD WF Aritmética

07 MOV F Movimentação

08 COM F Lógica

09 INC F Aritmética

10 DEC FSZ Aritmética

11 RR F Lógica

12 RL F Lógica

13 SWAPF Lógica

14 INC FSZ Aritmética

Classificação – Tipo 1 (00)

INSTRUÇÕES PIC16F8773

6825/04/2017

Estrutura da instrução sobre bytes – Tipo 1 (00)

• 4 bits para seleção da operação, OPCODE<11:8>.

• f: Endereço do registrador que contém um dos

argumentos, OPCODE<6:0>.

• d: OPCODE<7>.

• Definição do registrador que conterá o resultado.

• d = 0: O resultado é enviado para W.

• d = 1: O resultado é enviado para file.

SUBWF

DECF

IORWF

ANDWF

XORWF

ADDWF

MOVF

COMF

INCF

DECFSZ

RRF

RLF

SWAPF

INCFSZ

0 dseleção file

13 12 8 7 6 0

0

11

INSTRUÇÕES PIC16F8773

6925/04/2017

Estrutura da instrução sobre bytes – tipo 2 (00)

• 5 bits para seleção da operação, OPCODE<11:7>.

• f: Endereço do registrador que contém um dos

argumentos, OPCODE<6:0>.

NOP

MOVWF

CLRW

CLRF 0 seleção file

13 12 7 6 0

0

11

Instrução Tipo

15 NOP -

16 MOV WF Movimentação

17 CLR W Lógica/Aritmética

18 CLR F Lógica/Aritmética

INSTRUÇÕES PIC16F8773

7025/04/2017

Sintaxe para o tipo 1 – f,d

01 ANDWF f,d

02 IORWF f,d

03 XORWF f,d

04 ADDWF f,d

05 SUBWF f,d

06 COMF f,d

07 INCF f,d

08 DECF f,d

09 INCFSZ f,d

10 DECFSZ f,d

11 RLF f,d

12 RRF f,d

13 SWAPF f,d

14 MOVF f,d

INSTRUÇÕES PIC16F8773

7125/04/2017

Sintaxe para o tipo 2

1 CLRF f

2 CLRW

3 MOVWF f

4 NOP

INSTRUÇÕES PIC16F8773

7225/04/2017

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 SUB WF 00b 0010b (02d) dfff ffff

02 DEC F 00b 0011b (03d) dfff ffff

03 IOR WF 00b 0100b (04d) dfff ffff

04 AND WF 00b 0101b (05d) dfff ffff

05 XOR WF 00b 0110b (06d) dfff ffff

06 ADD WF 00b 0111b (07d) dfff ffff

07 MOV F 00b 1000b (08d) dfff ffff

08 COM F 00b 1001b (09d) dfff ffff

09 INC F 00b 1010b (10d) dfff ffff

10 DEC FSZ 00b 1011b (11d) dfff ffff

11 RR F 00b 1100b (12d) dfff ffff

12 RL F 00b 1101b (13d) dfff ffff

13 SWAPF 00b 1110b (14d) dfff ffff

14 INC FSZ 00b 1111b (15d) dfff ffff

Códigos para o tipo 1

Seleção da função

7-bit file addressFamília

Page 13: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

13

INSTRUÇÕES PIC16F8773

7325/04/2017

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 NOP 00b 0000b (00d) 0xx0 0000

02 MOV WF 00b 0000b (00d) 1fff ffff

03 CLR W 00b 0001b (01d) 0xxx xxxx

04 CLR F 00b 0001b (01d) 1fff ffff

Seleção da

função

Família Bit 7

Códigos para o tipo 2

• Onde existe irrelevância, somente a

substituição total por zero gera código

na coluna disassembly do MPLAB™.

• Na programação pelo MPASM™,

todas as irrelevâncias valem zero.

INSTRUÇÕES PIC16F8773

7425/04/2017

Seleção das funções do tipo 2

24

DEC

Bit07

Bit08

Bit09

Bit10

Bit11

Bit12

Bit13

CS

NOP

MOVWF

CLRW

CLRF

INSTRUÇÕES PIC16F8773

7525/04/2017

1 AND WF

2 IOR WF

3 XOR WF

4 ADD WF

5 SUB WF

Operações de dois operandos com bytes

• 0 f 127 (7 bits)

• Se d=0: “W” = “f” op “W”

• Se d=1: “f” = “f” op “W”

INSTRUÇÕES PIC16F8773

7625/04/2017

1 COM F

2 INC F

3 DEC F

4 INC FSZ

5 DEC FSZ

6 RL F

7 RR F

8 SWAP F

9 MOV F

Operações de um operando com bytes

• 0 f 127 (7 bits)

• Se d=0: “W” = op “f”

• Se d=1: “f” = op “f”

INSTRUÇÕES PIC16F8773

7725/04/2017

1 CLR W (sem operandos)

2 CLR F (um operando)

Operações diferentes com bytes

• 0 f 127 (7 bits)

• Se bit7=0: CLRW “W” = op “W”

• Se bit7=1: CLRF “f” = op “f”

• As duas instruções clear não são

agrupadas e identificadas pelo destiny.

• Isto se deve ao fato das suas sintaxes

serem diferentes.

INSTRUÇÕES PIC16F8773

7825/04/2017

1 CLRW

2 NOP

Operações com bytes sem operandos

Page 14: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

14

INSTRUÇÕES PIC16F8773

7925/04/2017

Família de instruções sobre bytes sobre bits (01)

1 BCF

2 BSF

3 BTFSC

4 BTFSS

F: File register

OPCODE<13:12> = 01

INSTRUÇÕES PIC16F8773

8025/04/2017

• 2 bits para seleção da operação, OPCODE<11:10>.

• b: Campo de bits OPCODE<9:7>.

• Seleciona quais sofrerão a ação.

• f: Endereço do registrador que contém os bits, OPCODE<6:0>.

Estrutura das instruções sobre bits (01)

0 bitseleção file

13 12 7 6 0

1

9

INSTRUÇÕES PIC16F8773

8125/04/2017

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 BC F 01 00bb bfff ffff

02 BS F 01 01bb bfff ffff

03 BT FSC 01 10bb bfff ffff

04 BT FSS 01 11bb bfff ffff

7-bit file address

Seleção da função

Seleção do bit

Família

Código das instruções sobre bits (01)

INSTRUÇÕES PIC16F8773

8225/04/2017

24

DEC

Bit10

Bit11

Bit12

Bit13

CS

BCF

BSF

BTFSC

BTFSS

Seleção das instruções sobre bits (01)

INSTRUÇÕES PIC16F8773

8325/04/2017

Sintaxe das instruções sobre bits (01)

1 BCF f,b

2 BSF f,b

3 BTFSC f,b

4 BTFSS f,b

INSTRUÇÕES PIC16F8773

8425/04/2017

1 ADDLW

2 ANDLW

3 IORLW

4 MOVLW

5 SUBLW

6 XORLW

7 RETLW

Família de instruções sobre literais (11)

W: Work register (accumulator)

L: Literal ou Constante ou Dado

OPCODE<13:12> = 11

Page 15: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

15

INSTRUÇÕES PIC16F8773

8525/04/2017

• 4 bits para seleção da operação, OPCODE<11:8>.

• k: Número de 8 bits.

• “k” representa o número (literal) que será operado com “W”.

1 seleção k (literal)

13 12 8 7 0

1

11

Família de instruções sobre literais (11)

INSTRUÇÕES PIC16F8773

8625/04/2017

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 MOV LW 11 00xx kkkk kkkk

02 RET LW 11 01xx kkkk kkkk

03 IOR LW 11 1000 kkkk kkkk

04 AND LW 11 1001 kkkk kkkk

05 XOR LW 11 1010 kkkk kkkk

- 11 1011 xxxx xxxx

06 SUB LW 11 110x kkkk kkkk

07 ADD LW 11 111x kkkk kkkk

8-bit Constant

Seleção da função

Família

Código das instruções sobre literais (11)

INSTRUÇÕES PIC16F8773

8725/04/2017

• A literal (L) é operada com o acumulador (W).

• O resultado é salvo no acumulador (W).

Lógicas

Aritméticas

Movimentação

1 AND LW

2 IOR LW

3 XOR LW

4 ADD LW

5 SUB LW

6 MOV LW

7 RET LW

Classificação das instruções sobre literais (11)

INSTRUÇÕES PIC16F8773

8825/04/2017

416

DEC

Bit08

Bit09

Bit10

Bit11

Bit12

Bit13

CS

IOR

AND

XOR

MOVLW

RETLW

SUBLW

ADDLW

Lógicas

Aritméticas

Mo

vim

enta

çã

o

Seleção das instruções sobre literais (11)

INSTRUÇÕES PIC16F8773

8925/04/2017

1 ANDLW k

2 IORLW k

3 XORLW k

4 ADDLW k

5 SUBLW k

6 MOVLW k

7 RETLW k

• 0 k 255

• “W” = “k” op “W”

Sintaxe das instruções sobre literais (11)

INSTRUÇÕES PIC16F8773

9025/04/2017

Sobre bytes e sobre literais

AND LW

IOR LW

XOR LW

ADD LW

SUB LW

MOV LW

RET LW

AND WF

IOR WF

XOR WF

ADD WF

SUB WF

MOV WF

Lógicas

Aritméticas

Movimentação

File

Família 00

Literal

Família 11

Page 16: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

16

INSTRUÇÕES PIC16F8773

9125/04/2017

1 CLRWDT

2 SLEEP

3 RETURN

4 RETFIE

• Os bits de identificação desta família também são 00.

• OPCODE<13:12> = 00

Família de instruções de controle (00)

INSTRUÇÕES PIC16F8773

9225/04/2017

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 RETURN 00 0000 0000 1000

02 RETFIE 00 0000 0000 1001

03 SLEEP 00 0000 0110 0011

04 CLRWDT 00 0000 0110 0100

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 NOP 00 0000 0xx0 0000

03 MOVWF 00 0000 1fff ffff

Apesar de parecidos, estes códigos não são confundidos com NOP e MOVWF.

Família

Código das instruções de controle (00)

00_0000_0 seleção

13 7 6 0

INSTRUÇÕES PIC16F8773

9325/04/2017

1 GOTO

2 CALL

Família de instruções de desvio (10)

INSTRUÇÕES PIC16F8773

• 1 bit para seleção da operação, OPCODE<11>.

• k: Número de 11 bits OPCODE<10:0>.

• Instruções: CALL ou GOTO; instruções de desvio.

• CALL e GOTO atuam sobre a program flash.

• “k” representa o endereço dentro da página da flash.

• Cada página possui 11 bits de endereço.

9425/04/2017

Estrutura das instruções de desvio (10)

1 sel k (literal)

13 12 10 0

0

11

INSTRUÇÕES PIC16F8773

9525/04/2017

De desvio (10)Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 CALL 10 0kkk kkkk kkkk

02 GOTO 10 1kkk kkkk kkkk

11-bit Constant

• “k” representa o endereço dentro da página da flash.

• “k” contém os bits do endereço, OPCODE<10:0>.

• “k” seleciona alinha na página da flash.

• Cada página possui 11 bits de endereço.

Família

Seleção

INSTRUÇÕES PIC16F8773

9625/04/2017

Nibble 3

• O terceiro nibble da instrução

identifica a família da instrução.

• OPCODE<13:12>.

• 00b: Sobre byte (tipos 1 e 2)

• 00b: De controle

• 01b: Sobre bit

• 10b: De desvio

• 11b: Sobre literal

Page 17: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

17

INSTRUÇÕES PIC16F8773

9725/04/2017

Padrões de estrutura de opcode

d0 0

13 12 11 10 9 8 7 6 5 4 3 2 1 0

seleção file address

0 0 seleção

13 12 11 10 9 8 7 6 5 4 3 2 1 0

file address

1 1

13 12 11 10 9 8 7 6 5 4 3 2 1 0

seleção literal

0 0 0 0 0 0 0

13 12 11 10 9 8 7 6 5 4 3 2 1 0

seleção

1 0

13 12 11 10 9 8 7 6 5 4 3 2 1 0

program addresssel.

10

13 12 11 10 6 5 4 3 2 1 09 8 7

sel. bit addr. file address

Tipo 1

Tipo 2

Sobre bit

Sobre literal

De controle

De desvio

Sobre byte

INSTRUÇÕES PIC16F8773

9825/04/2017

Padrões de estrutura de opcode

d0 0

13 12 11 10 9 8 7 6 5 4 3 2 1 00

seleção file address

0 0 seleção

13 12 11 10 9 8 7 6 5 4 3 2 1 0

file address

1 1

13 12 11 10 9 8 7 6 5 4 3 2 1 0

seleção literal

0 0 0 0 0 0 0

13 12 11 10 9 8 7 6 5 4 3 2 1 0

seleção

1 0

13 12 11 10 9 8 7 6 5 4 3 2 1 0

program addresssel.

10

13 12 11 10 6 5 4 3 2 1 09 8 7

sel. bit addr. file address

SUBWF

DECF

IORWF

ANDWF

XORWF

ADDWF

MOVF

COMF

INCF

DECFSZ

RRF

RLF

SWAPF

INCFSZ

NOP

MOVWF

CLRW

CLRF

BCF

BSF

BTFSC

BTFSS

ANDLW

IORLW

XORLW

ADDLW

SUBLW

MOVLW

RETLW

CLRWDT

SLEEP

RETURN

RETFIE

GOTO

CALL

INSTRUÇÕES PIC16F8773

9925/04/2017

Padrões de estrutura de opcode

d0 0

13 12 11 10 9 8 7 6 5 4 3 2 1 0

seleção file address

0 0 seleção

13 12 11 10 9 8 7 6 5 4 3 2 1 0

file address

1 1

13 12 11 10 9 8 7 6 5 4 3 2 1 0

seleção literal

0 0 0 0 0 0 0

13 12 11 10 9 8 7 6 5 4 3 2 1 0

seleção

1 0

13 12 11 10 9 8 7 6 5 4 3 2 1 0

program addresssel.

10

13 12 11 10 6 5 4 3 2 1 09 8 7

sel. bit addr. file address

Dois

argumentos

Um

argumento

Sem

argumento

INSTRUÇÕES PIC16F8773

10025/04/2017

Seleção das cinco famílias

24

DEC

Bit12

Bit13

Sobre byte / De controle

Sobre bit

De desvio

Sobre literal

INSTRUÇÕES PIC16F8773

10125/04/2017

Instruções de dois ciclos – 2TCY

1 BTFSC

2 BTFSS

3 DECFSZ

4 INCFSZ

5 CALL

6 GOTO

7 RETURN

8 RETLW

9 RETFIE

Condicional

Desvio

INSTRUÇÕES PIC16F8773

10225/04/2017

Instruções não usadas

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 OPTION 00 0000 0110 0010

02 TRIS 00 0000 0110 0fff

• Não há proteção contra opcode inválido no chip.

• Um opcode inválido leva a uma ação inesperada.

Page 18: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

18

INSTRUÇÕES PIC16F8773

10325/04/2017

Bits de estado (SR) afetados

AND - - ZIOR - - ZXOR - - ZADD C DC ZSUB C DC ZCLRW - - ZCLRF - - ZCOMF - - ZINCF - - ZDECF - - ZRLF C - ZRRF C - ZSWAPF - - ZMOVF - - Z

Bits de estado

INSTRUÇÕES PIC16F8773

10425/04/2017

Bits de estado (SR) afetados

ADD C DC ZSUB C DC ZRLF C - ZRRF C - Z

Bits de estado

• Nas instruções acima, é preciso considerar

que a resposta é uma palavra de 9 bits.

• A calculadora deve ser configurada para 9 bits.

• Nas demais operações, a calculadora deve ser

configurada para 8 bits.

INSTRUÇÕES PIC16F8773

10525/04/2017

Instrução 3FFFh

• Quando a program memoy está

apagada, todos os seus bits valem “1”.

• Todos os 8k opcodes valem 3FFFh.

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

07 ADD LW 11 111x kkkk kkkk

• x = 1

• Como x=1, o código não aparece na coluna disassembly.

• ADDLW ffh

• Esta instrução equivale a SUBLW 01h

• O acumulador é decrementado uma unidade.

CONJUNTO DE INSTRUÇÕES4

10625/04/2017

CONJUNTO DE INSTRUÇÕES

CONJUNTO DE INSTRUÇÕES4

10725/04/2017

NOP

• No Operation.

• Não afeta os bits de estado.

Sintaxe: NOP

• O NOP é usado, principalmente, em situações nas

quais se deseja que a execução de um programa

leve uma determinada quantidade de tempo.

• O uso do NOP permite aumentar o tempo de

execução do programa.

CONJUNTO DE INSTRUÇÕES4

10825/04/2017

NOP – Exemplo de aplicação

Programa

principal

Rotina 1

Rotina 2

Mais curta do que Rotina 1

Programa

principal

Teste

condicional

NOP’s

• O programa leva o

mesmo tempo de

execução nas duas

possibilidades.

Page 19: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

19

CONJUNTO DE INSTRUÇÕES4

10925/04/2017

ANDWF e ANDLW

ANDLW

“W” = “k” AND “W”

ANDWF

d=0: “W” = “f” AND “W”

d=1: “f” = “f” AND “W”

• “E” lógico.

• Afetam o bit de estado “Z”.

Sintaxe: ANDWF f,d

Sintaxe: ANDLW k

CONJUNTO DE INSTRUÇÕES4

11025/04/2017

IORWF e IORLW

IORLW

“W” = “k” IOR “W”

IORWF

d=0: “W” = “f” IOR “W”

d=1: “f” = “f” IOR “W”

• “OU” lógico.

• Afetam o bit de estado “Z”.

Sintaxe: IORWF f,d

Sintaxe: IORLW k

CONJUNTO DE INSTRUÇÕES4

11125/04/2017

XORWF e XORLW

XORLW

“W” = “k” XOR “W”

XORWF

d=0: “W” = “f” XOR “W”

d=1: “f” = “f” XOR “W”

• “OU exclusivo” lógico.

• Afetam o bit de estado “Z”.

Sintaxe: XORWF f,d

Sintaxe: XORLW k

CONJUNTO DE INSTRUÇÕES4

11225/04/2017

ADDWF e ADDLW

ADDLW

“W” = “k” ADD “W”

ADDWF

d=0: “W” = “f” ADD “W”

d=1: “f” = “f” ADD “W”

• Adição aritmética.

• Afetam os bits de estado “Z”, “C” e “DC”.

Sintaxe: ADDWF f,d

Sintaxe: ADDLW k

CONJUNTO DE INSTRUÇÕES4

11325/04/2017

SUBWF e SUBLW

SUBLW

“W” = “k” SUB “W” (W=l – W)

SUBWF

d=0: “W” = “f” SUB “W” (W=f–W )

d=1: “f” = “f” SUB “W” (f=f–W )

• Subtração aritmética.

• Afetam os bits de estado “Z”, “C” e “DC”.

Sintaxe: SUBWF f,d

Sintaxe: SUBLW k

• A subtração não é comutativa.

• f ou L é o minuendo.

• W é o subtraendo.

CONJUNTO DE INSTRUÇÕES4

11425/04/2017

ADD e SUB

• O bit C pode ser considerado o nono bit do resultado.

• ADD permite adicionar dois números de 8 bitsgerando um número de nove bits (000h a 1FFh).

• Em ADD, o bit C representa o nono bit do resultado.

• SUB permite subtrair dois números de 8 bits gerando

um número de nove bits.

• Em SUB, o bit C representa o sinal

• C=1: Resposta positiva.

• C=0: Resposta negativa.

Page 20: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

20

CONJUNTO DE INSTRUÇÕES4

11525/04/2017

Subtração negativa

MOVLW 0xae ;W = 0xAE

SUBLW 0x45 ;W = 0x45 - 0xAE

MOVWF 0x23 ;SRAM(0x23) = W

256 + (69 – 174) = 151

W = L – WW = 0x45 – 0xAE

100h + 45h – AEh = 97h

AEh – 45h: C = 1

45h – AEh: C = 0

• Em subtração negativa, a resposta de 8 bitsrepresenta o resultado adicionado a 100h.

• Para saber o real resultado, é preciso converter o

valor fornecido para a base decimal e subtrair 256.

CONJUNTO DE INSTRUÇÕES4

11625/04/2017

CLRW e CLRF

• CLRW: Apaga o conteúdo de “W”.

• CLRF: Apaga o conteúdo de “f”.

• Afetam o bit de estado “Z”.

CLRF

“f” = 00h

“Z” = 1

CLRW

“W” = 00h

“Z” = 1

Sintaxe: CLRW

Sintaxe: CLRF f

CONJUNTO DE INSTRUÇÕES4

11725/04/2017

COMF

• Complementa o conteúdo de “f”.

• Afeta o bit de estado “Z”.

d=0: “W” = /“f”

d=1: “f” = /“f”

Sintaxe: COMF f,d

• O conteúdo de “f” é complementado bit a bit.

• Equivale a fazer 0xFF – “f”

CONJUNTO DE INSTRUÇÕES4

11825/04/2017

INCF e DECF

• INCF: Incrementa o conteúdo de “f”.

• DECF: Decrementa o conteúdo de “f”.

• Afetam o bit de estado “Z”.

INCF

d=0: “W” = “f” + 1

d=1: “f” = “f” + 1

DECF

d=0: “W” = “f” – 1

d=1: “f” = “f” – 1

Sintaxe: INCF f,d

Sintaxe: DECF f,d

CONJUNTO DE INSTRUÇÕES4

11925/04/2017

INCF e DECF• INCF e DECF são cíclicos.

• Quando 0xFF é atingido, INC produz 0x00.

• Quando 0x00 é atingido, DEC produz 0xFF.

• O bit “C” não é afetado.

FFh

FEh

01h

00h

Valor

Z=1

INCF

FFh

FEh

01h

00h

Valor

Z=1

DECF

CONJUNTO DE INSTRUÇÕES4

12025/04/2017

INCF e DECF

• O bit Z pode ser usado para incrementar

ou decrementar palavras de mais de 8 bits.

• O bit Z é somado ao high byte.

• O INCF é efetuado sobre o low byte.

• Para cada INCF, é efetuada a adição de Z

com o high byte.

• Em cada overflow do low byte, Z = 1, o

high byte sofre um incremento por meio da

adição.

Page 21: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

21

CONJUNTO DE INSTRUÇÕES4

12125/04/2017

RLF e RRF

• RLF: Gira o conteúdo de “f” para a esquerda.

• RRF: Gira o conteúdo de “f” para a direita.

• Afetam o bit de estado “C”.

RLF

d=0: “W” = RL “f”

d=1: “f” = RL “f”

RRF

d=0: “W” = RR “f”

d=1: “f” = RR “f”

Sintaxe: RLF f,d

Sintaxe: RRF f,d

O carry (C) está

incluído (9 bits).

CONJUNTO DE INSTRUÇÕES4

12225/04/2017

RLF – C=0• Configurando, inicialmente, C=0, a instrução RLF corresponde

à multiplicação de um número inteiro de 8 bits por 2.

• É possível multiplicar por 2 números na faixa de 0 a 255 (00h

a FFh).

• O valor resultante do bit C indica a ocorrência de um overflow.

• Em caso de overflow, o resultado da multiplicaçãocorresponde ao valor do registrador adicionado a 256 (100h).

• O máximo operando que não gera overflow é 127 (7Fh), que,

multiplicado por 2, resulta em 254 (0FEh).

• O mínimo operando que gera overflow é 128 (80h), que,

multiplicado por 2, resulta em 256 (100h).

• O máximo operando é 255 (FFh), que, multiplicado por 2,

resulta em 510 (1FEh).

Vide exemplos

CONJUNTO DE INSTRUÇÕES4

12325/04/2017

RLF – C=1

• Configurando, inicialmente, C=1, a instrução RLF corresponde

à multiplicação de um número de 9 bits (fracionário) por 2.

• É possível multiplicar por 2 números na faixa de 0 a 255,5(00,0h a FF,8h).

• O valor resultante do bit C indica a ocorrência de um overflow.

• Em caso de overflow, o resultado da multiplicaçãocorresponde ao valor do registrador adicionado a 256 (100h).

• O máximo operando que não gera overflow é 127,5 (7F,8h),

que, multiplicado por 2, resulta em 255 (0FFh).

• O mínimo operando que gera overflow é 128,5 (80,8h), que,

multiplicado por 2, resulta em 257 (101h).

• O máximo operando é 255,5 (FF,8h), que, multiplicado por 2,

resulta em 511 (1FFh).

Vide exemplos

CONJUNTO DE INSTRUÇÕES4

12425/04/2017

RRF – C=0

• Configurando, inicialmente, C=0, a instrução RRF

corresponde à divisão de um número inteiro de 8 bits por 2.

• É possível dividir números na faixa de 0 a 255 (00h a FFh).

• O valor resultante do bit C indica a ocorrência de um bit

fracionário se o operando era ímpar (0,8h).

• O máximo operando é 255 (FFh), que, dividido por 2,

resulta em 127,5 (7F,8h).

Vide exemplos

CONJUNTO DE INSTRUÇÕES4

12525/04/2017

RRF – C=1

• Configurando, inicialmente, C=1, a instrução RRF

corresponde à divisão de um número inteiro de 9 bits por 2.

• É possível dividir números na faixa de 0 a 511 (000h a 1FFh).

• O valor resultante do bit C indica a ocorrência de um bit

fracionário se o operando era ímpar (0,8h).

• O máximo operando é 511 (1FFh), que, dividido por 2, resulta

em 255,5 (FF,8h).

Vide exemplos

CONJUNTO DE INSTRUÇÕES4

12625/04/2017

O significado do carry em RLF e RRF

• O programa pode interpretar C=1, no início, como um

indicativo de número inteiro entre 100h e 1FFh.

• O programa pode interpretar C=1, no início, como um

indicativo de número fracionário entre 00,8h e FF,8h.

• Ao usar RLF, C=1 no início deve, obrigatoriamente, ser

interpretado como a parte facionária (00,8h).

• Ao usar RRF, C=1 no início deve, obrigatoriamente, ser

interpretado como overflow (100h).

• Ao obter C=1 após RLF, deve, obrigatoriamente, ser

interpretado como overflow (100h).

• Ao obter C=1 após RRF, deve, obrigatoriamente, ser

interpretado a parte facionária (00,8h).

Page 22: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

22

CONJUNTO DE INSTRUÇÕES4

12725/04/2017

SWAPF

• Permuta os nibbles do conteúdo de “f”.

• Afeta o bit de estado “Z”.

d=0: “W” = SWAP “f”

d=1: “f” = SWAP “f”

Sintaxe: SWAPF f,d

CONJUNTO DE INSTRUÇÕES4

12825/04/2017

SWAPF

• Útil para fazer uma comunicação paralela de quatro

bits sobre palavras de oito bits.

• Isto permite economia no hardware de comunicação.

• Primeiramente, o nibble menos significativo é

enviado.

• O SWAPF é executado.

• O nibble mais significativo é enviado.

• A frequência da comunicação cai abaixo da metade,pois tempo é perdido na execução de SWAPF.

CONJUNTO DE INSTRUÇÕES4

12925/04/2017

MOVF

• Copia o conteúdo de “f”.

• Afeta o bit de estado “Z”.

d=0: “W” = “f”

d=1: “f” = “f”

Sintaxe: MOVF f,d

• A opção “f” = “f” é usada, por exemplo, para

verificar se o conteúdo de “f” é zero.

• Se for zero, Z=1.

CONJUNTO DE INSTRUÇÕES4

13025/04/2017

MOVF

• A opção mais usada é aquela onde d=0b.

• Nesta situação, o MPLAB® permite o uso de

uma notação simplificada.

• MOVF f,d = MOVFW f.

• Esta simplificação pode ser usada somente

se o montador em uso é o MPLAB®.

• Esta notação simplificada não aparece nos

datasheets dos chips.

• O MPLAB® converte, automaticamente, a

notação simplificada para a notação correta.

CONJUNTO DE INSTRUÇÕES4

13125/04/2017

MOVWF e MOVLW

MOVLW

LW

“W” = “k”

MOVWF

WF

“f” = “W”

• MOVWF: Copia o conteúdo de “W” para “f”.

• MOVLW: Copia o conteúdo de “k” para “W”.

• Não afetam os bits de estado.

Sintaxe: MOVWF f

Sintaxe: MOVLW k

CONJUNTO DE INSTRUÇÕES4

13225/04/2017

MOVFW, MOFWF e MOVLW

MOVFW

MOVWF

MOVLW

Page 23: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

23

CONJUNTO DE INSTRUÇÕES4

13325/04/2017

BCF e BSF

• 0d f 127d

• 0h f 7Fh

• 0d b 7d

• 000b b 111b

• BCF: O bit “b” no registrador “f” vira zero (clear, reset).

• BSF: O bit “b” no registrador “f” vira um (set).

• Não afetam os bits de estado.

Sintaxe: BCF f,b

Sintaxe: BSF f,b

CONJUNTO DE INSTRUÇÕES4

13425/04/2017

BTFSC e BTFSS

• Instruções condicionais.

• Analisam o bit “b” no registrador “f”.

• BTFSC: Pula a próxima instrução se “b” é zero.

• BTFSS: Pula a próxima instrução se “b” é um.

• BTFSC: “Bit Test f, Skip if Clear”.

• BTFSS: “Bit Test f, Skip if Set”.

• Não afetam os bits de estado.

Sintaxe: BTFSC f,b

Sintaxe: BTFSS f,b

CONJUNTO DE INSTRUÇÕES4

13525/04/2017

INCFSZ e DECFSZ

• Instruções condicionais.

• Realizam INC ou DEC.

• Analisa o resultado.

• Se o resultado é zero,

pula a próxima

instrução.

• INCFSZ: “Increment f, Skip if Zero”.

• DECFSZ: “Decrement f, Skip if Zero”.

• Não afetam os bits de estado.

Sintaxe: INCFSZ f,d

Sintaxe: DECFSZ f,d

INCFSZ

d=0: “W” = “f” + 1

d=1: “f” = “f” + 1

DECFSZ

d=0: “W” = “f” – 1

d=1: “f” = “f” – 1

CONJUNTO DE INSTRUÇÕES4

13625/04/2017

INCFSZ e DECFSZ

• Usados em estruturas de repetição (laços).

• Um registrador é usado como variável de contagem.

• Em cada repetição, INCFSZ ou DECFSZ é

realizado.

• Se a variável atingiu o valor zero, o ciclo de

repetições é finalizado.

CONJUNTO DE INSTRUÇÕES4

13725/04/2017

Sobre BTFSC, BTFSS, INCFSZ e DECFSZ

• Skippers.

• Instruções condicionais permitem alterar o

próximo valor do PC.

• Estas instruções consomem o dobro do tempo.

• Este tipo de instrução é chamada de 2TCY.

• Se não houver skip: PC = PC+1.

• Se houver skip: PC = PC+2.

• A instrução pulada é aquela que segue o skipper

na program memory. Se a diretiva ORG é usada

após o skipper, a instrução pulada não

necessariamente é aquela que segue a diretiva.

CONJUNTO DE INSTRUÇÕES4

13825/04/2017

CLRWDT

• Não usa argumentos.

• Não afeta os bits de estado.

• Previne que a MCU reinicie por suspeita de

travamento.

• A reiniciação da MCU por suspeita de

travamento é uma ferramenta de segurança.

• Este comando reinicia o temporizador

analógico WDT.

• Este comando não é necessário se o WDT

está desabilitado.

• Este assunto será apresentado mais adiante.

Sintaxe: CLRWDT

Page 24: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

24

CONJUNTO DE INSTRUÇÕES4

13925/04/2017

SLEEP

• Não usa argumentos.

• Não afeta os bits de estado.

• Coloca a MCU em modo de baixo consumo de energia.

• O modo de baixo consumo é chamado de power down.

• Por causa da preocupação com a ecologia, normas

regulamentadoras tem obrigado fabricantes de

dispositivos processados a disponibilizar modos de

operação em economia de energia elétrica.

• Este assunto será apresentado mais adiante.

Sintaxe: SLEEP

CONJUNTO DE INSTRUÇÕES4

14025/04/2017

RETURN

• Não usa argumentos.

• Não afeta os bits de estado.

• Return from subroutine.

• Return: Retornar da sub-rotina.

• Este assunto será apresentado mais adiante.

Sintaxe: RETURN

CONJUNTO DE INSTRUÇÕES4

14125/04/2017

RETLW

• Não usa argumentos.

• Não afeta os bits de estado.

• Return with Literal in W.

• Coloca a constante “k” no registrador “W”.

• “W” = “k”

• É uma mistura de RETURN e MOVLW.

Sintaxe: RETLW k

CONJUNTO DE INSTRUÇÕES4

14225/04/2017

RETFIESintaxe: RETFIE

• Não usa argumentos.

• Não afeta os bits de estado.

• Return From Interrup.

• Retornar da interrupção.

• Útil quando a sub-rotina é chamada pela interrupção.

• Este assunto será apresentado mais adiante.

CONJUNTO DE INSTRUÇÕES4

14325/04/2017

Sintaxe: GOTO k

Sintaxe: CALL k

• Nas outras instruções, “k” usa 8 bits (dado).

• Em GOTO e em CALL, “k” usa 11 bits (flash).

• 0d k 2047d

• 000h k 7FFh

• “k” indica um endereço na página da flash.

• “k” indica o endereço da sub-rotina.

• Não afetam os bits de estado.

GOTO e CALL

CONJUNTO DE INSTRUÇÕES4

14425/04/2017

• GOTO: Desvio sem retorno.

• CALL: Desvio com retorno.

• Para que haja retorno, é preciso saber o

endereço de origem.

• GOTO pode ser usado na maioria das situações.

• CALL é necessário em situações específicas.

• Este assunto será apresentado mais adiante.

GOTO e CALL

Page 25: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

25

CONJUNTO DE INSTRUÇÕES4

14525/04/2017

Tempo

• Instruction Cycle: Tempo para executar uma instrução.

• Clock Input: Entrada de relógio (externo)

• Instruction Cycle TCY = 200ns (5MHz máximo)

• Clock Input = TOSC = 50ns (20MHz máximo)

• 200ns = 450ns

• 1 ciclo de instrução: 4 períodos de relógio.

• O oscilador externo é obtido por meio de cristal ou RC.

CONJUNTO DE INSTRUÇÕES4

14625/04/2017

Ciclo de relógio e de instrução

Instrução 1 Instrução 2 Instrução 3

• A sensibilidade é na borda de descida.

• Exemplo para 3 instruções 1TCY.

CONJUNTO DE INSTRUÇÕES4

14725/04/2017

• Q1: Decodificação da instrução.

• Q2: Leitura do dado da instrução.

• Q3: Processamento da instrução.

• Q4: Escrita do dado resultante.

• Todas as etapas representam operações

realizadas pela ULA através do data bus.

• Como se trata de uma MCU de 8 bits,

ULA, W e data bus são de 8 bits.

• Todas as etapas implicam em um fluxo

de informação de 8 bits no máximo.

Ciclo de relógio e de instrução

CONJUNTO DE INSTRUÇÕES4

14825/04/2017

• Q1: O mnemônico é identificado por meio de

circuitos decodificadores baseados nas tabelas de

montagem (decode).

• Todas as instruções passam pela etapa de

decodificação.

• As etapas Q2, Q3 e Q4 nem sempre são usadas.

• Quando uma etapa não é usada, nenhuma

atividade é realizada a fim de que a frequência

dos ciclos de instrução seja mantida constante.

Ciclo de relógio e de instrução

• Q1: Leitura de 6 bits.

• Q2: Leitura de 8 bits.

• Q4: Escrita de 8 bits.

CONJUNTO DE INSTRUÇÕES4

14925/04/2017

• Todas as instruções usam um ciclo (TCY).

• Exceções:

• Teste condicional.

• Alteração no PC através de uma instrução.

• Nas exceções, a instrução usa 2 ciclos.

• 2TCY = 400ns (mínimo).

1 BTFSC

2 BTFSS

3 DECFSZ

4 INCFSZ

5 CALL

6 GOTO

7 RETURN

8 RETLW

9 RETFIE

Ciclo de relógio e de instrução

CONJUNTO DE INSTRUÇÕES4

15025/04/2017

• Muitas informações aqui contidas são encontradas

nos data sheets fornecidos pela Microchip©.

• Outras informações são omitidas por tratarem-se

de segredo industrial e aqui são apresentadas

como uma suposição para fins didáticos.

Informação

Page 26: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

26

CONJUNTO DE INSTRUÇÕES4

15125/04/2017

Instrução Q1 Q2 Q3 Q4

ANDWF Decode Lê o file AND W Grava d

IORWF Decode Lê o file IOR W Grava d

XORWF Decode Lê o file XOR W Grava d

ADDWF Decode Lê o file ADD W Grava d

SUBWF Decode Lê o file SUB W Grava d

COMF Decode Lê o file COM Grava d

INCF Decode Lê o file INC Grava d

DECF Decode Lê o file DEC Grava d

RRF Decode Lê o file RR Grava d

RLF Decode Lê o file RL Grava d

SWAPF Decode Lê o file SWAP Grava d

Ciclo de relógio e de instrução

Q2 8-bit dataQ1 6-bit decode

0 dseleção file

13 12 7 6 0

1

8

CONJUNTO DE INSTRUÇÕES4

15225/04/2017

Instrução Q1 Q2 Q3 Q4

ANDLW Decode Lê o literal AND W Grava W

IORLW Decode Lê o literal IOR W Grava W

XORLW Decode Lê o literal XOR W Grava W

ADDLW Decode Lê o literal ADD W Grava W

SUBLW Decode Lê o literal SUB W Grava W

Ciclo de relógio e de instrução

Q2 8-bit dataQ1 6-bit decode

1 seleção literal

13 12 7 0

1

8

CONJUNTO DE INSTRUÇÕES4

15325/04/2017

Instrução Q1 Q2 Q3 Q4

BCF Decode Lê o file BC Grava f

BSF Decode Lê o file BS Grava f

Ciclo de relógio e de instrução

Q2 8-bit dataQ1 6-bit decode

0 bitsel file

13 12 7 6 0

1

9

CONJUNTO DE INSTRUÇÕES4

15425/04/2017

Instrução Q1 Q2 Q3 Q4

CLRW Decode Nada Nada Grava W

CLRF Decode Nada Nada Grava f

CLRWDT Decode Nada Nada Reinicia

MOVLW Decode Lê o literal Nada Grava W

MOVWF Decode Lê W Nada Grava f

MOVF Decode Lê o file Nada Grava d

SLEEP Decode Nada Nada SLEEP

NOP Decode Nada Nada Nada

• Os ciclos onde nada é realizado poderiam

ser eliminados para ganhar tempo.

• Isso não é feito a fim de que se mantenha

constante a frequência de instruções (fCY),

o que simplifica o funcionamento da MCU.

• A reiniciação feita por CLRWDT diz respeito

ao temporizador WDT.

Ciclo de relógio e de instrução

CONJUNTO DE INSTRUÇÕES4

15525/04/2017

Instrução Q1 Q2 Q3 Q4

Se houver skip, o PC é escrito nesta etapa.

Q1 Q2 Q3 Q4

BTFSC Decode Lê o file TEST Nada

BTFSS Decode Lê o file TEST Nada

INCFSZ Decode Lê o file INC/TEST Grava d

DECFSZ Decode Lê o file DEC/TEST Grava d

• Provavelmente o PCH e o

PCL são alterados em Q3

e em Q4 do segundo TCY.

Ciclo de relógio e de instrução

CONJUNTO DE INSTRUÇÕES4

15625/04/2017

Instrução Q1 Q2 Q3 Q4

PC é escrito nesta etapa.

Q1 Q2 Q3 Q4

CALL Decode Lê o k Nada Nada

GOTO Decode Lê o k Nada Nada

• Provavelmente, o push do CALL é realizado nos

Q1 e Q2 do segundo TCY (visto mais adiante).

• Provavelmente, o PCH e o PCL são gravados nos

Q3 e Q4 do segundo TCY.

• Como k supera 8 bits, provavelmente o PC<10:8>

é lido no Q1, junto com os bits 11 a 13 (suposição).

1 sel k (literal)

13 12 10 0

0

11

Q2 8-bit dataQ1 6-bit decode

Ciclo de relógio e de instrução

Page 27: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

27

CONJUNTO DE INSTRUÇÕES4

15725/04/2017

Instrução Q1 Q2 Q3 Q4

PC é escrito nesta etapa.

Q1 Q2 Q3 Q4

RETURN Decode Nada Nada Nada

RETLW Decode Lê o literal Nada Grava W

RETFIE Decode Nada Nada GIE = 0

• Uma hipótese é a de que o PCH e oPCL sejam gravados nos Q3 e Q4 do

segundo TCY.

• Outra hipótese é a de o 13-bit program

address seja resgatado do stack em Q4

por meio do 13-bit address bus.

Ciclo de relógio e de instrução

CONJUNTO DE INSTRUÇÕES4

15825/04/2017

• Apenas dois ciclos de relógio são

necessários são usados na gravação do

PC nas instruções 2TCY.

• O uso de oito ciclos se deve à

manutenção da sincronia, a preservação

do ciclo de instruções.

• Existe a possibilidade de que dois ciclos

sejam gastos no push e no pop na pinha,

porém, por não serem efetuados pela

ULA, esses eventos podem ocorrer

simultaneamente a outras ações da ULA.

Ciclo de relógio e de instrução

CONJUNTO DE INSTRUÇÕES4

15925/04/2017

• No caso das instruções condicionais,

existe a possibilidade de que o skip

seja sempre realizado.

• Condição satisfeita: PC = PC+2.

• Condição nãosatisfeita: PC = PC+1.

• Nos desvios incondicionais, não há

esclarecimentos, no data sheet, sobre o

que é executado em Q3.

Ciclo de relógio e de instrução

CONJUNTO DE INSTRUÇÕES4

16025/04/2017

Padrões de estrutura de opcode

d0 0

13 12 11 10 9 8 7 6 5 4 3 2 1 0

seleção file address

0 0 seleção

13 12 11 10 9 8 7 6 5 4 3 2 1 0

file address

1 1

13 12 11 10 9 8 7 6 5 4 3 2 1 0

seleção literal

0 0 0 0 0 0 0

13 12 11 10 9 8 7 6 5 4 3 2 1 0

seleção

1 0

13 12 11 10 9 8 7 6 5 4 3 2 1 0

program addresssel.

10

13 12 11 10 6 5 4 3 2 1 09 8 7

sel. bit addr. file address

Q2 8-bit dataQ1 6-bit decode

BITS DE CONFIGURAÇÃO5

16125/04/2017

BITS DE CONFIGURAÇÃO

BITS DE CONFIGURAÇÃO5

16225/04/2017

• Configuration Bits

• Selecionam as configurações da PIC®.

• Palavra de configuração (configuration word): 14 bits.

• Programação em lógica negativa.

• Bit não programado (ativado): 0

• Bit programado (desativado): 1

• A palavra de configuração é gravada na flash.

• Endereço: 2007h.

• Esta posição não pertence à program memory (até 1FFFh).

• Esta posição somente pode ser acessada na programação.

Definição

Page 28: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

28

BITS DE CONFIGURAÇÃO5

16325/04/2017

Formação da palavra

• A configuração padrão é todos os bits desabilitados.

• 11 1111 1111 1111h

• Essa configuração é gravada ao realizar o full erase.

BITS DE CONFIGURAÇÃO5

16425/04/2017

Campos

1.FOSC Oscillator Selection bits.

2.WDTE Watchdog Timer Enable bit.

3.PWRTE Power-up Timer Enable bit.

4.CP FLASH Program Memory Code Protection bits.

5.BOREN Brown-out Reset Enable bit.

6.LVP Low Voltage In-Circuit Serial Programming Enable bits.

7.CPD Data EE Memory Code Protection bit.

8.WRT FLASH Program Memory Write Enable bit.

BITS DE CONFIGURAÇÃO5

16525/04/2017

Configuração da proteção da FLASH

• Campo: CP

• FLASH Program Memory Code Protection bits.

• Bits de proteção da FLASH.

• Bits 13, 12, 5, 4.

• Mnemônicos: CP1 (13 e 5) e CP0 (12 e 4) (Code Protection).

• Para que haja proteção os bits de mesmo nome devem ser

iguais.

CP1 CP0 Proteção Palavras Explicação1 1 Sem 0 Nada1 0 1F00h a 1FFFh 256 PCH = 11111b

0 1 1000h a 1FFFh 4k 2ª metade0 0 0000h a 1FFFh 8k Tudo

BITS DE CONFIGURAÇÃO5

16625/04/2017

Configuração da proteção da FLASH

• As opções 11 (nada) e 00 (tudo) são

válidas para toda a família mid-range.

• As opções 10 e 11 dependem do modelo,

pois o tamanho da program memory

pode variar, sendo 8kwords na

PIC16F877.

CP1 CP0 Palavras Explicação1 1 0 Nada0 0 8k Tudo

BITS DE CONFIGURAÇÃO5

16725/04/2017

Configuração da proteção da FLASH

• A proteção serve para que o programa esteja imune a

cópias não autorizadas.

• O segredo do programa criado pelo fornecedor do

produto está protegido.

• A única possibilidade para alteração do programa é por

meio da reiniciação de todas as memórias do CHIP, o

que, também, impede a cópia do programa.

• A limpeza total do chip (full-erase) reinicia os bits de

proteção, os mesmos precisam ser regravados.

• Foram descobertas formas de burlar esta proteção em

alguns modelos mais antigos de PIC®, não há garantias

plenas de que o programa esteja totalmente protegido.

BITS DE CONFIGURAÇÃO5

16825/04/2017

Configuração da proteção da FLASH

• A possibilidade de proteção parcial é útil

quando se deseja que parte do programa

seja configurável pelo usuário.

• Outra possibilidade é a comercialização de

uma sub-rotina, que fica na parte protegida,

permitindo ao usuário criar seu próprio

programa usando a sub-rotina adquirida.

Page 29: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

29

BITS DE CONFIGURAÇÃO5

16925/04/2017

• Permite proteção contra leitura da EEPROM (data memory).

• A proteção serve para que os dados estejam imunes a cópias.

• O segredo da informação está protegido.

• A alteração dos dados na EEPROM protegida pode ser feita

por meio da reiniciação de todas as memórias do chip.

• Outra forma é apagando toda a EEPROM.

• A limpeza total do chip (full-erase) reinicia os bits de proteção.

Configuração da proteção da EEPROM

BITS DE CONFIGURAÇÃO5

17025/04/2017

• Campo: CPD.

• Também chamado de PD em outros modelos.

• Data EE Memory Code Protection.

• Bit 8.

• 1: EEPROM sem proteção.

• 0: EEPROM com proteção.

• Independente de CP1 e CP0.

• Este assunto será apresentado mais adiante.

Configuração da proteção da EEPROM

BITS DE CONFIGURAÇÃO5

17125/04/2017

Oscilador

• Bits 1 e 0.

• Mnemônicos: FOSC1 e FOSC0.

• Outros modelos também possuem o bit FOSC2.

• Este assunto será apresentado mais adiante.

FOSC1 FOSC0 Oscilador Significado1 1 RC Resistor / Capacitor1 0 HS High Speed Crystal / Resonator0 1 XT Crystal / Resonator0 0 LP Low Power Crystal

BITS DE CONFIGURAÇÃO5

17225/04/2017

• In-Circuit Serial Programming.

• O ICSP™ permite a gravação do chip

após a montagem do produto.

• O ICSP™ dispensa o uso de um

módulo gravador de PIC®.

• Isto permite a atualização de firmware.

• O ICSP™ é o ideal na produção do

software, junto ao protótipo.

ICSP™

BITS DE CONFIGURAÇÃO5

17325/04/2017

Módulo gravador de PIC®

• É o contrário de ICSP™, a PIC® é gravada fora

do ambiente de operação.

• Ideal quando já se sabe que o programa

funciona e não se deseja realizar alterações.

• Ideal quando se deseja gravar várias unidades.

• Há opções para gravação em lotes.

BITS DE CONFIGURAÇÃO5

17425/04/2017

• Campo: WRT.

• FLASH Program Memory Write Enable.

• Bit 9.

• 1: Desabilitado – Impede o uso do ICSP™.

• 0: Habilitado – Permiteo uso do ICSP™.

• Não impede a leitura das memórias internas.

ICSP™

Page 30: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

30

BITS DE CONFIGURAÇÃO5

17525/04/2017

• Campo: LVP.

• Low-Voltage Programming.

• Um ICSP™ que não requer uma tensão de alimentação

mais elevada do que a usada na execução dos programas.

• Bit 7.

• 0: Desabilitado: Exige tensão mais alta na programação.

• 1: Habilitado: Dispensa tensão mais alta na programação.

ICSP™

BITS DE CONFIGURAÇÃO5

17625/04/2017

• A desabilitação do LVP dá mais segurança à

PIC®, pois jamais recebe tensão mais

elevada em operação normal.

• A desabilitação do LVP requer hardware

mais sofisticado quando se usa ICSP™, pois

requer tensão superior para gravar o chip.

• A habilitação do LVP aumenta a chance da

PIC® ser gravada acidentalmente.

• A habilitação do LVP simplifica o hardware

quando se usa ICSP™, pois a tensão de

alimentação é sempre a mesma.

ICSP™

BITS DE CONFIGURAÇÃO5

17725/04/2017

DEBUG

• Campo: DEBUG.

• In-Circuit Debugger Mode.

• Permite a depuração pelo MPLAB®.

• Bit 11.

• 1: Desabilitado.

• 0: Habilitado.

BITS DE CONFIGURAÇÃO5

17825/04/2017

• Quando habilitado, usa os pinos:

• PGC – Programming Clock – Pino 39 DIP.

• PGD – Programming Data – Pino 40 DIP.

• Usado com o MPLAB® ICD.

DEBUG

BITS DE CONFIGURAÇÃO5

17925/04/2017

Outros bits

• 6: BODEN – Brown-out Reset Enable bit.

• 3: /PWRTE – Power-up Timer Enable bit.

• 2: WDTE – Watchdog Timer Enable bit.

• Serão apresentados mais adiante.

BITS DE CONFIGURAÇÃO5

18025/04/2017

Módulo grav. de PIC® com ICSP™/PICkit2™

http://www.futurlec.com/Pictures/PIC_Programmer_600.jpg

Page 31: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

31

BITS DE CONFIGURAÇÃO5

18125/04/2017

http://img1.mlstatic.com/gravador-pic-usb-pickit2-zif-prograd-profissional-mplab-nfe_MLB-O-2926282907_072012.jpg

Módulo grav. de PIC® com ICSP™/PICkit2™

BITS DE CONFIGURAÇÃO5

18225/04/2017

Módulo gravador de MCU Atmel

http://www.programmerkit.com/wp-content/uploads/2011/10/programmer.jpg

BITS DE CONFIGURAÇÃO5

18325/04/2017

Módulo gravador de memórias

http://images.batronix.com/products/programmer/BX/USBChipProgrammer-xl.jpg

LITERATURA6

18425/04/2017

LITERATURA

LITERATURA6

18525/04/2017

MPLAB

LITERATURA6

18625/04/2017

• MPASM MPLINK MPLIB User's Guide.

• MPASM user's guide with MPLINK and MPLIB.

• MPLAB IDE User's Guide.

• PIC16F87X Data Sheet.

• PICmicro Mid-Range MCU Family Reference Manual.

Microchip©

Page 32: 1 DEFINIÇÃO 1 DEFINIÇÃO - ufsj.edu.br - IDE.pdf · • Os montadores e compiladores atuais possuem seus próprios editores de texto. • Os primeiros montadores e compiladores

25/04/2017

32

LITERATURA6

18725/04/2017

• PEREIRA, F. Microcontroladores PIC, Técnicas Avançadas.

2a Edição. Editora Érica, 2002.

• PEREIRA, F. Microcontroladores PIC – Programação em C.

7a Edição. Editora Érica, 2010.

Outros