Prog Exemplo Asm

download Prog Exemplo Asm

of 4

Transcript of Prog Exemplo Asm

  • 7/23/2019 Prog Exemplo Asm

    1/4

    Programao Daniel Corteletti Aula 3 Parte II - MPLAB Pgina 1/4

    Programas exemplo assembly

    Como executar o programa

    Tarefa prticaPrograme a estao PLCPic com os seguintes programas em assembly,identificando qual o efeito de cada programa abaixo relacionado.

    ;-------------------------------

    ; Programa 1 :

    ; AUTOR : DANIEL CORTELETTI; julho DE 2009; C.T. MECATRONICA SENAI

    ; ========================== cabecalho padrao para PLCPICLIST p=16F877

    #include "P16F877.INC" ;inclui biblioteca do PIC a ser usado

    inicio bcf STATUS, RP1 ;desliga bit STATUS,RP1.bsf STATUS, RP0 ;liga bit STATUS,RP0. escolhe bank1movlw 0xff ;carrega FFH (11111111) no acumulador

    movwf TRISD ;move acum.p/TRISD (PORTD como entrada)movlw 0x00 ;zera todo o acumulador (move zeros)movwf TRISC ;mov acum.p/TRISC, todo PORTC como sadamovwf TRISE ;mov acum.p/TRISE, todo PORTE como sadabcf STATUS, RP0 ;desliga bit STATUS,RP0 (volta bank0)

    ; =========================== parte principal

    comeco btfss PORTD,0 ;testa D0. Se ligado, pula prox linha

    goto DESLIG ;desvia para rtulo DESLIGbsf PORTE,2 ;liga E2 (buzzer)goto comeco ;desvia para rtulo comeco

    DESLIG bcf PORTE,2 ;desliga E2 (buzzer)

    goto comeco ;desvia para rotulo comeco

    END ;END

    1) Copie e cole este programa (entre as barras horizontais) no MPLAB.2) Salve-o com o nome PROG1.asm em uma pasta que voc tenha acesso.3) Gere o arquivo HEX (clicando em Project->QuickBuild)4) Transfira o programa, e veja o resultado. Este programa usa os pinos D0 (chave na

    estao CUSCOPIC) e E2 (BUZZER na estao PLCPIC).

    5) Tente mudar este programa, de forma que ele funcione com a chave D7 e com a sada(led) C0 da bancada PLCPIC.

  • 7/23/2019 Prog Exemplo Asm

    2/4

    Programao Daniel Corteletti Aula 3 Parte II - MPLAB Pgina 2/4

    ; Programa 2 :

    ; AUTOR : DANIEL CORTELETTI; JULHO DE 2009

    ; C.T. MECATRONICA SENAI

    LIST p=16F877#include "P16F877.INC" ;inclui biblioteca do PIC a ser usado

    VAR1 equ 0x20 ;define posio de memria 20HVAR2 equ 0x21 ;define posio de memria 21HVAR3 equ 0x22 ;define posio de memria 22HCONT equ 0x23 ;define posio de memria 23H

    org 0goto inicio ;desvia execuo para rtulo INICIO

    inicio bcf STATUS, RP1 ;desliga bit STATUS,RP1.bsf STATUS, RP0 ;liga bit STATUS,RP0. escolhe bank1

    movlw 0xff ;carrega FFH (11111111) no acumuladormovwf TRISD ;move acum.p/TRISD (PORTD como entrada)

    movlw 0x00 ;zera todo o acumulador (move zeros)movwf TRISC ;mov acum.p/TRISC, todo PORTC como sadamovwf TRISE ;mov acum.p/TRISE, todo PORTE como sadabcf STATUS, RP0 ;desliga bit STATUS,RP0 (volta bank0)

    comeco movlw 0x01 ;rotulo comeco.Carrega acum. c/ 00000001movwf PORTC ;move do acum. para PORTCmovlw 0x07 ;move 07H para o acum.movwf CONT ;move do acum. para CONT

    volta1 call tempo ;chama rotina de temporlf PORTC,f ;rotaciona PORTD esquerdadecfsz CONT,f ;decrem.CONT e pula prox. Linha se zerargoto volta1 ;desvia para rtulo volta1

    movlw 0x07 ;carrega acum. Com 07Hmovwf CONT ;move do acum. para CONT

    volta2 call tempo ;chama rotina de temporrf PORTC,f ;rotaciona PORTC para direitadecfsz CONT,f ;decrem.CONT e pula prox. linha se zerargoto volta2 ;desvia para rtulo volta2goto comeco ;desvia para comeo

    tempo movlw 0x03 ;rotina de tempo. W

  • 7/23/2019 Prog Exemplo Asm

    3/4

    Programao Daniel Corteletti Aula 3 Parte II - MPLAB Pgina 3/4

    ; Programa 3 :

    ; AUTOR : DANIEL CORTELETTI; JULHO DE 2009

    ; C.T. MECATRONICA SENAILIST p=16F877 ; pic usado

    #include "P16F877.INC" ; inclui a biblioteca do MCu utilizadoVAR1 equ 0x20 ;define posio de memria 20HVAR2 equ 0x21 ;define posio de memria 21HVAR3 equ 0x22 ;define posio de memria 22H

    org 0 ;define endereo de origem na ROMgoto inicio ;desvia execuo para rtulo INICIO

    ;; =========================== rotina de tempotempo movlw 0x03 ;rotina de tempo. W

  • 7/23/2019 Prog Exemplo Asm

    4/4

    Programao Daniel Corteletti Aula 3 Parte II - MPLAB Pgina 4/4

    Associe os comentrios corretamente com as lacunas do programa anterior. Algunscomentrios sero repetidos vrias vezes.

    1) Chama rotina de tempo

    2) Carrega acumulador com 000000113) Carrega acumulador com 000011114) Carrega acumulador com 001111115) Carrega acumulador com 111111116) Move acumulador para PORTC7) Desvia para rtulo comeco8) Diretiva de FIM DE PROGRAMA9) Ativa pino E2 (buzzer)10) Desativa pino E2 (buzzer)

    2) Crie um sequencial de LEDs que siga o seguinte padro de sada no PORTC

    Para isso, use o programa apresentando anteriormente (programa 3) e utilize aconverso de binrio para hexadecimal para descobrir os valores a serem atribudos ao PORTC.