Analiza mojego programu w asemblerze na '51 do obsługi RC5 z kwarcem 12MHz

Prog. obslugi RC5





Poprzedni Następny
Wiadomość
Spis treści
From: "Karol" <klms_at_nospam_wp.pl>
Subject: Prog. obslugi RC5
Date: Fri, 12 Apr 2002 23:42:01 +0200


Napsialem prosty programik na '51 do obslugi RC5
Nie mam w tej chwili programatora wiec nie moge go
sprwdzic. Mam wiec do Was prosbe:
Czy ktos moglby to przetrawic czy wogole bedzie
to dzialc?
kwarc 12Mhz
odbiornik do INPUT


dzieki za pomoc
pozdrawiam
Karol

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


MOV L1,#7
MOV L1,#7



RC5: ;czekaj na pojawienie sie
JB INPUT,RC5 ;sygnalu
;----------------------------------------------------
CLR A ;sygnal z odbiornika
PP1: ;mierzy dlugosc drugiego
INC A ;polbitu pierwszego bitu
NOP
NOP
NOP
NOP
JZ RC5 ;jesli dl. wieksza od jakiegos
;czasu to wracaj na poczatek
JNB INPUT,PP1
MOV BL,ACC ;w BL zliczona dlugosc stanu
; "L"
;------------------------------------------------------
CLR A ;to samo co poprzednio tylko
PP2: ;dla pierwszego polbitu drugiego
INC A ;bitu (stan "H")
NOP
NOP
NOP
NOP
JZ RC5
JB INPUT,PP2
MOV BH,ACC ;w BH zliczona dlugosc stanu "H"
;------------------------------------------------------
MOV BUF,#0 ;czysci bufor
;------------------------------------------------------
MOV B,#2D ;czekaj teraz polowe czasu
MOV ACC,BL ;trwania polbitu
DIV AB ;(drugi polbit drugiego bitu)
;w ACC 1/2BL
PP3:
DEC A
NOP
NOP
NOP
NOP
JZ PP4
AJMP PP3
;------------------------------------------------------
;teraz jestem w polowie drugiego polbitu, drugiego bitu
;tak mi sie przynajmniej zdaje:)
;od tej pory zliczam dlugosc trwania H i L (ok. 1,7ms)
;a na koncu probkuje linie
------------------------------------------------------
ZLICZAJ: ;zliczaj czas trwania "H"
MOV ACC,BH
PP5:
DEC A
NOP
NOP
NOP
NOP
JZ PP6
AJMP PP5
;------------------------
PP6: ;zliczaj czas trwania "L"
MOV ACC,BL
PP7:
DEC A
NOP
NOP
NOP
NOP
JZ PP8
AJMP PP7
;------------------------------------------------------
;probkowanie

PP8:
DJNZ L1,PP4 ;w L1 jest 7 wiec pominie
MOV L1,#1D ;Toggle bit i 5 bitow adresu

DJNZ L2,PP ;w L2 jest 7 bedzie wiec bedzie
MOV L1,#7D ;probkowal 6 razy
MOV L2,#7D
LJMP RC5 ;w BUF mamy kod klawisza

PP:
MOV C,INPUT ;probkowanie
MOV ACC,BUF
RLC A
MOV BUF,ACC
LJMP ZLICZAJ
;--------------------------------------------------------