Program 30

Nasza ocena:

3
Wyświetleń: 868
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Program 30 - strona 1 Program 30 - strona 2 Program 30 - strona 3

Fragment notatki:


;==============================================================================
;Listing 7.30 procedura testowa ukladow z magistrala one_wire
;==============================================================================
;co 1 sek odczyt pamieci ROM ukladu 1_wire (rozkaz 33h)
;zapala led na 0.5 sek jezeli zgadza sie suma crc i nr seryjny
;zapisuje nr seryjny ukladu do pamieci EEPROM procesora
ERRORLEVEL -302
list P=12F675
__CONFIG _WDT_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT #include p12f675.inc
;Konf_ow ;konfiguracja procesora i definicje
#define dq gpio, gp5 ;definicja linii dq
#define out gpio, gp2 ;definicja linii out
#define bank0 bcf status,rp0 ;definicja bank0
#define bank1 bsf status,rp0 ;definicja bank1
#define pr_ok state, 0 ;definicja flagi pr_ok
#define crc_ok state, 1 ;definicja flagi crc_ok.
#define sn_ok state, 2 ;definicja flagi sn_ok.
;numer seryjny ukladu DS1990
;00 00 08 F8 87 C2
#define sn0 h'C2' ;zerowy bajt sn
#define sn1 h'87' ;pierwszy bajt sn #define sn2 h'F8' ;drugi bajt sn
#define sn3 h'08' ;trzeci bajt sn
#define sn4 h'00' ;czwarty bajt sn
#define sn5 h'00' ;piaty bajt sn
cblock h'28'
;adresy 20h do 27h zarezerwowane na odczytane dane
;zapis calej ramki 1-wire 8 bajtow
state ;rejestr flag
dat ;rejestr na dane
crc ;rejestr crc
cnt, cnt1, cnt2 ;liczniki endc
org 0
goto start
;========================================================================
start bank1
movlw b'00101000' ;niewykorzystane linie procesora (GP0, GP1, GP4) = wyjscia movwf trisio ;GP3 - zerowanie procesora przyciskiem
bank0
;przygotowanie linii procesora
Bcf out ;zeruj out
Bcf dq ;0 - dq
bank1 ;bank 1
Bsf dq ;1 - tris5
Bcf out ;0 - tris2 bank0 ;bank 0
clrf state
;========================================================================
;program glowny loop ;petla glowna
call reset ;sekwencja inicjalizacji
btfss pr_ok ;sprawdz presence
goto wait_1s ;nie ma presence, czekaj 1 sek
movlw h'33' ;jest, wpisz do w kod rozkazu 33h - czytaj ROM


(…)

… read_frame ;odczytaj dane
; call podstaw ;procedura testowa - zapis znanego nr seryjnego do pamieci ram
call test_crc ;oblicz crc
btfss crc_ok ;sprawdz crc_ok
goto wait_1s ;zly, czekaj 1 sek i nowa inicjalizacja
; call test_sn ;odczytaj numer seryjny
; btfss sn_ok ;sprawdz sn_ok ; goto wait_1s ;zly, czekaj 1 sek i nowa inicjalizacja
;sprawdzenia ok, zapal diode na 0.5 sek
call zapis_ee ;zapisz nr seryjny…
… ;ustaw crc_ok
return
;========================================================================
obl_crc ;oblicza crc8 dla 1 bajtu na podstawie, wielomian=x^8+x^5+x^4+1
;dane w dat, wynik w crc
;przed pierwszym wywolaniem wyzerowac crc
movwf dat ;w -> dat movlw .8 ;liczba bitow
movwf cnt ;licznik bitow
crc0 rrf dat, f
btfsc status, c goto crc3
btfsc crc, 7
goto crc4
crc1
bcf status, c
rlf crc, f
crc2…
... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz