Basit bir program ama çalışmıyor? neden olabilir?
#include <16F84A.h>
#fuses XT,NOWDT,NOPROTECT,NOPUT
#use delay(clock=4000)
#int_EXT
void ISR()
{
output_low(PIN_B1);
delay_ms(5000);
}
void main()
{
set_tris_b(00000001);
output_b(00000000);
EXT_INT_EDGE(L_TO_H);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
WHILE(1)
{
OUTPUT_high(PIN_b1);
}
}
#use delay(clock=4000) Bu satır eksik yazılmış
#use delay(clock=4000000) Doğrusu böyle olacak
kemalak teşekkürler. yalnız o satıırn kesme ile bir ilgisi bulunmamakta
ayrıca söylediğin şekilde değiştirmeme rağmen genede çalışmadı
tekrar teşekkürler
OUTPUT_high(PIN_b1); satırının altına aşağıdaki kodu yazınız.
input(PIN_B0);
teşşekkür ederim input() komutunu verince sorun düzeldi
ahmet bu input mantığı nedir ben anlamadım acıklarmısın
PDF'yi açmanız ve okumanız mümkünmü? Oku görüşelim...
Sen araştır PDF nin içinden ben sana yardımcı olacağım.
Herşeyi başkalarından beklemeyiniz...
En güzel kaynak PDF dosyaları bu çiplerin.
@asadam: da dönmedi geri. Nasıl yapıldığını hiç merak etmedi?
O an sorunu çözelim kaçalım mantığı var forum genelinde.
output() ve input() gibi hazır fonksiyonları kullanmadan önce ccs'nin helpini okumak lazım.Burda input() un kullanımında mantık yok.amaç pin_b0'ı giriş yapmak.
beklenen çözüm #use FIXED_IO(b_outputs=PIN_B1) kullanmak.
tavsiyem şu: kodun taşınabilirliği için ccsnin hazır fonksiyonlarından mümkün olduğunca kaçın.
şöyle yapabilirsiniz.
#byte portb = 0x6
#byte trisb = 0x86
#bit led = portb.1
#bit led_tris = trisb.1
#bit buton = portb.0
#bit buton_tris = trisb.0
buton_tris = 1;
led_tris = 0;
led = 0;
ASM de şöyle bir işlem yapılmış.
0070 3004 00253 MOVLW 04
0071 009C 00254 MOVWF @@1C
0072 019A 00255 CLRF 1A
0073 1B8B 00256 BTFSC INTCON.GIE
0074 179A 00257 BSF 1A.7
0075 138B 00258 BCF INTCON.GIE
0076 30FA 00259 MOVLW FA
0077 009F 00260 MOVWF ??65535
0078 203A 00261 CALL @delay_ms1
0079 1B9A 00262 BTFSC 1A.7
007A 178B 00263 BSF INTCON.GIE
007B 0B9C 00264 DECFSZ @@1C,F
007C 2872 00265 GOTO 072
00266 .............................. output_toggle(PIN_b7);
007D 1683 00267 BSF STATUS.RP0
007E 1386 00268 BCF TRISB.7
007F 3080 00269 MOVLW 80
0080 1283 00270 BCF STATUS.RP0
0081 0686 00271 XORWF PORTB,F
00272 .............................. data = input(PIN_B0);
0082 1683 00273 BSF STATUS.RP0
0083 1406 00274 BSF TRISB.0
0084 1283 00275 BCF STATUS.RP0
0085 101B 00276 BCF 1B.0
0086 1806 00277 BTFSC PORTB.RB0/INT
0087 141B 00278 BSF data
00279 .............................. }
0088 2870 00280 GOTO 070
00281 ..............................
00282 .............................. }
00283 ..............................
0089 0063 0284 SLEEP
neler yapıldığını belki bu asm'yi inceleyerek bulabilirsin.
Merhaba Ahmet2004 hocam asm ıncelemesi kısımda size bır sorum olacak hep merak etmıstım bir turlu anlam cıkaramadım. bana bu konuda acıklama bulunabılırmısınız.
asm cıktı kısmında anlamadıgım nokta
0085 101B 00276 BCF 1B.0
burda BCF den sonraki 1B.0 kısmı neyi ifade ediyor.
O adresteki tanımı mı ?
Tesekkurler
M_B
derleyici data için sramde yer ayırıyor ve adresi 0x1B
BCF 1B.0 ----> data değişkeninin 0.bitini temizliyor.
Tesekkurler @James arkadasım. kolay gelsın.