Ccs-C ile 12F508 İşlemci GP2/TOCKI Pin çıkış vermiyor

Başlatan Foxer, 08 Eylül 2022, 00:40:24

Foxer

Herkese merhaba,
Başlıkta bahsettiğim şekilde bir problem yaşıyorum. Sigortalarda NOMCLR olarak ayarladım NOWDT olarak ayarladım. MCRL pin'i only read olduğu için oradan çıkış almıyorum normal olarak fakat GP2 TOCKI pin'i çıkış vermiyor. Mevcut bir kart vardı ben bu kart üzerinde program yazarak farklı amaçla kullanmayı hedefleyerek yaptım. Mevcut kartta GP2 pin'i üzerinden 1 direnç 1 transistör ile 24v röle sürülmüş o röleyi kullanmak istiyorum ama ne yaptıysam başaramadım. Yardımcı olabilecek var ise şimdiden teşekkür ederim.

.h dosyası
#include <12F508.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOMCLR,NOPROTECT                                    //Master Clear pin used for I/O

#use delay(internal=4000000)
#use FIXED_IO( B_outputs=PIN_B4,PIN_B2,PIN_B1,PIN_B0 )

#define LED PIN_B0
#define LED1   PIN_B1
#define LED2   PIN_B2
#define LED4   PIN_B4
#define GIRIS   PIN_B5


#define DELAY 500

main kodlar:
#include <508_2.h>
void main()
{

set_tris_b(0b00101000);   
output_low(pin_b0);   
output_low(pin_b1);        
output_low(pin_b2);         
output_low(pin_b4); 

   while(true)
{

output_high(pin_b0); 
output_high(pin_b1);
output_high(pin_b2);
output_high(pin_b4);
delay_ms(1000);
output_low(pin_b0);   
output_low(pin_b1);        
output_low(pin_b2);         
output_low(pin_b4);     
delay_ms(1000); 
   }

}

ete

İlgili pin maden TOCK1 pini olarak da kullanılıyor muhtemelen sorun o pinin Option registerinden ne amaçla kullanılacağının ayarlanmamış olmasındandır.
OPTION registerine %11000000 değerini verip yeniden deneyin. Yada yanlızca OPTION.5=0 komutunu verebiliyorsanız verip öyle de deneyebilirsiniz. Şayet 5 nolu bit HIGH da kalıyor ise default olarak o pin TMR0 için harici giriş olarak kullanılıyor demektir. BUnu değiştirmek için 5. ci bitin sıfırlanması gerekir.

Ete

Foxer

Hocam değerli yorumun için teşekkür ederim fakat kodları şu şekilde düzeltmeme rağmen çıkış alamıyorum;
Alıntı Yap#include <508_2.h>
#BYTE OPTION_REG = 0XC0
void main()
{

set_tris_b(0b00101000);   
output_low(pin_b0);   
output_low(pin_b1);       
output_low(pin_b2);         
output_low(pin_b4);
   //Example blinking LED program
   while(true)
{

output_high(pin_b0);
output_high(pin_b1);
output_high(pin_b2);
output_high(pin_b4);
delay_ms(1000);
output_low(pin_b0);   
output_low(pin_b1);       
output_low(pin_b2);         
output_low(pin_b4);     
delay_ms(1000);
   }

}

Foxer


Foxer

Hocam galiba registeri üstteki kod ile ayarlayamıyormuşum şimdi şu şekilde düzelttikten sonra çalışmaya başladı. İlginiz için tekrar teşekkür ederim.
#include <508_2.h>
#BYTE OPTION_REG = 0xC0
#BYTE TRISGPIO = 0XFF
#define set_options(value)   {#ASM         \
                              MOVLW  value \
                              OPTION       \
                              #ENDASM}
void main()
{
set_options(0xC0);
set_tris_b(0b00101000);   
output_low(pin_b0);   
output_low(pin_b1);        
output_low(pin_b2);         
output_low(pin_b4); 
   //Example blinking LED program
   while(true)
{

output_high(pin_b0); 
output_high(pin_b1);
output_high(pin_b2);
output_high(pin_b4);
delay_ms(1000);
output_low(pin_b0);   
output_low(pin_b1);        
output_low(pin_b2);         
output_low(pin_b4);     
delay_ms(1000); 
   }

}

Powered by EzPortal