Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Intel 8051AH - Programowanie Dioda i Buzz

universalnick 24 Sty 2014 13:21 756 0
  • #1 24 Sty 2014 13:21
    universalnick
    Poziom 1  

    Witam,
    mam problem z prostym programem który będzie zapalał mi diode na 1sekunde a jak ona będzie gasła to będziemy słyszeć dźwięk. To zadanie z zajęć z programowania mikroprocesorów a kompletnie nie wiem jak to zrobić, bo pierwszy raz mam do czynienia z tym programem. Do zadania został załączony taki rysunek od wykładowcy: Intel 8051AH - Programowanie Dioda i Buzz



    Mam dwa programy na których mamy bazować:

    led equ p1.7 ;deklaracja portu led
    buzzer equ p1.5 ;deklaracja portu buzzera
    ljmp start
    org 100h ;poczatek obslugi po reset

    start:
    setb buzzer
    clr led
    blink:
    cpl led
    cpl buzzer
    ; inc p2
    call delay
    jmp blink

    delay:
    mov r7,#10 ;delay 1s
    dly2:
    mov r6,#200 ;200*500us=100ms
    dly1:
    mov r4,#167 ;167*3us=500us
    djnz r4,$
    djnz r6,dly1
    djnz r7,dly2
    ret
    end




    i drugi:

    LI_4K EQU 30h ;
    LI_20H EQU 31h ;
    LICZ EQU 32H
    ;
    LED0 EQU P1.7 ; red LED
    LED1 EQU P3.6 ; green LED
    BUZZ EQU P1.5 ;BUZZER
    ;

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

    ;

    LJMP START
    ORG 00bh
    LJMP INTT0 ; Przerwanie T0
    ;

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

    ;
    ORG 0100h ;Poczatek obslugi po RESET

    START:
    MOV SP,#10h ; ustaw stos
    MOV PSW,#0 ; reset register banks
    ;ponizej zerowac zmienne
    SETB LED0
    clr BUZZ
    ;

    ;--------PARAMETRY------------------------

    ;
    MOV TMOD,#22h ; T0 tryb 2 wew
    MOV TH0,#(256-250) ; preset 4 kHz
    MOV TL0,#(256-250) ; laduj do licznika /250
    MOV LI_4K,#200 ;
    MOV LI_20H,#20 ; => 1Hz
    ;
    SETB PT0 ; wyzszy priorytet zegarowego
    SETB ET0 ; odblokuj przerwanie od licznika T0
    SETB EA ; odblokuj niezablokowane przerwania
    SETB TR0 ; start counter T0
    ;

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

    ;
    MAIN:
    MOV A,LICZ
    JZ MAIN
    CPL LED0
    CPL BUZZ
    DEC LICZ
    LJMP MAIN

    ;

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

    ;
    INTT0:
    PUSH PSW
    PUSH ACC
    DJNZ LI_4K,T1_END ; 4kHz
    MOV LI_4K,#200 ; /200
    DJNZ LI_20H,T1_END ; 20Hz
    MOV LI_20H,#20 ; /20 = 1Hz
    ;CPL LED0
    INC LICZ
    T1_END:
    POP ACC
    POP PSW
    RETI
    ;

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

    ;
    END





    Czy ktoś mógłby podpowiedzieć, pomóc doradzić?
    Nie mam zielonego pojęcia jak zrobić to zadanie.
    Z góry dzięki za jakąkolwiek odpowiedź.

    0 0