Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

pbp sleep komutu?

Başlatan erkan614, 21 Ocak 2009, 16:32:55

erkan614

.
.
.
MAIN:
IF (GPIO.3=1) AND (GPIO.4=1) THEN ' pins will be 0 only when buttons are pressed
     E_OUT=0         ' Disable
     INTCON.0 = 0    ' No buttons down, so clear int on change flag
     @ SLEEP         ' and start snoozin..zzzzzzzzzzz
     @ NOP           ' Do nothing for 1st instruction on wake-up
    ENDIF
    E_OUT=1          ' LED on demo board
    PAUSEUS 25
.
.
.

ioc ile kesme aktif
3 veya 4 e basılmadığında işleci uykuya geçiyor peki ioc olduğunda ve uyandığında programa nerden devam ediyor nop tan mı? yoksa en baştanmı?

erkan614

Alıntı yapılan: "hademe"
portb.0 yada portb.4-7 portlarından birine bağla butonu portuda pullup yap. RB0 yada RB4-7 change int. kur fakat global int. aktif etme. Böylece uykudan sonra program kaldığı yerden devam eder ve tuşa basılmamışsa hep uykuda kalır. Tuşa basılır uykudan kalkar işini yapar tekrar yatar taki tuş yeniden basılana kadar.

arama yaparken atlamışım pardon

verdiğim programdada gie=0 dı dikkatimden kaçmış

Tagli

GIE=1 ise uyandıktan sonra kesmeye gider (gerçi PBP'da kesmeye nasıl gittiğinden emin değilim). Ama kesmeye gitmeden önce SLEEP'ten bir sonraki komutu (ASM komutunu) da işler. Hiç bir iş yapmadan kesmeye gitmesi için SLEEP'ten sonra NOP kullanılmış. Gerçi GIE=0 iken kullanılmasa da olurdu.
Gökçe Tağlıoğlu

erkan614

benim anladığım şu idi;
gie=1 ise bir sonraki komutu işleyip kesme alt programına gidiyor
gie=0 ise ioc=1 olması ile sadece sleep komutundan kurtuluyor ve kesmeye gitmeden program kaldığı yerden devam ediyor nop > e_out=1 ...