Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi! Cititi regulament postare forum inainte de a posta!
Lista Forumurilor Pe Tematici
Mihai Sprinceana | Inregistrare | Login

POZE MIHAI SPRINCEANA

Nu sunteti logat.
Nou pe simpatie:
andrum94 la Simpatie.ro
Femeie
24 ani
Galati
cauta Barbat
27 - 80 ani
Mihai Sprinceana / Assembler 8051 / Interfatarea cu semnalul unei telecomenzi a senzorului IR  
Autor
Mesaj Pagini: 1
mihaispr
Administrator

Inregistrat: acum 18 ani
Postari: 2142
;Interfatarea cu semnalul unei telecomenzi  a senzorului IR

$Mod51

    IR equ P1.0        ;portul la care e conectat senzorul IR
    adr equ R0        ;partea de adresa
    cmd equ R1        ;partea de comanda
    pos equ R2        ;bitul curent
    ExitFlag equ ACC.7    ;Flag de iesire din program

ORG 8000h
    jmp Main

ORG 8100h Main:   

mov A, #'A'   ;trimite caracterul A pe portul serial
call PutChar
    orl TMOD,#1        ;timer0 setat ca timer pe 16 biti

MainLoop:
    call Getcmd        ;adr=adress, cmd=command

    mov A,adr
    call PutChar        ;trimite adresa pe serial
    mov A,cmd
    call PutChar        ;trimite comanda pe serial

    call GetChar        ;citeste confirmarea
    jnb ExitFlag,MainLoop    ;Continue?
   
Getcmd:

    setb TR0        ;porneste timer
    mov pos,#0        ;primul bit
    mov A,#0        ;sterge acumulatorul

Loop:

    jb IR,$            ;asteapta un puls in semnal
    clr TF0
    mov TH0,#0FDh        ;incarca timer cu 625 microsecunde
    mov TL0,#0C0h
    jnb TF0,$        ;asteapta timerul
    clr TF0            ;sterge overflow flag

    jb IR,DataBit        ;Semnalul a revenit in 0? Daca da, e un bit de date
    jnb IR,$        ;altfel e antetul, asteapta revenirea in 0
    jmp Loop        ;urmatorul bit

DataBit:

    mov TH0,#0FDh        ;reincarca timer cu 625 microsecunde
    mov TL0,#0C0h
    jnb TF0,$        ;asteapta timerul
    clr TF0            ;sterge overflow flag

                ;daca semnalul e un nou puls, a fost un bit scurt (0)
                ;daca semnalul e inca jos, bitul e lung (1)

    mov C,IR        ;Carry=IR (0 daca semnalul e un puls)
    rl A            ;A=A<<1
    addc A,#0        ;A=A+C   
   
    inc pos            ;pos=pos+1
    cjne pos,#8,Next1    ;Avem primii 8 biti?

    mov adr,A        ;da, seteaza adresa
    mov A,#0        ;sterge acumulatorul
    jmp Loop        ;urmatorul bit

Next1:
    cjne pos,#16,Loop    ;avem urmatorii 8 biti?
   
    mov cmd,A        ;da, seteaza comanda
    mov A,#0        ;sterge acumulatorul
   
    clr TR0            ;stop timer
    ret            ;gata, cod receptionat



GetChar:            ;rutina de citire de pe serial
    jnb RI,$        ;asteapta receptia
    mov A,SBUF        ;copiaza octetul primit in acumulator
    clr RI            ;sterge flagul de receptie
    ret

PutChar:            ;rutina de scriere pe serial
    mov SBUF,A        ;copiaza octetul din acumulator in buffer
    jnb TI,$        ;asteapta transmisia
    clr TI            ;sterge flagul de transmisie
    ret

End                ;End program


Documentatie:


pus acum 17 ani
   
ady1011
Membru nou

Inregistrat: acum 16 ani
Postari: 7
sall all! am si eu o intrebare referitor la "proiectarea unei aplicatii 8051 pentru interfatarea cu semnalul unei telecomenzi IR(AFISAREA CODURILOR TASTELOR APASATE .)...A LUCRAT CAREVA ACEST PROIECT IN MPLAB ? MAI ARE DIN INTAMPLARE CODUL(PROGRAMUL)?MA POATE AJUTA? AM PROIECT LA DL. MARINESCU ...SI E CAM DIFICILA TREABA... MULTUMESC ANTICIPAT !..ASTEPT RASPUNS

pus acum 14 ani
   
Pagini: 1  

Mergi la