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 |
|
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 |
|