Prośba o pomoc w dokończeniu programu ( AT89C4051 )

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
jacek38
-
Posty: 7
Rejestracja: 17 paź 2006, 21:22

Prośba o pomoc w dokończeniu programu ( AT89C4051 )

Post autor: jacek38 » 14 cze 2010, 21:48

Witam - mam prośbę do czytających o pomoc w dokończeniu programu - jest to program w Bascomie - regulator różnicowy - chodzi mi aby program oprócz regulacji zamykania i otwierania zaworu kulowego z napędem elektrycznym przełączył port P3.3 w stan wysoki po przekroczeniu 90 st. C na T4 oraz aby po obniżeniu poniżej 90 st.C na tych porcie pojawił się stan niski.

Kod: Zaznacz cały

$large 
Config Lcd = 16 * 2 
Deflcdchar 1 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32 
Dim A As Integer , D As Integer , C As Bit 
Dim T1 As Integer 
Dim T2 As Integer 
Dim T3 As Integer 
Dim T4 As Integer 
Dim B1 As Byte , B2 As Byte 
Dim Znak As String * 1 
Dim Tk1 As Byte 

Cursor Off 
P3.3 = 1 
P3.4 = 1 
C = 0 
Cls 
Tk1 = 3 
S1: 
Set P3.3 
Cls 
Wait 2 
Do 
Set P3.0 : Set P3.1 : Set P3.2 : Set P3.4 : Set P3.7 
Cls 
Locate 1 , 1 
Lcd "Temp diff= " ; Tk1 
If P3.0 = 0 Then Tk1 = Tk1 + 1 
If P3.1 = 0 Then Tk1 = Tk1 - 1 
If P3.2 = 0 Then Exit Do 
Waitms 250 
Loop 
Wait 1 

Set P3.2 
Cls 
Do                                                            'początek pętli glównej 
1wreset P1.1 
1wwrite &HCC P1.1                                             'komenda skip ROM 
1wwrite &H44 P1.1                                             'komenda convert T 
Waitms 250 
Waitms 250 
1wreset P1.1 
1wwrite &HCC P1.1                                             'komenda skip ROM 
1wwrite &HBE P1.1                                             'komenda read 

B1 = 1wread(p1.1)                                             'odczyt z termometru 
B2 = 1wread(p1.1) 
1wreset P1.1                                                  'podprogram 1wr 

If B2 >= 248 Then                                             'w przypadku temperatur ujemnych 
B1 = 255 - B1 
B2 = 255 - B2 

Znak = "-" 
Else 
Znak = "+" 
End If 

Shift B1 , Right , 4 
Shift B2 , Left , 4 
T1 = B1 + B2 
T3 = T1 
Locate 1 , 1 
Lcd Znak ; T3 ; Chr(1) ; "C " ; "PIEC C.O."                   'T3 temp. pieca c.o. 
Waitms 250 


1wreset P1.0 
1wwrite &HCC P1.0                                             'komenda skip ROM 
1wwrite &H44 P1.0                                             'komenda convert T 
Waitms 250 
Waitms 250 
1wreset P1.0 
1wwrite &HCC P1.0                                             'komenda skip ROM 
1wwrite &HBE P1.0                                             'komenda read 

B1 = 1wread(p1.0)                                             'odczyt z termometru 
B2 = 1wread(p1.0) 
1wreset P1.1                                                  'podprogram 1wr 

If B2 >= 248 Then                                             'w przypadku temperatur ujemnych 
B1 = 255 - B1 
B2 = 255 - B2 

Znak = "-" 
Else 
Znak = "+" 
End If 

Shift B1 , Right , 4 
Shift B2 , Left , 4 
T2 = B1 + B2 
T4 = T2 
Locate 2 , 1 
Lcd Znak ; T4 ; Chr(1) ; "C " ; "BOJLER"                      'T4 temp. bojlera 
Gosub Ster 
Waitms 250 
Waitms 250 

If P3.2 = 0 Then Goto S1 
Loop                                                          'koniec pętli glównej 
        'podprogram obliczania różnicy - ustawianie okna 

Ster: 
A = T3 - T4 
D = T4 + Tk1 

If T3 > D Then                                                'obliczanie różnicy temp 
Set P3.3                                                      'ustaw wyjscie P3.3 w stan wysoki 
Else                                                          'inaczej 
Reset P3.3                                                    'ustaw P3.3 w stan niski 
End If 
If T4 >= 90 Then                                              'jeśli temp bojlera + histereza jest większa lub równa 90 stopni 
Set P3.4                                                      'ustaw wyjście P3.4 w stan wysoki 
Else                                                          'inaczej 
Reset P3.4                                                    'utrzymuj wyjście P3.4 w stanie niskim 
End If 
If T4 >= 40 Then                                              'jeśli temp. bojlera + histereza jest większa lub równa 40 stopni 
Set P3.7                                                      'ustaw wyjście P3.7 w stan wysoki 
Else                                                          'inaczej 
Reset P3.7                                                    'utrzymaj wyjście P3.7 w stanie niskim 
End If 
Return 

End

ODPOWIEDZ