arkadaşlar aşağıdaki kodlar çalıştırdığımda d0 d1......tetikleyemiyorum. tetiklediğimde kendini sıfıra çekiyor. ne negatif ne pozitif etki oluyor. PORTD sadece bir defa yapabiliyorum ikinciye tetik yapamıyorum.. d portuna ait çıkışlar normal değil... nedendir bir türlü işin içinden çıkamadım...
/*
* PIC16F877A
* ENCODER LCD
*/
#define _XTAL_FREQ 16000000
#include <xc.h>
#include <stdint.h> // degişken türleri
#include <stdio.h> // Including C Standard Libraries
// config ayarlar
#pragma config FOSC = HS // Oscillator (XT oscillator)
void main(void)
{
TRISA = 0XFF; PORTA = 0X00; // ALL IN
TRISB = 0X00; PORTB = 0X00; // ALL OUT
TRISC = 0b11001111; PORTC = 0X00; // 0-1-2-3 IN ,4-5 OUT, 6-7 TX RX IN
TRISD = 0X00; PORTD = 0X00; // ALL OUT
TRISE = 0XFF; PORTE = 0X00; // ALL IN
ADCON1 = 0X06; // analog pinleri Dijitale dönüşür.
CMCON = 0x07; // dijital giriş- çıkış oldu
while (1) {
if (RA0 == 1 ) { RB7 = 1; } else { RB7 = 0; }; // OUT1
if (RA1 == 1 ) { RB6 = 1; } else { RB6 = 0; }; // OUT2
if (RE0 == 1 ) { RB1 = 1; } else { RB1 = 0; };
if (RE1 == 1 ) { RB0 = 1; } else { RB0 = 0; };
if( RC1 == 1 ) { RD1 = 1; } else { RD1 = 0; };
if (RC2 == 1 ) { RD0 = 1; } else { RD0 = 0; };
}
} // main
(https://i.ibb.co/KFjDkXQ/netgonder.jpg) (https://ibb.co/KFjDkXQ)
Pull-up yada pull-down direçlerini takıp deneyebilirsin.
Bunu sadece proteusda deniyorum.. ccs c yaptıgımda sorun olmuyor... peki mplab uzerinden nasıl yapabilirim pul up değerini pic16f877a mcc destek vermiyor
TRISE = 0b00000111;
Zira TRISE 4.bit PSP modunu açıyor.
evet memet bey sorunun kaynağı e portuna verdiğin trise değeri binary
TRISE = 0b111; yaptım sorun çözüldü.. hex yazdığımda sorun devam ediyor...ama hala anlamadım neden böyle psb modu dediğiniz şey inanın ne olduğunu bilmiyorum. ayrıca bu e portunun veya a portundan tamamı dijital çalışıyor.. bunlardan bir bit örneğin E PORTUNUN SON BITINI (2) ANALOG YAPMAM MUMKUNMU.... yani 0,1, dijital 2 port analog.. bunu nasıl secebilirim...
Register çalışmanız iyi olur.
Her mcunun kataloğunda kullanımları
bulunmakta.