Z
zawani
Guest
I mean, kaip sukurti programavimo RF CONTROLLER naudojant IPS 16F84A.Aš SORCE AT kodas http://www.hobby-elec.org BET FUNTION Į grandinę.CAN SOME BODY man padėti REMONTAS PROGRAMAVIMAS BELOW
;************************************************* *******
;
; Remote Controller Transmitter
;
; Autorius: zawani
;************************************************* *******
list P = pic16f84a
įtraukti p16f84a.inc
__config _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
errorlevel -302; Pašalinkite banko perspėjimas;**************** Label Definition ********************
cblock h'0c "
tx_status; TX statusas sutaupyti plotą
tx_substatus; TX substatus Prisiminti plotas
modelį; Pattern sutaupyti plotą
endc
ptn1 kongresas b'11110000 "Planas 1 dalyje nurodytus duomenis
PTn2 kongresas b'00001111 "Planas 2 duomenų
ra4 kongresas Kaulo 4 "; RA4 Pozicija bitų
;**************** Programos Pradėti ***********************
org 0; Reset Vector
goto init
org 4; Interrupt Vector
Goto int
Pirminis ;**************** procesas *********************
init BSF STATUSAS, RP0; Pakeisti Bank1
movlw b'00000011 "; RA4: iš RA1, 0: būsena
movwf TRISA; Nustatyti TRISA reg
movlw b'00000101 "; RBPU / TOCS / PSA = 0, PS = 101
movwf OPTION_REG; Nustatyti OPTION_REG
bcf STATUS, RP0; Pakeisti Bank0
clrf PORTA; Stotelė bangų emisijos
clrf tx_status; Išvalyti TX statusas
clrf tx_substatus; Išvalyti TX substatus
movlw b'00000001 "; Nustatyti kaukė modelis
andwf PORTA, W; Pick up RA0
btfsc STATUS, Z; RA0 = 1 (SW1 ON)?
Goto in1; skaičiusPažymėkite šalia įėjimo
movlw ptn1; Nustatyti pattern1 duomenų
in0 movwf modelį; Prisiminti modelio duomenys
Goto tm; Peršokti į laikmatis nustatytas
in1 movlw b'00000010 "; Nustatyti kaukė modelis
andwf PORTA, W; Pick up RA1
btfsc STATUS, Z; RA1 = 1 (SW2 ON)?
goto init; skaičiusNelegali indėlis
movlw PTn2; Nustatyti pattern2 duomenų
Goto in0; Peršokti į modelio Prisiminti
tm movlw d'100 '; 256-10000us/64us = 100
movwf TMR0; Nustatyti 10msec į TMR0
movlw h'a0 "; GIE = 1, TOIE = 1
movwf INTCON; nutraukimas galima
goto $; Palauk pertraukos
;********* Pradžia Laikmatis nutraukimas procesas ***********
LC
BCF INTCON, T0IF; Išvalyti laikmatis LC vėliava
stchk0
movf tx_status, W; Skaityti TX statusas
btfss STATUS, Z; TX status = 0?
Goto stchk1; skaičiusKitas
;************ Preambulė duomenų Siųsti procesas **************
movlw d'7 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfsc STATUS, Z; Substatus = 7?
Goto stinc; Taip.Substatus 1
movlw d'8 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfsc STATUS, Z; Substatus = 8?
Goto st01; Taip.
movlw d'9 "; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfsc STATUS, Z; Substatus = 9?
Goto st02; Taip.
movlw b'00000001 "; Nustatyti kaukė modelis
andwf tx_substatus, W; Pick up LSB
btfss STATUS, Z; LSB = 0 (juoda)?
Goto st00, skaičius(ODD)
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st00 bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st01 bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st02 BSF Porta, ra4; Pradėti bangų emisijos
clrf tx_substatus; Išvalyti TX substatus
incf tx_status, F; Nustatyti TX status = 1
Goto int_end; Peršokti į laikmatis LC pabaigos
;************************************************* *******
stchk1
movlw d'1 "; Nustatyti patikrinti duomenų
subwf tx_status, W; TX būklė - patikrinti duomenų
btfss STATUS, Z; TX status = 1?
Goto stchk2; skaičiusKitas
;************ Kontrolės duomenų Siųsti procesas ***************
movf tx_substatus, W; Skaityti TX substatus
btfss STATUS, Z; Substatus = 0?
Goto st11, skaičiusKitas
movlw b'00000001 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto ST10; skaičiusDuomenų = 1
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
ST10 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st11 movlw d'1 "; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 1?
Goto ST12; skaičiusKitas
bcf PORTA, ra4; Stop bangų emisijos
Goto stinc; Peršokti į Substatus 1
ST12 movlw d'2 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 2?
Goto st13, skaičiusKitas
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st13 movlw d'3 "; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 3?
Goto ST15; skaičiusKitas
movlw b'00000010 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto st14, skaičiusDuomenų = 1
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st14 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
ST15 movlw d'4 "; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 4?
Goto st16, skaičiusKitas
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st16 movlw d'5 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 5?
Goto ST17; skaičiusKitas
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
ST17 movlw d'6 "; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 6?
Goto st19, skaičiusKitas
movlw b'00000100 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto st18, skaičiusDuomenų = 1
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st18 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st19 movlw d'7 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 7?
Goto st20, skaičiusKitas
bcf PORTA, ra4; Stop bangų emisijos
Goto stinc; Peršokti į Substatus 1
st20 movlw d'8 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 8?
Goto st21, skaičiusKitas
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st21 movlw d'9 "; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 9?
Goto st23, skaičiusKitas
movlw b'00001000 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto st22, skaičiusDuomenų = 1
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st22 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st23 movlw d'10 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 10?
Goto st24, skaičiusKitas
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st24 movlw d'11 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 11?
Goto st25, skaičiusKitas
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st25 movlw d'12 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 12?
Goto st27, skaičiusKitas
movlw b'00010000 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto st26, skaičiusDuomenų = 1
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st26 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st27 movlw d'13 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 13?
Goto st28, skaičiusKitas
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st28 movlw d'14 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 14?
Goto st29, skaičiusKitas
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st29 movlw d'15 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 15?
Goto st31, skaičiusKitas
movlw b'00100000 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto st30, skaičiusDuomenų = 1
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st30 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st31 movlw d'16 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 16?
Goto st32, skaičiusKitas
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st32 movlw d'17 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 17?
Goto st33, skaičiusKitas
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st33 movlw d'18 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 18?
Goto st35, skaičiusKitas
movlw b'01000000 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto st34, skaičiusDuomenų = 1
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st34 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st35 movlw d'19 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 19?
Goto st36, skaičiusKitas
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st36 movlw d'20 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 20?
Goto St37; skaičiusKitas
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
St37 movlw d'21 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 21?
Goto st39, skaičiusKitas
movlw b'10000000 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto st38, skaičiusDuomenų = 1
bcf PORTA, ra4; Stop bangų emisijos
Goto stinc; Peršokti į Substatus 1
st38 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st39 movlw d'22 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 22?
Goto st40, skaičiusKitas
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st40 BSF Porta, ra4; Pradėti bangų emisijos
clrf tx_substatus; Išvalyti TX substatus
incf tx_status, F; Nustatyti TX status = 2
Goto int_end; Peršokti į laikmatis LC pabaigos
;************** Pabaiga duomenų Siųsti procesas *****************
stchk2 movlw d'2 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 2?
Goto stinc; No.Jump į Substatus 1
bcf PORTA, ra4; Stotelė bangų emisijos
clrf tx_substatus; Išvalyti TX substatus
clrf tx_status; Išvalyti TX statusas
Goto int_end; Peršokti į laikmatis LC pabaigos
;*********** Substatus Taškinis procesas **************
stinc incf tx_substatus, F; Substatus 1
;******** Pabaiga Laikmatis nutraukimas procesas ***********
int_end movlw d'100 '; 256-10000us/64us = 100
movwf TMR0; Nustatyti 10msec į TMR0
retfie; pabaiga pertraukimo
;************************************************* *******
; Pabaiga Remote Controller Transmitter
;************************************************* *******
pabaiga;************************************************* *******
;
; Remote Controller Receiver
;
; Autorius: zawani Ichigo
;************************************************* *******
list P = pic16f84a
įtraukti p16f84a.inc
__config _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
errorlevel -302; Pašalinkite banko perspėjimas;**************** Label Definition ********************
cblock h'0c "
rx_status; RX statusas sutaupyti plotą
rx_substatus; RX substatus Prisiminti plotas
rx_edge; Input kraštas patikrinti vėliava
last_look; Input paskutinis ieškoti vėliava
code_ck; kodas patikrinti vėliava
cont_data, kontrolės duomenys
Relay; Relay kovos
w_save; W reg Prisiminti plotas
s_save; Statusas reg Prisiminti plotas
endc
ptn1 kongresas b'11110000 "Planas 1 dalyje nurodytus duomenis
PTn2 kongresas b'00001111 "Planas 2 duomenų
RA1 kongresas Kaulo 1 "; RA1 bitas pozicija
rb5 kongresas d'5 '; RB5 Pozicija bitų
rb7 kongresas d'7 '; RB7 Pozicija bitų
;**************** Programos Pradėti ***********************
org 0; Reset Vector
goto init
org 4; Interrupt Vector
Goto int
Pirminis ;****************** procesas *******************
init BSF STATUSAS, RP0; Pakeisti Bank1
movlw b'00011111 "; RA4-0: būsena
movwf TRISA; Nustatyti TRISA reg
movlw b'00000000 "; RB7-0: OUT būdas
movwf TRISB; Nustatyti TRISB reg
movlw b'00000101 "; RBPU / TOCS / PSA = 0, PS = 101
movwf OPTION_REG; Nustatyti OPTION_REG
bcf STATUS, RP0; Pakeisti Bank0
clrf PORTB; RL1, RL2 OFF
clrf rx_status; Išvalyti RX statusas
clrf rx_substatus; Išvalyti RX substatus
clrf rx_edge; Išvalyti kraštas patikrinti vėliava
incf last_look, F; Nustatyti Paskutinis Žiūrėti vėliava
clrf code_ck; Atviras kodas patikrinti vėliava
clrf cont_data; aiškūs kontrolės duomenys
clrf Relay; Išvalyti Relay kovos
movlw d'100 '; 256-10000us/64us = 100
movwf TMR0; Nustatyti 10msec į TMR0
movlw h'a0 "; GIE = 1, TOIE = 1
movwf INTCON; nutraukimas galima
;*********** Pradinis Input patikrinti proceso **************
edge_check
btfss Porta, RA1, įvesties signalas?
Goto check1; skaičiusSignaliniai OFF
btfsc last_look, 0; Paskutinis Žiūrėti vėliava off?
Goto edge_check; skaičiusĮvedimo nepasikeitė
BCF INTCON, GIE; nutraukimas išjungti
incf code_ck, F; Nustatyti kodas patikrinti vėliavą
incf last_look, F; Nustatyti Paskutinis Žiūrėti vėliava
movlw d'178 '; 256-5000us/64us = 178
movwf TMR0; Nustatyti 5msec į TMR0
BSF INTCON, GIE; nutraukimas galima
palaukti
btfss rx_edge, 0; Input kraštas patikrinti?
goto wait; skaičiusPalaukite pertraukos
clrf rx_edge; Išvalyti kraštas patikrinti vėliava
Goto edge_check; Peršokti į Įvesties kraštas patikrinti
check1
clrf last_look; Nustatyti Paskutinis Žiūrėti vėliava OFF
Goto edge_check; Peršokti į Įvesties kraštas patikrinti
;************ Laikmatis nutraukimas procesas **************
LC movwf w_save; Prisiminti W registrą
movf Statusas W; Skaityti Statusas reg
movwf s_save; Prisiminti Statusas reg
bcf STATUS, RP0; Pakeisti Bank0
BCF INTCON, T0IF; Išvalyti laikmatis LC vėliava
movf relės, W; Skaityti Relay kovos
btfsc STATUS, Z; counter = 0?
Goto stchk0; Taip
decfsz relės, F; Counter - 1 = 0?
Goto stchk0; Ne
clrf PORTB; Relay OFF
stchk0
movf code_ck, W; Skaityti kodas patikrinti vėliava
btfsc STATUS, Z; vėliavą?
Goto int_end; skaičiusPabaiga pertraukimo
movf rx_status, W; Skaityti RX statusas
btfss STATUS, Z; Status = 0?
Goto stchk1; skaičiusKitas
;*********** Preambulė duomenų patikrinimo procesą *************
movf rx_substatus, W; Skaityti RX substatus
btfss STATUS, Z; Substatus = 0?
Goto st00, skaičiusKitas
Goto st_on; Įvesties signalas?
st00 movlw d'1 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 1?
Goto st01, skaičius
Goto st_off; Įvesties signalas off?
st01 movlw d'2 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 2?
Goto st02, skaičius
Goto st_on; Įvesties signalas?
st02 movlw d'3 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 3?
Goto st03, skaičius
Goto st_off; Įvesties signalas off?
st03 movlw d'4 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 4?
Goto st04, skaičius
Goto st_on; Įvesties signalas?
st04 movlw d'5 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 5?
Goto st05, skaičius
Goto st_off; Įvesties signalas off?
st05 movlw d'6 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 6?
Goto st06, skaičius
Goto st_on; Įvesties signalas?
st06 movlw d'7 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 7?
Goto st07, skaičiusSubstatus = 8
Goto st_on; Įvesties signalas?
st07 btfsc Porta, RA1, įvesties signalas off?
Goto neteisėta; skaičiusPeršokti į nelegalios
clrf rx_substatus; RX substatus = 0
incf rx_status, F; RX status = 1
clrf cont_data; Išvalyti Count duomenų
Goto int_end; pabaiga pertraukimo
;************************************************* *******
stchk1
movlw d'1 "; Nustatyti patikrinti duomenų
subwf rx_status, W; RX būklė - patikrinti duomenų
btfss STATUS, Z; RX status = 1?
Goto stchk2; skaičiusKitas
;************ Kontrolės duomenų patikrinimo procesą **************
movf rx_substatus, W; Skaityti RX substatus
btfss STATUS, Z; Substatus = 0?
Goto ST10; skaičiusKitas
Goto st_on; Įvesties signalas?
ST10 movlw d'1 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 1?
Goto st11, skaičius
btfss Porta, RA1; B0 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 0; Nustatyti B0 = 1
Goto stinc; Peršokti į Substatus 1
st11 movlw d'2 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 2?
Goto ST12; skaičius
Goto st_off; Įvesties signalas off?
ST12 movlw d'3 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 3?
Goto st13, skaičius
Goto st_on; Įvesties signalas?
st13 movlw d'4 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 4?
Goto st14, skaičius
btfss Porta, RA1, B1 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 1; grupę B1 = 1
Goto stinc; Peršokti į Substatus 1
st14 movlw d'5 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus ≤ 5?
Goto ST15; skaičius
Goto st_off; signalas off?
ST15 movlw d'6 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 6?
Goto st16, skaičius
Goto st_on; Įvesties signalas?
st16 movlw d'7 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 7?
Goto ST17; skaičius
btfss Porta, RA1, B2 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 2; Nustatyti B2 = 1
Goto stinc; Peršokti į Substatus 1
ST17 movlw d'8 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 8?
Goto st18, skaičius
Goto st_off; signalas off?
st18 movlw d'9 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 9?
Goto st19, skaičius
Goto st_on; Įvesties signalas?
st19 movlw d'10 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 10?
Goto st20, skaičius
btfss Porta, RA1, B3 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 3; Nustatyti B3 = 1
Goto stinc; Peršokti į Substatus 1
st20 movlw d'11 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 11?
Goto st21, skaičius
Goto st_off; Įvesties signalas off?
st21 movlw d'12 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 12?
Goto st22, skaičius
Goto st_on; Įvesties signalas?
st22 movlw d'13 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 13?
Goto st23, skaičius
btfss Porta, RA1, B4 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 4; Nustatyti B4 = 1
Goto stinc; Peršokti į Substatus 1
st23 movlw Kaulo 14 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 14?
Goto st24, skaičius
Goto st_off; signalas off?
st24 movlw Kaulo 15 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 15?
Goto st25, skaičius
Goto st_on; Įvesties signalas?
st25 movlw Kaulo 16 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 16?
Goto st26, skaičius
btfss Porta, RA1, B5 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 5; Nustatyti B5 = 1
Goto stinc; Peršokti į Substatus 1
st26 movlw d'17 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 17?
Goto st27, skaičius
Goto st_off; signalas off?
st27 movlw d'18 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 18?
Goto st28, skaičius
Goto st_on; Įvesties signalas?
st28 movlw d'19 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 19?
Goto st29, skaičius
btfss Porta, RA1, B6 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 6; Nustatyti B6 = 1
Goto stinc; Peršokti į Substatus 1
st29 movlw Kaulo 20 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 20?
Goto st30, skaičius
Goto st_off; Įvesties signalas off?
st30 movlw d'21 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 21?
Goto st31, skaičius
Goto st_on; Įvesties signalas?
st31 movlw d'22 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 22?
Goto st32, skaičiusSubstatus = 23
btfss Porta, RA1, B7 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 7; Nustatyti B7 = 1
Goto stinc; Peršokti į Substatus 1
st32 btfsc Porta, RA1, signalas off?
Goto neteisėta; skaičiusPeršokti į nelegalios
clrf rx_substatus; RX substatus = 0
incf rx_status, F; RX status = 2
Goto int_end; pabaiga pertraukimo
st_on
btfss Porta, RA1, įvesties signalas?
Goto neteisėta; skaičiusPeršokti į nelegalios
Goto stinc; Peršokti į Substatus 1
st_off
btfsc Porta, RA1, įvesties signalas off?
Goto neteisėta; skaičiusPeršokti į nelegalios
Goto stinc; Peršokti į Substatus 1
;************** Pabaiga duomenų patikrinimo procesą ****************
stchk2 btfss Porta, RA1, įvesties signalas?
Goto neteisėta; skaičiusPeršokti į nelegalios
movlw d'2 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 2?
Goto stinc; Peršokti į Substatus 1
;**************** Duomenys Patikrinimo ******************
movf cont_data, W; Skaityti kontrolės duomenų
xorlw ptn1; keista Pattern1
btfss STATUS, Z; duomenys = Pattern1?
Goto dtchk0; skaičius
BCF PORTB, rb7; RL2 OFF
BSF PORTB, rb5; RL1 ON
Goto dtchk1; Peršokti į kovos rinkinys
dtchk0
movf cont_data, W; Skaityti kontrolės duomenų
xorlw PTn2; keista Pattern2
btfss STATUS, Z; duomenys = Pattern2?
Goto neteisėta; skaičiusPeršokti į nelegalios
BCF PORTB, rb5; RL1 OFF
BSF PORTB, rb7; RL2 ON
dtchk1 movlw d'50 '; Nustatyti 500msec Relay ON
movwf Relay; Prisiminti Relay kovos
;***************** Neteisėtas proceso ********************
neteisėtas incf rx_edge, F; kraštas patikrinti vėliavą
clrf rx_substatus; RX substatus = 0
clrf rx_status; RX status = 0
clrf code_ck; Atviras kodas patikrinti vėliava
Goto int_end; pabaiga pertraukimo
;*********** Substatus Increment proceso **************
stinc incf rx_substatus, F; Substatus 1
;******** Pabaiga Laikmatis nutraukimas procesas ***********
int_end movlw d'100 '; 256-10000us/64us = 100
movwf TMR0; Nustatyti 10msec į TMR0
movf s_save, W; Skaityti išgelbėti Statusas reg
movwf STATUS; Priminti Statusas reg
swapf w_save, F; Skaityti išgelbėti W registrą
swapf w_save, W; Priminti W registrą
retfie; pabaiga pertraukimo
;************************************************* *******
; Pabaiga Remote Controller Receiver
;************************************************* *******
pabaiga
Paskutinį kartą redagavo zawani On 16 Apr 2006 7:59; Redaguota 1 kartą iš viso
;************************************************* *******
;
; Remote Controller Transmitter
;
; Autorius: zawani
;************************************************* *******
list P = pic16f84a
įtraukti p16f84a.inc
__config _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
errorlevel -302; Pašalinkite banko perspėjimas;**************** Label Definition ********************
cblock h'0c "
tx_status; TX statusas sutaupyti plotą
tx_substatus; TX substatus Prisiminti plotas
modelį; Pattern sutaupyti plotą
endc
ptn1 kongresas b'11110000 "Planas 1 dalyje nurodytus duomenis
PTn2 kongresas b'00001111 "Planas 2 duomenų
ra4 kongresas Kaulo 4 "; RA4 Pozicija bitų
;**************** Programos Pradėti ***********************
org 0; Reset Vector
goto init
org 4; Interrupt Vector
Goto int
Pirminis ;**************** procesas *********************
init BSF STATUSAS, RP0; Pakeisti Bank1
movlw b'00000011 "; RA4: iš RA1, 0: būsena
movwf TRISA; Nustatyti TRISA reg
movlw b'00000101 "; RBPU / TOCS / PSA = 0, PS = 101
movwf OPTION_REG; Nustatyti OPTION_REG
bcf STATUS, RP0; Pakeisti Bank0
clrf PORTA; Stotelė bangų emisijos
clrf tx_status; Išvalyti TX statusas
clrf tx_substatus; Išvalyti TX substatus
movlw b'00000001 "; Nustatyti kaukė modelis
andwf PORTA, W; Pick up RA0
btfsc STATUS, Z; RA0 = 1 (SW1 ON)?
Goto in1; skaičiusPažymėkite šalia įėjimo
movlw ptn1; Nustatyti pattern1 duomenų
in0 movwf modelį; Prisiminti modelio duomenys
Goto tm; Peršokti į laikmatis nustatytas
in1 movlw b'00000010 "; Nustatyti kaukė modelis
andwf PORTA, W; Pick up RA1
btfsc STATUS, Z; RA1 = 1 (SW2 ON)?
goto init; skaičiusNelegali indėlis
movlw PTn2; Nustatyti pattern2 duomenų
Goto in0; Peršokti į modelio Prisiminti
tm movlw d'100 '; 256-10000us/64us = 100
movwf TMR0; Nustatyti 10msec į TMR0
movlw h'a0 "; GIE = 1, TOIE = 1
movwf INTCON; nutraukimas galima
goto $; Palauk pertraukos
;********* Pradžia Laikmatis nutraukimas procesas ***********
LC
BCF INTCON, T0IF; Išvalyti laikmatis LC vėliava
stchk0
movf tx_status, W; Skaityti TX statusas
btfss STATUS, Z; TX status = 0?
Goto stchk1; skaičiusKitas
;************ Preambulė duomenų Siųsti procesas **************
movlw d'7 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfsc STATUS, Z; Substatus = 7?
Goto stinc; Taip.Substatus 1
movlw d'8 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfsc STATUS, Z; Substatus = 8?
Goto st01; Taip.
movlw d'9 "; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfsc STATUS, Z; Substatus = 9?
Goto st02; Taip.
movlw b'00000001 "; Nustatyti kaukė modelis
andwf tx_substatus, W; Pick up LSB
btfss STATUS, Z; LSB = 0 (juoda)?
Goto st00, skaičius(ODD)
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st00 bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st01 bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st02 BSF Porta, ra4; Pradėti bangų emisijos
clrf tx_substatus; Išvalyti TX substatus
incf tx_status, F; Nustatyti TX status = 1
Goto int_end; Peršokti į laikmatis LC pabaigos
;************************************************* *******
stchk1
movlw d'1 "; Nustatyti patikrinti duomenų
subwf tx_status, W; TX būklė - patikrinti duomenų
btfss STATUS, Z; TX status = 1?
Goto stchk2; skaičiusKitas
;************ Kontrolės duomenų Siųsti procesas ***************
movf tx_substatus, W; Skaityti TX substatus
btfss STATUS, Z; Substatus = 0?
Goto st11, skaičiusKitas
movlw b'00000001 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto ST10; skaičiusDuomenų = 1
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
ST10 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st11 movlw d'1 "; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 1?
Goto ST12; skaičiusKitas
bcf PORTA, ra4; Stop bangų emisijos
Goto stinc; Peršokti į Substatus 1
ST12 movlw d'2 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 2?
Goto st13, skaičiusKitas
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st13 movlw d'3 "; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 3?
Goto ST15; skaičiusKitas
movlw b'00000010 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto st14, skaičiusDuomenų = 1
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st14 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
ST15 movlw d'4 "; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 4?
Goto st16, skaičiusKitas
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st16 movlw d'5 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 5?
Goto ST17; skaičiusKitas
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
ST17 movlw d'6 "; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 6?
Goto st19, skaičiusKitas
movlw b'00000100 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto st18, skaičiusDuomenų = 1
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st18 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st19 movlw d'7 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 7?
Goto st20, skaičiusKitas
bcf PORTA, ra4; Stop bangų emisijos
Goto stinc; Peršokti į Substatus 1
st20 movlw d'8 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 8?
Goto st21, skaičiusKitas
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st21 movlw d'9 "; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 9?
Goto st23, skaičiusKitas
movlw b'00001000 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto st22, skaičiusDuomenų = 1
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st22 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st23 movlw d'10 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 10?
Goto st24, skaičiusKitas
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st24 movlw d'11 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 11?
Goto st25, skaičiusKitas
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st25 movlw d'12 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 12?
Goto st27, skaičiusKitas
movlw b'00010000 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto st26, skaičiusDuomenų = 1
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st26 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st27 movlw d'13 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 13?
Goto st28, skaičiusKitas
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st28 movlw d'14 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 14?
Goto st29, skaičiusKitas
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st29 movlw d'15 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 15?
Goto st31, skaičiusKitas
movlw b'00100000 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto st30, skaičiusDuomenų = 1
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st30 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st31 movlw d'16 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 16?
Goto st32, skaičiusKitas
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st32 movlw d'17 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 17?
Goto st33, skaičiusKitas
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st33 movlw d'18 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 18?
Goto st35, skaičiusKitas
movlw b'01000000 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto st34, skaičiusDuomenų = 1
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st34 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st35 movlw d'19 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 19?
Goto st36, skaičiusKitas
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st36 movlw d'20 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 20?
Goto St37; skaičiusKitas
BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
St37 movlw d'21 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 21?
Goto st39, skaičiusKitas
movlw b'10000000 "; Nustatyti kaukė modelis
andwf modelis, W; Pick up duomenų
btfss STATUS, Z; duomenys = 0?
Goto st38, skaičiusDuomenų = 1
bcf PORTA, ra4; Stop bangų emisijos
Goto stinc; Peršokti į Substatus 1
st38 BSF Porta, ra4; Pradėti bangų emisijos
Goto stinc; Peršokti į Substatus 1
st39 movlw d'22 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 22?
Goto st40, skaičiusKitas
bcf PORTA, ra4; Stotelė bangų emisijos
Goto stinc; Peršokti į Substatus 1
st40 BSF Porta, ra4; Pradėti bangų emisijos
clrf tx_substatus; Išvalyti TX substatus
incf tx_status, F; Nustatyti TX status = 2
Goto int_end; Peršokti į laikmatis LC pabaigos
;************** Pabaiga duomenų Siųsti procesas *****************
stchk2 movlw d'2 '; Nustatyti patikrinti duomenų
subwf tx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 2?
Goto stinc; No.Jump į Substatus 1
bcf PORTA, ra4; Stotelė bangų emisijos
clrf tx_substatus; Išvalyti TX substatus
clrf tx_status; Išvalyti TX statusas
Goto int_end; Peršokti į laikmatis LC pabaigos
;*********** Substatus Taškinis procesas **************
stinc incf tx_substatus, F; Substatus 1
;******** Pabaiga Laikmatis nutraukimas procesas ***********
int_end movlw d'100 '; 256-10000us/64us = 100
movwf TMR0; Nustatyti 10msec į TMR0
retfie; pabaiga pertraukimo
;************************************************* *******
; Pabaiga Remote Controller Transmitter
;************************************************* *******
pabaiga;************************************************* *******
;
; Remote Controller Receiver
;
; Autorius: zawani Ichigo
;************************************************* *******
list P = pic16f84a
įtraukti p16f84a.inc
__config _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
errorlevel -302; Pašalinkite banko perspėjimas;**************** Label Definition ********************
cblock h'0c "
rx_status; RX statusas sutaupyti plotą
rx_substatus; RX substatus Prisiminti plotas
rx_edge; Input kraštas patikrinti vėliava
last_look; Input paskutinis ieškoti vėliava
code_ck; kodas patikrinti vėliava
cont_data, kontrolės duomenys
Relay; Relay kovos
w_save; W reg Prisiminti plotas
s_save; Statusas reg Prisiminti plotas
endc
ptn1 kongresas b'11110000 "Planas 1 dalyje nurodytus duomenis
PTn2 kongresas b'00001111 "Planas 2 duomenų
RA1 kongresas Kaulo 1 "; RA1 bitas pozicija
rb5 kongresas d'5 '; RB5 Pozicija bitų
rb7 kongresas d'7 '; RB7 Pozicija bitų
;**************** Programos Pradėti ***********************
org 0; Reset Vector
goto init
org 4; Interrupt Vector
Goto int
Pirminis ;****************** procesas *******************
init BSF STATUSAS, RP0; Pakeisti Bank1
movlw b'00011111 "; RA4-0: būsena
movwf TRISA; Nustatyti TRISA reg
movlw b'00000000 "; RB7-0: OUT būdas
movwf TRISB; Nustatyti TRISB reg
movlw b'00000101 "; RBPU / TOCS / PSA = 0, PS = 101
movwf OPTION_REG; Nustatyti OPTION_REG
bcf STATUS, RP0; Pakeisti Bank0
clrf PORTB; RL1, RL2 OFF
clrf rx_status; Išvalyti RX statusas
clrf rx_substatus; Išvalyti RX substatus
clrf rx_edge; Išvalyti kraštas patikrinti vėliava
incf last_look, F; Nustatyti Paskutinis Žiūrėti vėliava
clrf code_ck; Atviras kodas patikrinti vėliava
clrf cont_data; aiškūs kontrolės duomenys
clrf Relay; Išvalyti Relay kovos
movlw d'100 '; 256-10000us/64us = 100
movwf TMR0; Nustatyti 10msec į TMR0
movlw h'a0 "; GIE = 1, TOIE = 1
movwf INTCON; nutraukimas galima
;*********** Pradinis Input patikrinti proceso **************
edge_check
btfss Porta, RA1, įvesties signalas?
Goto check1; skaičiusSignaliniai OFF
btfsc last_look, 0; Paskutinis Žiūrėti vėliava off?
Goto edge_check; skaičiusĮvedimo nepasikeitė
BCF INTCON, GIE; nutraukimas išjungti
incf code_ck, F; Nustatyti kodas patikrinti vėliavą
incf last_look, F; Nustatyti Paskutinis Žiūrėti vėliava
movlw d'178 '; 256-5000us/64us = 178
movwf TMR0; Nustatyti 5msec į TMR0
BSF INTCON, GIE; nutraukimas galima
palaukti
btfss rx_edge, 0; Input kraštas patikrinti?
goto wait; skaičiusPalaukite pertraukos
clrf rx_edge; Išvalyti kraštas patikrinti vėliava
Goto edge_check; Peršokti į Įvesties kraštas patikrinti
check1
clrf last_look; Nustatyti Paskutinis Žiūrėti vėliava OFF
Goto edge_check; Peršokti į Įvesties kraštas patikrinti
;************ Laikmatis nutraukimas procesas **************
LC movwf w_save; Prisiminti W registrą
movf Statusas W; Skaityti Statusas reg
movwf s_save; Prisiminti Statusas reg
bcf STATUS, RP0; Pakeisti Bank0
BCF INTCON, T0IF; Išvalyti laikmatis LC vėliava
movf relės, W; Skaityti Relay kovos
btfsc STATUS, Z; counter = 0?
Goto stchk0; Taip
decfsz relės, F; Counter - 1 = 0?
Goto stchk0; Ne
clrf PORTB; Relay OFF
stchk0
movf code_ck, W; Skaityti kodas patikrinti vėliava
btfsc STATUS, Z; vėliavą?
Goto int_end; skaičiusPabaiga pertraukimo
movf rx_status, W; Skaityti RX statusas
btfss STATUS, Z; Status = 0?
Goto stchk1; skaičiusKitas
;*********** Preambulė duomenų patikrinimo procesą *************
movf rx_substatus, W; Skaityti RX substatus
btfss STATUS, Z; Substatus = 0?
Goto st00, skaičiusKitas
Goto st_on; Įvesties signalas?
st00 movlw d'1 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 1?
Goto st01, skaičius
Goto st_off; Įvesties signalas off?
st01 movlw d'2 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 2?
Goto st02, skaičius
Goto st_on; Įvesties signalas?
st02 movlw d'3 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 3?
Goto st03, skaičius
Goto st_off; Įvesties signalas off?
st03 movlw d'4 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 4?
Goto st04, skaičius
Goto st_on; Įvesties signalas?
st04 movlw d'5 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 5?
Goto st05, skaičius
Goto st_off; Įvesties signalas off?
st05 movlw d'6 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 6?
Goto st06, skaičius
Goto st_on; Įvesties signalas?
st06 movlw d'7 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 7?
Goto st07, skaičiusSubstatus = 8
Goto st_on; Įvesties signalas?
st07 btfsc Porta, RA1, įvesties signalas off?
Goto neteisėta; skaičiusPeršokti į nelegalios
clrf rx_substatus; RX substatus = 0
incf rx_status, F; RX status = 1
clrf cont_data; Išvalyti Count duomenų
Goto int_end; pabaiga pertraukimo
;************************************************* *******
stchk1
movlw d'1 "; Nustatyti patikrinti duomenų
subwf rx_status, W; RX būklė - patikrinti duomenų
btfss STATUS, Z; RX status = 1?
Goto stchk2; skaičiusKitas
;************ Kontrolės duomenų patikrinimo procesą **************
movf rx_substatus, W; Skaityti RX substatus
btfss STATUS, Z; Substatus = 0?
Goto ST10; skaičiusKitas
Goto st_on; Įvesties signalas?
ST10 movlw d'1 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 1?
Goto st11, skaičius
btfss Porta, RA1; B0 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 0; Nustatyti B0 = 1
Goto stinc; Peršokti į Substatus 1
st11 movlw d'2 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 2?
Goto ST12; skaičius
Goto st_off; Įvesties signalas off?
ST12 movlw d'3 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 3?
Goto st13, skaičius
Goto st_on; Įvesties signalas?
st13 movlw d'4 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 4?
Goto st14, skaičius
btfss Porta, RA1, B1 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 1; grupę B1 = 1
Goto stinc; Peršokti į Substatus 1
st14 movlw d'5 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus ≤ 5?
Goto ST15; skaičius
Goto st_off; signalas off?
ST15 movlw d'6 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 6?
Goto st16, skaičius
Goto st_on; Įvesties signalas?
st16 movlw d'7 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 7?
Goto ST17; skaičius
btfss Porta, RA1, B2 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 2; Nustatyti B2 = 1
Goto stinc; Peršokti į Substatus 1
ST17 movlw d'8 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 8?
Goto st18, skaičius
Goto st_off; signalas off?
st18 movlw d'9 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 9?
Goto st19, skaičius
Goto st_on; Įvesties signalas?
st19 movlw d'10 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 10?
Goto st20, skaičius
btfss Porta, RA1, B3 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 3; Nustatyti B3 = 1
Goto stinc; Peršokti į Substatus 1
st20 movlw d'11 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 11?
Goto st21, skaičius
Goto st_off; Įvesties signalas off?
st21 movlw d'12 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 12?
Goto st22, skaičius
Goto st_on; Įvesties signalas?
st22 movlw d'13 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 13?
Goto st23, skaičius
btfss Porta, RA1, B4 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 4; Nustatyti B4 = 1
Goto stinc; Peršokti į Substatus 1
st23 movlw Kaulo 14 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 14?
Goto st24, skaičius
Goto st_off; signalas off?
st24 movlw Kaulo 15 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 15?
Goto st25, skaičius
Goto st_on; Įvesties signalas?
st25 movlw Kaulo 16 "; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 16?
Goto st26, skaičius
btfss Porta, RA1, B5 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 5; Nustatyti B5 = 1
Goto stinc; Peršokti į Substatus 1
st26 movlw d'17 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 17?
Goto st27, skaičius
Goto st_off; signalas off?
st27 movlw d'18 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 18?
Goto st28, skaičius
Goto st_on; Įvesties signalas?
st28 movlw d'19 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 19?
Goto st29, skaičius
btfss Porta, RA1, B6 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 6; Nustatyti B6 = 1
Goto stinc; Peršokti į Substatus 1
st29 movlw Kaulo 20 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 20?
Goto st30, skaičius
Goto st_off; Įvesties signalas off?
st30 movlw d'21 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 21?
Goto st31, skaičius
Goto st_on; Įvesties signalas?
st31 movlw d'22 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 22?
Goto st32, skaičiusSubstatus = 23
btfss Porta, RA1, B7 = 1?
Goto stinc; Peršokti į Substatus 1
BSF cont_data, 7; Nustatyti B7 = 1
Goto stinc; Peršokti į Substatus 1
st32 btfsc Porta, RA1, signalas off?
Goto neteisėta; skaičiusPeršokti į nelegalios
clrf rx_substatus; RX substatus = 0
incf rx_status, F; RX status = 2
Goto int_end; pabaiga pertraukimo
st_on
btfss Porta, RA1, įvesties signalas?
Goto neteisėta; skaičiusPeršokti į nelegalios
Goto stinc; Peršokti į Substatus 1
st_off
btfsc Porta, RA1, įvesties signalas off?
Goto neteisėta; skaičiusPeršokti į nelegalios
Goto stinc; Peršokti į Substatus 1
;************** Pabaiga duomenų patikrinimo procesą ****************
stchk2 btfss Porta, RA1, įvesties signalas?
Goto neteisėta; skaičiusPeršokti į nelegalios
movlw d'2 '; Nustatyti patikrinti duomenų
subwf rx_substatus, W; Substatus - patikrinti duomenų
btfss STATUS, Z; Substatus = 2?
Goto stinc; Peršokti į Substatus 1
;**************** Duomenys Patikrinimo ******************
movf cont_data, W; Skaityti kontrolės duomenų
xorlw ptn1; keista Pattern1
btfss STATUS, Z; duomenys = Pattern1?
Goto dtchk0; skaičius
BCF PORTB, rb7; RL2 OFF
BSF PORTB, rb5; RL1 ON
Goto dtchk1; Peršokti į kovos rinkinys
dtchk0
movf cont_data, W; Skaityti kontrolės duomenų
xorlw PTn2; keista Pattern2
btfss STATUS, Z; duomenys = Pattern2?
Goto neteisėta; skaičiusPeršokti į nelegalios
BCF PORTB, rb5; RL1 OFF
BSF PORTB, rb7; RL2 ON
dtchk1 movlw d'50 '; Nustatyti 500msec Relay ON
movwf Relay; Prisiminti Relay kovos
;***************** Neteisėtas proceso ********************
neteisėtas incf rx_edge, F; kraštas patikrinti vėliavą
clrf rx_substatus; RX substatus = 0
clrf rx_status; RX status = 0
clrf code_ck; Atviras kodas patikrinti vėliava
Goto int_end; pabaiga pertraukimo
;*********** Substatus Increment proceso **************
stinc incf rx_substatus, F; Substatus 1
;******** Pabaiga Laikmatis nutraukimas procesas ***********
int_end movlw d'100 '; 256-10000us/64us = 100
movwf TMR0; Nustatyti 10msec į TMR0
movf s_save, W; Skaityti išgelbėti Statusas reg
movwf STATUS; Priminti Statusas reg
swapf w_save, F; Skaityti išgelbėti W registrą
swapf w_save, W; Priminti W registrą
retfie; pabaiga pertraukimo
;************************************************* *******
; Pabaiga Remote Controller Receiver
;************************************************* *******
pabaiga
Paskutinį kartą redagavo zawani On 16 Apr 2006 7:59; Redaguota 1 kartą iš viso