6
Estrutura de Programação 8051 Exercícios 1 Lista de Exercícios 5 1- Desenvolva um programa para ser executado no EdSim51 que mostre um valor de 0 a 9 no quarto display de 7 segmentos. Esse valor será incrementado no instante que a entrada INT0 for para zero e será decrementado no instante que a entrada INT1 for para zero. Caso ambas as entradas sejam acionadas simultaneamente o decremento deve ter prioridade sobre o incremento. ORG 0000H LJMP INICIO ORG 0003H INC R0 CJNE R0, #0AH, CERTO0 ACALL ZERO LJMP SAI0 CERTO0: ACALL TESTE SAI0: NOP RETI ORG 0013H DEC R0 CJNE R0, #0FFH, CERTO1 ACALL NOVE LJMP SAI1 CERTO1: ACALL TESTE SAI1: NOP RETI ORG 0040H INICIO: ;CLR P3.3 ;CLR P3.4 MOV IE,#85H SETB PX1 SETB IT0 SETB IT1 ACALL ZERO TRAVA: LJMP TRAVA TESTE: Z: CJNE R0, #00H, I ACALL ZERO I: CJNE R0, #01H, II

Listas 8051

Embed Size (px)

Citation preview

Page 1: Listas 8051

Estrutura de Programação 8051 – Exercícios 1

Lista de Exercícios 5

1- Desenvolva um programa para ser executado no EdSim51 que mostre um

valor de 0 a 9 no quarto display de 7 segmentos. Esse valor será incrementado no instante que a entrada INT0 for para zero e será decrementado no instante que a entrada INT1 for para zero. Caso ambas as entradas sejam acionadas simultaneamente o decremento deve ter prioridade sobre o incremento.

ORG 0000H LJMP INICIO ORG 0003H INC R0 CJNE R0, #0AH, CERTO0 ACALL ZERO LJMP SAI0 CERTO0: ACALL TESTE SAI0: NOP RETI ORG 0013H DEC R0 CJNE R0, #0FFH, CERTO1 ACALL NOVE LJMP SAI1 CERTO1: ACALL TESTE SAI1: NOP RETI ORG 0040H INICIO: ;CLR P3.3 ;CLR P3.4 MOV IE,#85H SETB PX1 SETB IT0 SETB IT1 ACALL ZERO TRAVA: LJMP TRAVA TESTE: Z: CJNE R0, #00H, I ACALL ZERO I: CJNE R0, #01H, II

Page 2: Listas 8051

Estrutura de Programação 8051 – Exercícios 2

ACALL UM II: CJNE R0, #02H, III ACALL DOIS III:CJNE R0, #03H, IV ACALL TRES IV: CJNE R0, #04H, V ACALL QUATRO V: CJNE R0, #05H, VI ACALL CINCO VI: CJNE R0, #06H, VII ACALL SEIS VII: CJNE R0, #07H, VIII ACALL SETE VIII: CJNE R0, #08H, IX ACALL OITO LJMP FIM IX: CJNE R0, #09H, FIM ACALL NOVE FIM: NOP RET ZERO: MOV P1, #11000000B MOV R0, #00H RET UM: MOV P1, #11111001B MOV R0, #01H RET DOIS: MOV P1, #10100100B MOV R0, #02H RET TRES: MOV P1, #10110000B MOV R0, #03H RET QUATRO: MOV P1, #10011001B MOV R0, #04H RET CINCO: MOV P1, #10010010B MOV R0, #05H

Page 3: Listas 8051

Estrutura de Programação 8051 – Exercícios 3

RET SEIS: MOV P1, #10000010B MOV R0, #06H RET SETE: MOV P1, #11111000B MOV R0, #07H RET OITO: MOV P1, #10000000B MOV R0, #08H RET NOVE: MOV P1, #10011000B MOV R0, #09H RET 2- Desenvolva um programa que leia o valor obtido através do CAD do

EdSim51. O valor lido devera ser armazenado no registrador R7. Utilizar a interrupção INT0 como termina de conversão do CAD no processo de interfaceamento com o conversor.

ORG 0000H LJMP INICIO ORG 0003H CLR P3.7 SETB P3.6 MOV R7,P2 RETI ORG 0040H INICIO: MOV IE,#81H CLR IT0 SETB P3.7 CLR P3.6 END

Page 4: Listas 8051

Estrutura de Programação 8051 – Exercícios 4

3 - Desenvolva um programa que faca a leitura do teclado do EdSim51. O valor pressionado no teclado devera ser exibido no primeiro display de 7 segmentos. Utilizar a interrupção INT1 como detecção de tecla pressionada. Assim que for pressionada alguma tecla, deve-se iniciar o processo de varredura das teclas para se descobrir qual tecla exatamente foi pressionada.

ORG 0000H LJMP INICIO ORG 0013H MOV R0, #00H MOV P0, #0FFH ACALL SCAN_LINHA RETI ORG 0040H INICIO: MOV IE,#84H SETB IT1 TRAVA: MOV P0, #0F0H LJMP TRAVA ;=====SUB ROTINAS DE VARREDURA=== SCAN_LINHA: CLR P0.0 ACALL SCAN_COLUNA INC R0 SETB P0.0 CLR P0.1 ACALL SCAN_COLUNA INC R0 SETB P0.1 CLR P0.2

ACALL SCAN_COLUNA INC R0 SETB P0.2 CLR P0.3 ACALL SCAN_COLUNA INC R0 SETB P0.3

Page 5: Listas 8051

Estrutura de Programação 8051 – Exercícios 5

SCAN_COLUNA: COL0: JB P0.4, COL1 CJNE R0, #00H, L10 ACALL SIMBOL L10: CJNE R0, #01H, L20 ACALL NOVE L20: CJNE R0, #02H, L30 ACALL SEIS L30: CJNE R0, #03H, SAI0 ACALL TRES SAI0: RET COL1: JB P0.5, COL2 CJNE R0, #00H, L11 ACALL ZERO L11: CJNE R0, #01H, L21 ACALL OITO L21: CJNE R0, #02H, L31 ACALL CINCO L31: CJNE R0, #03H, SAI1 ACALL DOIS SAI1: RET COL2: JB P0.6, SAI2 CJNE R0, #00H, L12 ACALL SIMBOL L12: CJNE R0, #01H, L22 ACALL SETE L22: CJNE R0, #02H, L32 ACALL QUATRO L32: CJNE R0, #03H, SAI2 ACALL UM SAI2: RET ;=====SUB ROTINAS DE NUMERAÇÃO=== SIMBOL: MOV P1, #89H RET ZERO: MOV P1, #11000000B RET UM: MOV P1, #11111001B RET

Page 6: Listas 8051

Estrutura de Programação 8051 – Exercícios 6

DOIS: MOV P1, #10100100B RET TRES: MOV P1, #10110000B RET QUATRO: MOV P1, #10011001B RET CINCO: MOV P1, #10010010B RET SEIS: MOV P1, #10000010B RET SETE: MOV P1, #11111000B RET OITO: MOV P1, #10000000B RET NOVE: MOV P1, #10011000B RET END