proton+ değişken değerine göre çıkışları aç kapa

Başlatan hdalcı, 13 Kasım 2015, 17:52:08

hdalcı

slm arkadaşlar
çıkış rölelerini iki değer arasında nasıl çalıştırmam gerekiyor
deg1 değişkeni 50 olunca röle1 aç 60 olduğunda kapat 55 te röle2 aç 80 kapat gibi olabilirmi
Device = 16F628A
 Xtal 4
Declare Reminders Off
@ CONFIG_REQ = 0 ; Override Compiler's configuration settings
Asm-
__Config  0x1E2A ;FOSC_HS & WDTE_OFF & PWRTE_OFF & MCLRE_ON & BOREN_OFF & LVP_OFF & CPD_ON & CP_ON 
Endasm-
Declare Reminders On
All_Digital true
CMCON=7
TRISA = %11111111
TRISB = %00000000
PORTA=0
PORTB=0 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Symbol but1 = PORTA.0
Symbol but2 = PORTA.1
Symbol but3 = PORTA.2
Symbol but4 = PORTA.3
Symbol but5 = PORTA.4
Symbol ROLE1 = PORTB.0
Symbol ROLE2 = PORTB.1
Symbol ROLE3 = PORTB.2 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Dim DEG1 As Byte
Dim DEG2 As Byte
Dim DEG3 As Byte
Dim DEG4 As Byte
Dim DEG5 As Byte
DEG:
DEG1=0
DEG2=0
DEG3=0
DEG4=0
DEG5=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MENU1:

If but1 =1 Then MENU2
 GoTo MENU1
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MENU2:

DelayMS 10
DEG1=DEG1 +1
If DEG1 >= 250 Then  DEG
;mesela deg1 50 değerini aldığında röle 1 açılacak 60 olduğunda kapanacak
; deg1 bakarak röleler aç kapa yapsın istiyorum 
 If DEG1 = 50 Then ROLE1=1
 If DEG1 = 60 Then ROLE1=0
 ; 50&60 arası çalıştır gibi  

GoTo MENU2
End



Maxim

-öncelikle buton girişlerine pull-down direnç eklemelisin
-röle çıkışındaki transistörlere ters diyot eklemelisin
-16F628A internal osc var, kristal takmana gerek yok

başka şekildede yapılabilir, ben böyle yaptım
bu şekilde butona bastığın süre boyunca değer artar, delayms gecikmesini arttırsan artış hızı yavaşlayacaktır.

diğer bir çözüm ise buton kumandası için while-wend komutu kullanımıdır
o zaman tık tık her basmada sayı 1 artar, elini üzerinde basılı tutsan artmaz

Device = 16F628A
Xtal 4
Declare Reminders Off
@ CONFIG_REQ = 0 ; Override Compiler's configuration settings
Asm-
__Config  0x1E2A ;FOSC_HS & WDTE_OFF & PWRTE_OFF & MCLRE_ON & BOREN_OFF & LVP_OFF & CPD_ON & CP_ON
Endasm-
Declare Reminders On
All_Digital true
CMCON=7
TRISA = %11111111
TRISB = %00000000
PORTA=0
PORTB=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Symbol but1 = PORTA.0
Symbol but2 = PORTA.1
Symbol but3 = PORTA.2
Symbol but4 = PORTA.3
Symbol but5 = PORTA.4
Symbol ROLE1 = PORTB.0
Symbol ROLE2 = PORTB.1
Symbol ROLE3 = PORTB.2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Dim DEG1 As Byte
Dim DEG2 As Byte
Dim DEG3 As Byte
Dim DEG4 As Byte
Dim DEG5 As Byte
DEG:
DEG1=0
DEG2=0
DEG3=0
DEG4=0
DEG5=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MENU1:

If but1=1 Then 
DelayMS 10
Inc DEG1
If DEG1>=250 Then DEG1=0
EndIf


Select DEG1
Case 50 To 60
ROLE1=1
Else
ROLE1=0
EndSelect

GoTo MENU1