Z
zawani
Guest
Je veux dire, comment développer une programmation pour le contrôleur de RF en utilisant 16F84A PIC.JE PRENDS SORCE CODE AT http://www.hobby-elec.org MAIS PAS funtion au circuit.CAN quelque corps Aide-moi à REPARATION DE PROGRAMMATION CI-DESSOUS
;************************************************* *******
;
; Emetteur télécommande
;
; Auteur: zawani
;************************************************* *******
p = liste PIC16F84A
comprennent p16f84a.inc
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
ERRORLEVEL -302; avertissement banque éliminerDéfinition Label ;**************** ********************
cblock h'0c '
tx_status; statut TX enregistrer zone
tx_substatus; sous-état TX enregistrer zone
modèle; Pattern enregistrer zone
ENDC
ptn1 equ b'11110000; 1 Les données Pattern
ptn2 equ b'00001111; 2 Les données de Pattern
RA4 equ d'4 '; position peu RA4
Démarrage du programme ;**************** ***********************
org 0; Vecteur Reset
goto init
org 4; vecteur d'interruption
int goto
;**************** Processus initial *********************
ÉTAT BSF init, RP0; Changer pour Bank1
movlw b'00000011; RA4: OUT RA1, 0: mode IN
movwf TRISA; Set TRISA reg
movlw b'00000101; RBPU tocs / PSA = 0, PS = 101
movwf OPTION_REG; Set OPTION_REG
Bcf STATUS, RP0; Changer pour Bank0
clrf PORTA; émission d'ondes Stop
tx_status clrf; Clear TX statut
tx_substatus clrf; Clear TX sous-état
movlw b'00000001; motif de masque Set
andwf PORTA, W, ramassez RA0
ÉTAT btfsc, Z; RA0 = 1 (SW1 ON)?
Aller in1; nVérifiez l 'entrée suivante
ptn1; Set motif1 données movlw
In0 modèle movwf; Sauvegarder les données modèle
tm goto; Aller à minuterie est réglée
IN1 movlw b'00000010; motif de masque Set
andwf PORTA, W, ramassez RA1
ÉTAT btfsc, Z; RA1 = 1 (SW2)?
init goto; nentrée illégale
ptn2; Set motif2 données movlw
Aller In0; Aller à motif mettre
movlw d'tm 100 '; 256-10000us/64us = 100
TMR0 movwf; 10msec Set pour TMR0
movlw h'a0; GIE = 1, TOIE = 1
movwf INTCON; Interruption permettre
goto $; Attendez interruption
;********* Entamer le processus d'interruption Timer ***********
int
bcf INTCON, T0IF; minuterie int flag Clair
stchk0
tx_status movf, W; Lire TX statut
ÉTAT btfss, Z, état TX = 0?
Aller stchk1; nProchain
;************ Préambule Envoyer des données Processus **************
movlw d'7 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfsc, Z; sous-état = 7?
Aller stinc; Oui.1 sous-état
movlw d'8 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfsc, Z; sous-état = 8?
Aller ST01; Oui.
movlw d'9 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfsc, Z; sous-état = 9?
Aller ST02; Oui.
movlw b'00000001; motif de masque Set
tx_substatus andwf, W, ramassez LSB
ÉTAT btfss, Z; LSB = 0 (Même)?
Aller st00; n(Impair)
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
st00 BCF, PORTA RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST01 BCF, PORTA RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST02 BSF, PORTA RA4; émission d'ondes de début
tx_substatus clrf; Clear TX sous-état
tx_status INCF, f; Set TX statut = 1
int_end goto; Aller à la fin int timer
;************************************************* *******
stchk1
movlw d'1 '; vérifier les données Set
tx_status subwf, TX vérifier l'état - de données; W
ÉTAT btfss, Z, état TX = 1?
Aller stchk2; nProchain
;************ Control Data envoyer processus ***************
tx_substatus movf, W; Lire TX sous-état
ÉTAT btfss, Z; sous-état = 0?
Aller ST11, No.Prochain
movlw b'00000001; motif de masque Set
modèle andwf, W, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller ST10, No.Les données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST10 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST11 movlw d'1 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données sous-état
ÉTAT btfss, Z; sous-état = 1?
Aller ST12, No.Prochain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST12 movlw d'2 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 2?
Aller ST13, No.Prochain
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST13 movlw d'3 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 3?
Aller ST15, No.Prochain
movlw b'00000010; motif de masque Set
modèle andwf, W, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller ST14, No.Les données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST14 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST15 movlw d'4 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 4?
Aller ST16, No.Prochain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST16 movlw d'5 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 5?
Aller ST17, No.Prochain
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST17 movlw d'6 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 6?
Aller ST19, No.Prochain
movlw b'00000100; motif de masque Set
modèle andwf, W, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller ST18; nLes données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST18 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST19 movlw d'7 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 7?
Aller ST20, No.Prochain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST20 movlw d'8 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 8?
Aller ST21, No.Prochain
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST21 movlw d'9 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 9?
Aller ST23, No.Prochain
movlw b'00001000; motif de masque Set
modèle andwf, W, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller ST22, No.Les données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST22 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST23 movlw d'10 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 10?
Aller ST24, No.Prochain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST24 movlw d'11 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 11?
Aller ST25, No.Prochain
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST25 movlw d'12 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 12?
Aller st27; nProchain
movlw b'00010000; motif de masque Set
modèle andwf, W, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller ST26, No.Les données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST26 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
st27 movlw d'13 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 13?
Aller st28; nProchain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
st28 movlw d'14 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 14?
Aller st29; nProchain
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
st29 movlw d'15 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 15?
Aller st31; nProchain
movlw b'00100000; motif de masque Set
modèle andwf, W, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller ST30, No.Les données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST30 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
st31 movlw d'16 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 16?
Aller ST32, No.Prochain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST32 movlw d'17 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 17?
Aller St33; nProchain
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
St33 movlw d'18 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 18?
Aller St35; nProchain
movlw b'01000000; motif de masque Set
modèle andwf, W, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller st34; nLes données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
st34 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
St35 movlw d'19 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 19?
Aller ST36, No.Prochain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST36 movlw d'20 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 20?
Aller ST37, No.Prochain
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST37 movlw d'21 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 21?
Aller st39; nProchain
movlw b'10000000; motif de masque Set
modèle andwf, w, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller st38; nLes données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
st38 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
st39 movlw d'22 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 22?
Aller ST40, No.Prochain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST40 BSF, PORTA RA4; émission d'ondes de début
tx_substatus clrf; Clear TX sous-état
tx_status INCF, f; Set TX statut = 2
int_end goto; Aller à la fin int timer
;************** Dernier envoi de données Processus *****************
stchk2 movlw d'2 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 2?
Aller stinc; No.Jump de sous-état 1
bcf PORTA, RA4; émission d'ondes Stop
tx_substatus clrf; Clear TX sous-état
tx_status clrf; Clear TX statut
int_end goto; Aller à la fin int timer
;*********** Processus de sous-état Increment **************
tx_substatus INCF stinc, f; sous-état 1
;******** Fin du processus Interruption Timer ***********
movlw d'int_end 100 '; 256-10000us/64us = 100
TMR0 movwf; 10msec Set pour TMR0
retfie; Fin d'interruption
;************************************************* *******
, Fin du transmetteur télécommande
;************************************************* *******
fin;************************************************* *******
;
; Récepteur télécommande
;
; Auteur: Ichigo zawani
;************************************************* *******
p = liste PIC16F84A
comprennent p16f84a.inc
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
ERRORLEVEL -302; avertissement banque éliminerDéfinition Label ;**************** ********************
cblock h'0c '
rx_status; statut RX enregistrer zone
rx_substatus; sous-état RX enregistrer zone
rx_edge; vérifier drapeau bord d'entrée
last_look; entrée du pavillon dernier regard
code_ck; indicateur de vérification de code
cont_data; Control Data
relais, relais ON contre
w_save; reg W enregistrer zone
s_save; reg État enregistrer zone
ENDC
ptn1 equ b'11110000; 1 Les données Pattern
ptn2 equ b'00001111; 2 Les données de Pattern
RA1 equ d'1 ', la position peu RA1
RB5 equ d'5 ', la position peu RB5
RB7 equ d'7 '; RB7 position de bit
Démarrage du programme ;**************** ***********************
org 0; Vecteur Reset
goto init
org 4; vecteur d'interruption
int goto
;****************** Processus initial *******************
ÉTAT BSF init, RP0; Changer pour Bank1
movlw b'00011111; RA4-0: En mode
movwf TRISA; Set TRISA reg
movlw b'00000000; RB7-0: mode OUT
movwf TRISB; Set TRISB reg
movlw b'00000101; RBPU tocs / PSA = 0, PS = 101
movwf OPTION_REG; Set OPTION_REG
Bcf STATUS, RP0; Changer pour Bank0
clrf PORTB; RL1, RL2 OFF
rx_status clrf; Clear RX statut
rx_substatus clrf; Clear RX sous-état
rx_edge clrf; Edge indicateur de vérification Clair
last_look INCF, f; Set Rechercher Dernière drapeau sur
code_ck clrf; Effacer l'indicateur de vérification du code
cont_data clrf; Clear Control Data
relais clrf; Clear relais ON contre
movlw d'100 '; 256-10000us/64us = 100
TMR0 movwf; 10msec Set pour TMR0
movlw h'a0; GIE = 1, TOIE = 1
movwf INTCON; Interruption permettre
;*********** Initial processus de vérification d'entrée **************
edge_check
btfss PORTA, RA1, signal d'entrée ON?
Aller Check1; nSignal OFF
last_look btfsc, 0; Rechercher Dernière OFF drapeau?
edge_check goto; nEntrée non changé
bcf INTCON, GIE; désactiver Interruption
code_ck INCF, f; Set indicateur de vérification du code sur
last_look INCF, f; Set Rechercher Dernière drapeau sur
movlw d'178 '; 256-5000us/64us = 178
TMR0 movwf; 5 ms Réglez TMR0
BSF INTCON, GIE; Interruption permettre
attente
btfss rx_edge, 0; vérifier bord d'entrée?
Aller à attendre; nAttendez interruption
rx_edge clrf; Effacer l'indicateur de vérification bord
Aller edge_check; entrée chèque à bord Aller
Check1
last_look clrf; Set Rechercher Dernière OFF drapeau
Aller edge_check; entrée chèque à bord Aller
;************ Processus Interruption Timer **************
w_save movwf int; Sauvegarder W registre
movf ETAT, W; Lire le statut reg
s_save movwf; Sauvegarder ÉTAT reg
Bcf STATUS, RP0; Changer pour Bank0
bcf INTCON, T0IF; minuterie int flag Clair
relais movf, W; Lire relais ON contre
ÉTAT btfsc, Z; Counter = 0?
Aller stchk0; Oui
relais decfsz, f; contre - 1 = 0?
Aller stchk0; n
clrf PORTB; relais OFF
stchk0
code_ck movf, W; code du drapeau à cocher Lecture
ÉTAT btfsc, Z; Drapeau ON?
Aller int_end; nFin de l'interruption
rx_status movf, W; Lire RX statut
ÉTAT btfss, Z; Status = 0?
Aller stchk1; nProchain
;*********** Préambule processus de vérification des données *************
rx_substatus movf, W; Lire RX sous-état
ÉTAT btfss, Z; sous-état = 0?
Aller st00; nProchain
st_on goto; signal d'entrée ON?
st00 movlw d'1 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 1?
Aller ST01, No.
ST_OFF goto; OFF du signal d'entrée?
ST01 movlw d'2 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 2?
Aller ST02, No.
st_on goto; signal d'entrée ON?
ST02 movlw d'3 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 3?
Aller ST03, No.
ST_OFF goto; OFF du signal d'entrée?
ST03 movlw d'4 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 4?
Aller ST04, No.
st_on goto; signal d'entrée ON?
ST04 movlw d'5 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 5?
Aller ST05, No.
ST_OFF goto; OFF du signal d'entrée?
ST05 movlw d'6 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 6?
Aller ST06, No.
st_on goto; signal d'entrée ON?
ST06 movlw d'7 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 7?
Aller ST07, No.Sous-état = 8
st_on goto; signal d'entrée ON?
ST07 btfsc PORTA, RA1; OFF du signal d'entrée?
Aller illégale; nAller à la pêche illégale
rx_substatus clrf; sous-état RX = 0
rx_status INCF, f; statut RX = 1
cont_data clrf; données de comptage Clair
Aller int_end; Fin d'interruption
;************************************************* *******
stchk1
movlw d'1 '; vérifier les données Set
rx_status subwf, RX vérifier l'état - de données; W
ÉTAT btfss, Z, état RX = 1?
Aller stchk2; nProchain
;************ Contrôle de données Contrôle du processus **************
rx_substatus movf, W; Lire RX sous-état
ÉTAT btfss, Z; sous-état = 0?
Aller ST10, No.Prochain
st_on goto; signal d'entrée ON?
ST10 movlw d'1 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 1?
Aller ST11, No.
btfss PORTA, RA1, B0 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 0; B0 Set = 1
Aller stinc; Aller à sous-état 1
ST11 movlw d'2 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 2?
Aller ST12, No.
ST_OFF goto; OFF du signal d'entrée?
ST12 movlw d'3 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 3?
Aller ST13, No.
st_on goto; signal d'entrée ON?
ST13 movlw d'4 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 4?
Aller ST14, No.
btfss PORTA, RA1, B1 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 1; Set B1 = 1
Aller stinc; Aller à sous-état 1
ST14 movlw d'5 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 5?
Aller ST15, No.
ST_OFF goto; OFF du signal d'entrée?
ST15 movlw d'6 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 6?
Aller ST16, No.
st_on goto; signal d'entrée ON?
ST16 movlw d'7 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 7?
Aller ST17, No.
btfss PORTA, RA1, B2 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 2; B2 Set = 1
Aller stinc; Aller à sous-état 1
ST17 movlw d'8 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 8?
Aller ST18; n
ST_OFF goto; OFF du signal d'entrée?
ST18 movlw d'9 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 9?
Aller ST19, No.
st_on goto; signal d'entrée ON?
ST19 movlw d'10 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 10?
Aller ST20, No.
btfss PORTA, RA1, B3 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 3; B3 Set = 1
Aller stinc; Aller à sous-état 1
ST20 movlw d'11 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 11?
Aller ST21, No.
ST_OFF goto; OFF du signal d'entrée?
ST21 movlw d'12 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 12?
Aller ST22, No.
st_on goto; signal d'entrée ON?
ST22 movlw d'13 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 13?
Aller ST23, No.
btfss PORTA, RA1, B4 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 4; Set B4 = 1
Aller stinc; Aller à sous-état 1
ST23 movlw d'14 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 14?
Aller ST24; n
ST_OFF goto; OFF du signal d'entrée?
ST24 movlw d'15 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 15?
Aller ST25, No.
st_on goto; signal d'entrée ON?
ST25 movlw d'16 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 16?
Aller ST26, No.
btfss PORTA, RA1, B5 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 5; Set B5 = 1
Aller stinc; Aller à sous-état 1
ST26 movlw d'17 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 17?
Aller st27; n
ST_OFF goto; OFF du signal d'entrée?
st27 movlw d'18 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 18?
Aller st28; n
st_on goto; signal d'entrée ON?
st28 movlw d'19 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 19?
Aller st29; n
btfss PORTA, RA1, B6 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 6; Set B6 = 1
Aller stinc; Aller à sous-état 1
st29 movlw d'20 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 20?
Aller ST30, No.
ST_OFF goto; OFF du signal d'entrée?
ST30 movlw d'21 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 21?
Aller st31; n
st_on goto; signal d'entrée ON?
st31 movlw d'22 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 22?
Aller ST32, No.Sous-état = 23
btfss PORTA, RA1, B7 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 7; Set B7 = 1
Aller stinc; Aller à sous-état 1
ST32 btfsc PORTA, RA1; OFF du signal d'entrée?
Aller illégale; nAller à la pêche illégale
rx_substatus clrf; sous-état RX = 0
rx_status INCF, f; statut RX = 2
Aller int_end; Fin d'interruption
st_on
btfss PORTA, RA1, signal d'entrée ON?
Aller illégale; nAller à la pêche illégale
Aller stinc; Aller à sous-état 1
ST_OFF
btfsc PORTA, RA1; OFF du signal d'entrée?
Aller illégale; nAller à la pêche illégale
Aller stinc; Aller à sous-état 1
;************** Vérifier les données sur Terminer le processus ****************
stchk2 btfss PORTA, RA1, signal d'entrée ON?
Aller illégale; nAller à la pêche illégale
movlw d'2 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 2?
Aller stinc; Aller à sous-état 1
;**************** Processus de vérification des données ******************
cont_data movf, W, les données de contrôle de lecture
xorlw ptn1; Vérifiez Pattern1
ÉTAT btfss, Z; données = Pattern1?
Aller dtchk0; n
PORTB BCF, RB7; RL2 OFF
PORTB bsf, RB5, RL1 ON
Aller dtchk1; Aller à l'encontre ON ensemble
dtchk0
cont_data movf, W, les données de contrôle de lecture
xorlw ptn2; Vérifiez Pattern2
ÉTAT btfss, Z; données = Pattern2?
Aller illégale; nAller à la pêche illégale
PORTB BCF, RB5, RL1 OFF
PORTB bsf, RB7; RL2 ON
dtchk1 movlw d'50 '; Set relais 500msec ON
relais movwf; Sauvegarder relais ON contre
;***************** Processus illégal ********************
rx_edge INCF illégale, f; indicateur de vérification Edge sur
rx_substatus clrf; sous-état RX = 0
rx_status clrf; statut RX = 0
code_ck clrf; Effacer l'indicateur de vérification du code
Aller int_end; Fin d'interruption
;*********** Processus de sous-état Increment **************
rx_substatus INCF stinc, f; sous-état 1
;******** Fin du processus Interruption Timer ***********
movlw d'int_end 100 '; 256-10000us/64us = 100
TMR0 movwf; 10msec Set pour TMR0
s_save movf, W; Lire sauvé ÉTAT reg
STATUS movwf; Récupérer ÉTAT reg
w_save swapf, f; Lire sauvé W registre
w_save swapf, W; Récupérer W registre
retfie; Fin d'interruption
;************************************************* *******
, Fin du récepteur télécommande
;************************************************* *******
fin
Dernière édition par zawani le 16 mars 2006 08:59, édité 1 fois au total
;************************************************* *******
;
; Emetteur télécommande
;
; Auteur: zawani
;************************************************* *******
p = liste PIC16F84A
comprennent p16f84a.inc
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
ERRORLEVEL -302; avertissement banque éliminerDéfinition Label ;**************** ********************
cblock h'0c '
tx_status; statut TX enregistrer zone
tx_substatus; sous-état TX enregistrer zone
modèle; Pattern enregistrer zone
ENDC
ptn1 equ b'11110000; 1 Les données Pattern
ptn2 equ b'00001111; 2 Les données de Pattern
RA4 equ d'4 '; position peu RA4
Démarrage du programme ;**************** ***********************
org 0; Vecteur Reset
goto init
org 4; vecteur d'interruption
int goto
;**************** Processus initial *********************
ÉTAT BSF init, RP0; Changer pour Bank1
movlw b'00000011; RA4: OUT RA1, 0: mode IN
movwf TRISA; Set TRISA reg
movlw b'00000101; RBPU tocs / PSA = 0, PS = 101
movwf OPTION_REG; Set OPTION_REG
Bcf STATUS, RP0; Changer pour Bank0
clrf PORTA; émission d'ondes Stop
tx_status clrf; Clear TX statut
tx_substatus clrf; Clear TX sous-état
movlw b'00000001; motif de masque Set
andwf PORTA, W, ramassez RA0
ÉTAT btfsc, Z; RA0 = 1 (SW1 ON)?
Aller in1; nVérifiez l 'entrée suivante
ptn1; Set motif1 données movlw
In0 modèle movwf; Sauvegarder les données modèle
tm goto; Aller à minuterie est réglée
IN1 movlw b'00000010; motif de masque Set
andwf PORTA, W, ramassez RA1
ÉTAT btfsc, Z; RA1 = 1 (SW2)?
init goto; nentrée illégale
ptn2; Set motif2 données movlw
Aller In0; Aller à motif mettre
movlw d'tm 100 '; 256-10000us/64us = 100
TMR0 movwf; 10msec Set pour TMR0
movlw h'a0; GIE = 1, TOIE = 1
movwf INTCON; Interruption permettre
goto $; Attendez interruption
;********* Entamer le processus d'interruption Timer ***********
int
bcf INTCON, T0IF; minuterie int flag Clair
stchk0
tx_status movf, W; Lire TX statut
ÉTAT btfss, Z, état TX = 0?
Aller stchk1; nProchain
;************ Préambule Envoyer des données Processus **************
movlw d'7 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfsc, Z; sous-état = 7?
Aller stinc; Oui.1 sous-état
movlw d'8 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfsc, Z; sous-état = 8?
Aller ST01; Oui.
movlw d'9 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfsc, Z; sous-état = 9?
Aller ST02; Oui.
movlw b'00000001; motif de masque Set
tx_substatus andwf, W, ramassez LSB
ÉTAT btfss, Z; LSB = 0 (Même)?
Aller st00; n(Impair)
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
st00 BCF, PORTA RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST01 BCF, PORTA RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST02 BSF, PORTA RA4; émission d'ondes de début
tx_substatus clrf; Clear TX sous-état
tx_status INCF, f; Set TX statut = 1
int_end goto; Aller à la fin int timer
;************************************************* *******
stchk1
movlw d'1 '; vérifier les données Set
tx_status subwf, TX vérifier l'état - de données; W
ÉTAT btfss, Z, état TX = 1?
Aller stchk2; nProchain
;************ Control Data envoyer processus ***************
tx_substatus movf, W; Lire TX sous-état
ÉTAT btfss, Z; sous-état = 0?
Aller ST11, No.Prochain
movlw b'00000001; motif de masque Set
modèle andwf, W, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller ST10, No.Les données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST10 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST11 movlw d'1 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données sous-état
ÉTAT btfss, Z; sous-état = 1?
Aller ST12, No.Prochain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST12 movlw d'2 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 2?
Aller ST13, No.Prochain
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST13 movlw d'3 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 3?
Aller ST15, No.Prochain
movlw b'00000010; motif de masque Set
modèle andwf, W, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller ST14, No.Les données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST14 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST15 movlw d'4 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 4?
Aller ST16, No.Prochain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST16 movlw d'5 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 5?
Aller ST17, No.Prochain
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST17 movlw d'6 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 6?
Aller ST19, No.Prochain
movlw b'00000100; motif de masque Set
modèle andwf, W, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller ST18; nLes données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST18 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST19 movlw d'7 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 7?
Aller ST20, No.Prochain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST20 movlw d'8 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 8?
Aller ST21, No.Prochain
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST21 movlw d'9 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 9?
Aller ST23, No.Prochain
movlw b'00001000; motif de masque Set
modèle andwf, W, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller ST22, No.Les données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST22 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST23 movlw d'10 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 10?
Aller ST24, No.Prochain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST24 movlw d'11 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 11?
Aller ST25, No.Prochain
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST25 movlw d'12 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 12?
Aller st27; nProchain
movlw b'00010000; motif de masque Set
modèle andwf, W, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller ST26, No.Les données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST26 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
st27 movlw d'13 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 13?
Aller st28; nProchain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
st28 movlw d'14 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 14?
Aller st29; nProchain
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
st29 movlw d'15 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 15?
Aller st31; nProchain
movlw b'00100000; motif de masque Set
modèle andwf, W, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller ST30, No.Les données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST30 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
st31 movlw d'16 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 16?
Aller ST32, No.Prochain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST32 movlw d'17 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 17?
Aller St33; nProchain
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
St33 movlw d'18 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 18?
Aller St35; nProchain
movlw b'01000000; motif de masque Set
modèle andwf, W, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller st34; nLes données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
st34 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
St35 movlw d'19 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 19?
Aller ST36, No.Prochain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST36 movlw d'20 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 20?
Aller ST37, No.Prochain
bsf PORTA, RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
ST37 movlw d'21 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 21?
Aller st39; nProchain
movlw b'10000000; motif de masque Set
modèle andwf, w, ramassez des données
ÉTAT btfss, Z; données = 0?
Aller st38; nLes données = 1
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
st38 BSF, PORTA RA4; émission d'ondes de début
Aller stinc; Aller à sous-état 1
st39 movlw d'22 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 22?
Aller ST40, No.Prochain
bcf PORTA, RA4; émission d'ondes Stop
Aller stinc; Aller à sous-état 1
ST40 BSF, PORTA RA4; émission d'ondes de début
tx_substatus clrf; Clear TX sous-état
tx_status INCF, f; Set TX statut = 2
int_end goto; Aller à la fin int timer
;************** Dernier envoi de données Processus *****************
stchk2 movlw d'2 '; vérifier les données Set
tx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 2?
Aller stinc; No.Jump de sous-état 1
bcf PORTA, RA4; émission d'ondes Stop
tx_substatus clrf; Clear TX sous-état
tx_status clrf; Clear TX statut
int_end goto; Aller à la fin int timer
;*********** Processus de sous-état Increment **************
tx_substatus INCF stinc, f; sous-état 1
;******** Fin du processus Interruption Timer ***********
movlw d'int_end 100 '; 256-10000us/64us = 100
TMR0 movwf; 10msec Set pour TMR0
retfie; Fin d'interruption
;************************************************* *******
, Fin du transmetteur télécommande
;************************************************* *******
fin;************************************************* *******
;
; Récepteur télécommande
;
; Auteur: Ichigo zawani
;************************************************* *******
p = liste PIC16F84A
comprennent p16f84a.inc
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
ERRORLEVEL -302; avertissement banque éliminerDéfinition Label ;**************** ********************
cblock h'0c '
rx_status; statut RX enregistrer zone
rx_substatus; sous-état RX enregistrer zone
rx_edge; vérifier drapeau bord d'entrée
last_look; entrée du pavillon dernier regard
code_ck; indicateur de vérification de code
cont_data; Control Data
relais, relais ON contre
w_save; reg W enregistrer zone
s_save; reg État enregistrer zone
ENDC
ptn1 equ b'11110000; 1 Les données Pattern
ptn2 equ b'00001111; 2 Les données de Pattern
RA1 equ d'1 ', la position peu RA1
RB5 equ d'5 ', la position peu RB5
RB7 equ d'7 '; RB7 position de bit
Démarrage du programme ;**************** ***********************
org 0; Vecteur Reset
goto init
org 4; vecteur d'interruption
int goto
;****************** Processus initial *******************
ÉTAT BSF init, RP0; Changer pour Bank1
movlw b'00011111; RA4-0: En mode
movwf TRISA; Set TRISA reg
movlw b'00000000; RB7-0: mode OUT
movwf TRISB; Set TRISB reg
movlw b'00000101; RBPU tocs / PSA = 0, PS = 101
movwf OPTION_REG; Set OPTION_REG
Bcf STATUS, RP0; Changer pour Bank0
clrf PORTB; RL1, RL2 OFF
rx_status clrf; Clear RX statut
rx_substatus clrf; Clear RX sous-état
rx_edge clrf; Edge indicateur de vérification Clair
last_look INCF, f; Set Rechercher Dernière drapeau sur
code_ck clrf; Effacer l'indicateur de vérification du code
cont_data clrf; Clear Control Data
relais clrf; Clear relais ON contre
movlw d'100 '; 256-10000us/64us = 100
TMR0 movwf; 10msec Set pour TMR0
movlw h'a0; GIE = 1, TOIE = 1
movwf INTCON; Interruption permettre
;*********** Initial processus de vérification d'entrée **************
edge_check
btfss PORTA, RA1, signal d'entrée ON?
Aller Check1; nSignal OFF
last_look btfsc, 0; Rechercher Dernière OFF drapeau?
edge_check goto; nEntrée non changé
bcf INTCON, GIE; désactiver Interruption
code_ck INCF, f; Set indicateur de vérification du code sur
last_look INCF, f; Set Rechercher Dernière drapeau sur
movlw d'178 '; 256-5000us/64us = 178
TMR0 movwf; 5 ms Réglez TMR0
BSF INTCON, GIE; Interruption permettre
attente
btfss rx_edge, 0; vérifier bord d'entrée?
Aller à attendre; nAttendez interruption
rx_edge clrf; Effacer l'indicateur de vérification bord
Aller edge_check; entrée chèque à bord Aller
Check1
last_look clrf; Set Rechercher Dernière OFF drapeau
Aller edge_check; entrée chèque à bord Aller
;************ Processus Interruption Timer **************
w_save movwf int; Sauvegarder W registre
movf ETAT, W; Lire le statut reg
s_save movwf; Sauvegarder ÉTAT reg
Bcf STATUS, RP0; Changer pour Bank0
bcf INTCON, T0IF; minuterie int flag Clair
relais movf, W; Lire relais ON contre
ÉTAT btfsc, Z; Counter = 0?
Aller stchk0; Oui
relais decfsz, f; contre - 1 = 0?
Aller stchk0; n
clrf PORTB; relais OFF
stchk0
code_ck movf, W; code du drapeau à cocher Lecture
ÉTAT btfsc, Z; Drapeau ON?
Aller int_end; nFin de l'interruption
rx_status movf, W; Lire RX statut
ÉTAT btfss, Z; Status = 0?
Aller stchk1; nProchain
;*********** Préambule processus de vérification des données *************
rx_substatus movf, W; Lire RX sous-état
ÉTAT btfss, Z; sous-état = 0?
Aller st00; nProchain
st_on goto; signal d'entrée ON?
st00 movlw d'1 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 1?
Aller ST01, No.
ST_OFF goto; OFF du signal d'entrée?
ST01 movlw d'2 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 2?
Aller ST02, No.
st_on goto; signal d'entrée ON?
ST02 movlw d'3 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 3?
Aller ST03, No.
ST_OFF goto; OFF du signal d'entrée?
ST03 movlw d'4 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 4?
Aller ST04, No.
st_on goto; signal d'entrée ON?
ST04 movlw d'5 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 5?
Aller ST05, No.
ST_OFF goto; OFF du signal d'entrée?
ST05 movlw d'6 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 6?
Aller ST06, No.
st_on goto; signal d'entrée ON?
ST06 movlw d'7 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 7?
Aller ST07, No.Sous-état = 8
st_on goto; signal d'entrée ON?
ST07 btfsc PORTA, RA1; OFF du signal d'entrée?
Aller illégale; nAller à la pêche illégale
rx_substatus clrf; sous-état RX = 0
rx_status INCF, f; statut RX = 1
cont_data clrf; données de comptage Clair
Aller int_end; Fin d'interruption
;************************************************* *******
stchk1
movlw d'1 '; vérifier les données Set
rx_status subwf, RX vérifier l'état - de données; W
ÉTAT btfss, Z, état RX = 1?
Aller stchk2; nProchain
;************ Contrôle de données Contrôle du processus **************
rx_substatus movf, W; Lire RX sous-état
ÉTAT btfss, Z; sous-état = 0?
Aller ST10, No.Prochain
st_on goto; signal d'entrée ON?
ST10 movlw d'1 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 1?
Aller ST11, No.
btfss PORTA, RA1, B0 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 0; B0 Set = 1
Aller stinc; Aller à sous-état 1
ST11 movlw d'2 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 2?
Aller ST12, No.
ST_OFF goto; OFF du signal d'entrée?
ST12 movlw d'3 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 3?
Aller ST13, No.
st_on goto; signal d'entrée ON?
ST13 movlw d'4 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 4?
Aller ST14, No.
btfss PORTA, RA1, B1 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 1; Set B1 = 1
Aller stinc; Aller à sous-état 1
ST14 movlw d'5 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 5?
Aller ST15, No.
ST_OFF goto; OFF du signal d'entrée?
ST15 movlw d'6 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 6?
Aller ST16, No.
st_on goto; signal d'entrée ON?
ST16 movlw d'7 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 7?
Aller ST17, No.
btfss PORTA, RA1, B2 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 2; B2 Set = 1
Aller stinc; Aller à sous-état 1
ST17 movlw d'8 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 8?
Aller ST18; n
ST_OFF goto; OFF du signal d'entrée?
ST18 movlw d'9 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 9?
Aller ST19, No.
st_on goto; signal d'entrée ON?
ST19 movlw d'10 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 10?
Aller ST20, No.
btfss PORTA, RA1, B3 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 3; B3 Set = 1
Aller stinc; Aller à sous-état 1
ST20 movlw d'11 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 11?
Aller ST21, No.
ST_OFF goto; OFF du signal d'entrée?
ST21 movlw d'12 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 12?
Aller ST22, No.
st_on goto; signal d'entrée ON?
ST22 movlw d'13 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 13?
Aller ST23, No.
btfss PORTA, RA1, B4 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 4; Set B4 = 1
Aller stinc; Aller à sous-état 1
ST23 movlw d'14 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 14?
Aller ST24; n
ST_OFF goto; OFF du signal d'entrée?
ST24 movlw d'15 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 15?
Aller ST25, No.
st_on goto; signal d'entrée ON?
ST25 movlw d'16 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 16?
Aller ST26, No.
btfss PORTA, RA1, B5 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 5; Set B5 = 1
Aller stinc; Aller à sous-état 1
ST26 movlw d'17 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 17?
Aller st27; n
ST_OFF goto; OFF du signal d'entrée?
st27 movlw d'18 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 18?
Aller st28; n
st_on goto; signal d'entrée ON?
st28 movlw d'19 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 19?
Aller st29; n
btfss PORTA, RA1, B6 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 6; Set B6 = 1
Aller stinc; Aller à sous-état 1
st29 movlw d'20 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 20?
Aller ST30, No.
ST_OFF goto; OFF du signal d'entrée?
ST30 movlw d'21 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 21?
Aller st31; n
st_on goto; signal d'entrée ON?
st31 movlw d'22 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 22?
Aller ST32, No.Sous-état = 23
btfss PORTA, RA1, B7 = 1?
Aller stinc; Aller à sous-état 1
cont_data BSF, 7; Set B7 = 1
Aller stinc; Aller à sous-état 1
ST32 btfsc PORTA, RA1; OFF du signal d'entrée?
Aller illégale; nAller à la pêche illégale
rx_substatus clrf; sous-état RX = 0
rx_status INCF, f; statut RX = 2
Aller int_end; Fin d'interruption
st_on
btfss PORTA, RA1, signal d'entrée ON?
Aller illégale; nAller à la pêche illégale
Aller stinc; Aller à sous-état 1
ST_OFF
btfsc PORTA, RA1; OFF du signal d'entrée?
Aller illégale; nAller à la pêche illégale
Aller stinc; Aller à sous-état 1
;************** Vérifier les données sur Terminer le processus ****************
stchk2 btfss PORTA, RA1, signal d'entrée ON?
Aller illégale; nAller à la pêche illégale
movlw d'2 '; vérifier les données Set
rx_substatus subwf, W; - vérifier les données de sous-état
ÉTAT btfss, Z; sous-état = 2?
Aller stinc; Aller à sous-état 1
;**************** Processus de vérification des données ******************
cont_data movf, W, les données de contrôle de lecture
xorlw ptn1; Vérifiez Pattern1
ÉTAT btfss, Z; données = Pattern1?
Aller dtchk0; n
PORTB BCF, RB7; RL2 OFF
PORTB bsf, RB5, RL1 ON
Aller dtchk1; Aller à l'encontre ON ensemble
dtchk0
cont_data movf, W, les données de contrôle de lecture
xorlw ptn2; Vérifiez Pattern2
ÉTAT btfss, Z; données = Pattern2?
Aller illégale; nAller à la pêche illégale
PORTB BCF, RB5, RL1 OFF
PORTB bsf, RB7; RL2 ON
dtchk1 movlw d'50 '; Set relais 500msec ON
relais movwf; Sauvegarder relais ON contre
;***************** Processus illégal ********************
rx_edge INCF illégale, f; indicateur de vérification Edge sur
rx_substatus clrf; sous-état RX = 0
rx_status clrf; statut RX = 0
code_ck clrf; Effacer l'indicateur de vérification du code
Aller int_end; Fin d'interruption
;*********** Processus de sous-état Increment **************
rx_substatus INCF stinc, f; sous-état 1
;******** Fin du processus Interruption Timer ***********
movlw d'int_end 100 '; 256-10000us/64us = 100
TMR0 movwf; 10msec Set pour TMR0
s_save movf, W; Lire sauvé ÉTAT reg
STATUS movwf; Récupérer ÉTAT reg
w_save swapf, f; Lire sauvé W registre
w_save swapf, W; Récupérer W registre
retfie; Fin d'interruption
;************************************************* *******
, Fin du récepteur télécommande
;************************************************* *******
fin
Dernière édition par zawani le 16 mars 2006 08:59, édité 1 fois au total