pratica2 - liga led com botão

4
UFPI - UNIVERSIDADE FEDERAL DO PIAUÍ CURSO DE ENGENHARIA ELÉTRICA LABORAT. DE MICROCONTROLADORES Prof. Msc. Francisco Everton Uchôa Reis PRÁTICA 2 Acende LED com botão e familiarização do conjunto de instruções em Assembly. Objetivos - Explorar a funcionalidade da porta B; - Familiarizar-se com o conjunto de instruções em assembly. Procedimentos A partir do exemplo dado na aula anterior, faça o que se pede: I. Modifique o programa do exemplo dado para acender um LED, da seguinte forma: enquanto o botão estiver pressionado, o LED apaga e quando liberado o LED acende. O LED deverá ser ligado no pino RB7, lembrando que o resistor no botão é de pull-down. II. Faça a mesma coisa, sendo que agora é utilizado o resistor de pull-up da porta B. III. A partir do item anterior, faça um programa para comutar o estado do LED, toda vez que o botão for pressionado, voltando a comutar o estado do LED, somente quando o botão for liberado e pressionado novamente. IV. Utilizando o depurador MPLAB SIM, execute o programa abaixo e preencha a tabela: Tabela 1 - Programa para análise. Conteúdo de: F W Flag Z Flag C BCF STATUS, RP1 BSF STATUS, RP0 BCF STATUS, RP0 CLRF 0x20 INCF 0x20 COMF 0x20, F COMF 0x20, W MOVLW D’9’ ADDWF 0x20, F ANDWF 0x20 DECF 0x20, F DECFSZ 0x20, F INCF 0x20, F INCFSZ 0x20, F IORWF 0x20, F IORWF 0x20, W MOVF 0x20, F

Upload: lyanderson-sousa

Post on 14-Sep-2015

217 views

Category:

Documents


3 download

DESCRIPTION

ok

TRANSCRIPT

  • UFPI - UNIVERSIDADE FEDERAL DO PIAU CURSO DE ENGENHARIA ELTRICA LABORAT. DE MICROCONTROLADORES Prof. Msc. Francisco Everton Ucha Reis

    PRTICA 2 Acende LED com boto e familiarizao do

    conjunto de instrues em Assembly.

    Objetivos

    - Explorar a funcionalidade da porta B;

    - Familiarizar-se com o conjunto de instrues em assembly.

    Procedimentos

    A partir do exemplo dado na aula anterior, faa o que se pede:

    I. Modifique o programa do exemplo dado para acender um LED, da seguinte forma: enquanto o boto estiver pressionado, o LED apaga e quando liberado o LED acende. O

    LED dever ser ligado no pino RB7, lembrando que o resistor no boto de pull-down.

    II. Faa a mesma coisa, sendo que agora utilizado o resistor de pull-up da porta B. III. A partir do item anterior, faa um programa para comutar o estado do LED, toda vez que o

    boto for pressionado, voltando a comutar o estado do LED, somente quando o boto for

    liberado e pressionado novamente.

    IV. Utilizando o depurador MPLAB SIM, execute o programa abaixo e preencha a tabela:

    Tabela 1 - Programa para anlise.

    Contedo de: F W Flag Z Flag C

    BCF STATUS, RP1

    BSF STATUS, RP0

    BCF STATUS, RP0

    CLRF 0x20

    INCF 0x20

    COMF 0x20, F

    COMF 0x20, W

    MOVLW D9

    ADDWF 0x20, F

    ANDWF 0x20

    DECF 0x20, F

    DECFSZ 0x20, F

    INCF 0x20, F

    INCFSZ 0x20, F

    IORWF 0x20, F

    IORWF 0x20, W

    MOVF 0x20, F

  • MOVF 0x20, W

    RLF 0x20, F

    RRF 0x20, F

    SUBWF 0x20, F

    SUBWF 0x20, W

    MOVLW HFE

    MOVWF 0x20

    SWAPF 0x20

    MOVLW D255

    XORWF 0x20, F

    ADDLW D1

    ADDLW D3

    ANDLW D253

    IORLW D255

    MOVLW H0F

    SUBLW D20

    XORLW D15

    BTFSC 0x20, 0

    BTFSS 0x20, 1

    CLRW

    CALL ROTINA

    GOTO DORMIR

    ROTINA NOP

    CLRWDT

    RETLW D10

    DORMIR SLEEP

    END

    Questionrio

    Execute o programa que se segue na tabela abaixo e responda:

    1 #include

    2

    3 #define constante D'2'

    4 #define file 0x20

    5

    6 movlw constante ; w = 2

    7 subwf file,w ; file - w -> w

    8

    9 ;testar se a operao de subtrao acima deu zero

    10 btfsc STATUS,Z

    11 goto igual ;igual

    12 diferente:

    13

    14 igual:

    15

  • 16 movlw constante

    17

    18 incf file

    19 decf file

    20

    21 incf file,1

    22 decf file,1

    23

    24 incf file, w

    25 decf file, w

    26

    27 bcf STATUS, RP0

    28 bcf STATUS, RP1

    29

    30 movf file, W

    31

    32

    33 #define a 0x24

    34 #define b 0x25

    35 #define c 0x26

    36

    37 movf b,W

    38 addwf a,W

    39 movwf c

    40

    41 clrf c

    42 incfsz c

    43 decfsz c

    44 nop

    45 zero: incf c

    46 incf c

    47

    48 decf c

    49

    50 ;comparar se x >=50

    51 #define x 0x27

    52 movf x,W

    53 sublw 50 ; W= 50 - W

    54 btfss STATUS, C ;

    55 goto menor

    56 goto maior_ig

    57

    58 menor:

    59 maior_ig:

    60 movlw .1

    61 movwf a

    62 rrf a

    63 rlf a

  • 64 swapf a

    65

    66 movf a,W

    67 andlw 0xef

    68 movwf a

    69

    70 bsf a,0

    71 bcf a,0

    72

    73 iorlw 0x80

    74 xorlw 0x81

    75 movwf a

    76

    77 movwf 0xA0

    78 nop

    79

    80 end

    1. Verifique se h diferena entre a instruo da linha 18 com a da linha 21. O que acontece ao

    trmino dessa instruo. Idem para a instruo da linha 19 com a da linha 22.

    2. O resultado das instrues nas linhas 24 e 25 o mesmo das instrues das linhas 21 e 22

    respectivamente? Qual a diferena?

    3. A partir da linha 33 a 39 responda. Qual operao realizada entre a varivel "a" e "b"? Onde

    o resultado da operao armazenado?

    4. Na linha 48, qual o valor de C. Explique por que esse valor.

    5. Qual o valor de "a" ao trmino da instruo da linha 64, da linha 68 e da linha 75.

    6. Explique porque o contedo do registrador 0xA0 no modificado. Dica: Veja as linhas 27 e

    28 do programa.

    Questo desafio

    Faa um programa para ler o estado do boto e acionar o LED no mesmo pino. O esquema do

    hardware necessrio apresentado na figura a seguir. Obs: Considere que a entrada no pino RB1

    do tipo TTL.