 | Elektrotekno.com Elektronik ve Teknoloji Merkezi
|
| | Yazar | Mesaj | kaselsan | | Tarih: 25.03.2007, 16:50 Mesaj konusu: | |
| bu devre işinizi görebilir.
Hex:
'----- CONFIGURO PUERTOS-----
'Configuro el portA:
TRISA.0 = 0 'Salida (LED 1)
TRISA.1 = 0 'Salida (LED 2)
TRISA.2 = 1 'Entrada (Pulsador 1)
TRISA.3 = 1 'Entrada (Pulsador 2)
TRISA.4 = 0 'Salida (NO USADO)
'Configuro el portB:
TRISB.0 = 0 'Salida
TRISB.1 = 0 'Salida
TRISB.2 = 0 'Salida
TRISB.3 = 0 'Salida
TRISB.4 = 0 'Salida
TRISB.5 = 0 'Salida
TRISB.6 = 0 'Salida
TRISB.7 = 0 'Salida
'------VARIABLES Y CONSTANTES------------------
'Defino constantes:
Symbol led1 = PORTA.0 'LED 1
Symbol led2 = PORTA.1 'LED 2
Symbol p1 = PORTA.2 'Pulsador 1
Symbol p2 = PORTA.3 'Pulsador 2
'Variables
Dim aux As Word
Dim i As Byte
Dim flag As Bit
aux = 0
flag = 0
i = 0
'----COMIENZA EL PROGRAMA EN SI-----
'Apago todos los leds del emisor
led1 = 0
led2 = 0
loop: 'Bucle principal del programa
'Veo si se pulso algun boton
If p1 = 1 Then 'Presionaron el pulsador 1
Gosub cablenormal
Endif
If p2 = 1 Then 'Presionaron el pulsador 2
Gosub cablecruzado
Endif
Goto loop 'Repite eternamente
End
cablenormal: 'Enciende Leds en orden 1-2-3-4-5-6-7-8
led1 = 1 'Enciendo el LED1 (indicador de funcion)
aux = 1 'Led Encendido: el 8
flag = 0 'Asumo el otro boton sin pulsar
While flag = 0 'mientras No se pulse el otro, funciona.
If aux = 1 Then 'Enciendo LED 1
PORTB = %10000000
Endif
If aux = 2 Then 'Enciendo LED 2
PORTB = %01000000
Endif
If aux = 3 Then 'Enciendo LED 3
PORTB = %00100000
Endif
If aux = 4 Then 'Enciendo LED 4
PORTB = %00010000
Endif
If aux = 5 Then 'Enciendo LED 5
PORTB = %00001000
Endif
If aux = 6 Then 'Enciendo LED 6
PORTB = %00000100
Endif
If aux = 7 Then 'Enciendo LED 7
PORTB = %00000010
Endif
If aux = 8 Then 'Enciendo LED 8
PORTB = %00000001
aux = 0 'Pongo a uno para reiniciar la cuenta
Endif
aux = aux + 1
For i = 1 To 255 '255
WaitMs 1 'espera 1/1000 de segundo.
If p2 = 1 Then 'Se pulso el otro boton
flag = 1 'Pongo el flag para salir de la rutina
PORTB = %00000000 'Apago todos los leds
led1 = 0 'Apago el led "piloto"
WaitMs 500 '500 milisegundos para darle tiempo a soltar el boton
i = 255
Endif
Next i
Wend
Return
cablecruzado: 'Enciende Leds en orden 1-2-4-3-6-5-7-8
led2 = 1 'Enciendo el LED2 (indicador de funcion)
aux = 1 'Led Encendido: el 8
flag = 0 'Asumo el otro boton sin pulsar
While flag = 0 'mientras No se pulse el otro, funciona.
If aux = 1 Then 'Enciendo LED 3
PORTB = %00100000
Endif
If aux = 2 Then 'Enciendo LED 6
PORTB = %00000100
Endif
If aux = 3 Then 'Enciendo LED 1
PORTB = %10000000
Endif
If aux = 4 Then 'Enciendo LED 4
PORTB = %00010000
Endif
If aux = 5 Then 'Enciendo LED 5
PORTB = %00001000
Endif
If aux = 6 Then 'Enciendo LED 2
PORTB = %01000000
Endif
If aux = 7 Then 'Enciendo LED 7
PORTB = %00000010
Endif
If aux = 8 Then 'Enciendo LED 8
PORTB = %00000001
aux = 0 'Pongo a uno para reiniciar la cuenta
Endif
aux = aux + 1
For i = 1 To 255 '255
WaitMs 1 'espera 1/1000 de segundo.
If p1 = 1 Then 'Se pulso el otro boton
flag = 1 'Pongo el flag para salir de la rutina
PORTB = %00000000 'Apago todos los leds
led2 = 0 'Apago el led "piloto"
WaitMs 500 '500 milisegundos para darle tiempo a soltar el boton
i = 255
Endif
Next i
Wend
Return
iyi çalışmlar.
-----------------------------------------------------
|
|
immortalover | | Tarih: 04.11.2007, 22:13 Mesaj konusu: tşk ederim | |
| verdiğin bilgi için tşk ederim.yalnız benim yapmak istediğim proje 8 kabloyla sınırlı olmaması aynı anda misal 60 tane noktanın testini yapacak.
shift register kullanarak giriş çıkış sayısını artırsak olurmu diye düşünüyorum ama bu sefer işin kötüsü hafızaya almak gerekiyor neden dersen yaptığım bi grupta 30 kablo var diğerinde 50 kablo var sıralamaları farklı bi şekilde.
elimde bi tane hazır yapılmış var ATMEL AT89S8253 ile yapılmış mikroişlemci hafızaya alma işlemlerini,sonucu display ve IR vericiyle dışarı veren bir kart.yalnız işlemcisi kilitli kopyasını alamıorum.
tşkler
|
|
timpati | | Tarih: 09.11.2007, 18:40 Mesaj konusu: sayıcı | |
| benzer bir sistemi çalıştığım firmanın eternet kablolarını bulmak ve sıralamasını test etmek için kullandım. yapılacak şey aslında çok basit. 4017 veya benzeri bir devreyle koşan ışık devresi yapacaksın. sayı arttıkça bunun adı shift register oluyor. yani kabloların bir ucunda devre diğer yanında ise sadece ledler olacak. doğru sıralamada iseler ledler sırayla yanacaklar değilse atlama olan yeri zaten göreceksin.
4017 tek başına sadece 10 ledi koşturabilir, çok sayıda kablo için ister 4017leri kaskadla isterse başka seri lojik entegreler kullan. sayıyı belirlemek için tek yapacağın geri dönüş için sonuncu ledden ilk sayıcının reset girişine bir geribesleme yapmak.
|
|
immortalover | | Tarih: 12.01.2008, 00:39 Mesaj konusu: mrb | |
|
mrb arkadaşlar yaptığım bu devrede 3 kablonun iletim ve sıralama testini başarılı bir şekilde yapmakta.
mantığı şu şekilde 1.kablo için portb.0 dan gönderilen +5v u portb.3 den alması gerekiyor.eğer şart doğru ise yeşil led değilse kırmızı led yanıyor.3 kablo içinde iletim ve sıralama ok ise portb.6 ya bağlı olan yeşil led (ok) yanıyor.
bu projedeki kablo sayısını en fazla 12 kablo için yapabiliyorum...
benim size sorum şu olacak nasıl birşey yapsam bu çıkış portu ve giriş portunu artırabilirim.74hc595 ve 74hc165 entegrelerini kullansam kodları nasıl ayarlamam gerekir ?
yardımcı olursanız sevinirim... kodlarımda şu şekilde
grup:
hıgh portb.0
hıgh portb.1
hıgh portb.2
ıf ((portb.3=1) or (portb.4=1) or (portb.5=1)) then
low portb.0
low portb.1
low portb.2
goto test
else
low portd.0
low portd.1
low portd.2
low portd.3
low portd.4
low portd.5
goto grup
endif
test:
high portb.0
if portb.3=1 then
high portd.0
low portd.3
else
high portd.3
low portd.0
low portb.0
endif
'-----------------------------------------------------------
high portb.1
if portb.4=1 then
high portd.1
low portd.4
else
high portd.4
low portd.1
low portb.1
endif
'-----------------------------------------------------------
high portb.2
if portb.5=1 then
high portd.2
low portd.5
else
high portd.5
low portd.2
low portb.2
endif
'------------------------------------------------------------
if ((portb.3=1) and (portb.4=1) and (portb.5=1)) then
high portb.6
else
low portb.6
endif
|
|
|
|