isoment01
Üye
- Katılım
- 26 Haz 2016
- Mesajlar
- 197
- Puanları
- 1
- Yaş
- 32
merhaba, pic 18f4680 de timer0 kullanarak ledi 0.5 sn acık 0.5 sn kapalı tutan bır kod yazdım fakat kodum calısmıyor. timer0(60) hesapladım fakat ledim tam 2dk47sn açık 2dk247 sn kapalı kalıyor. degerlerı degıstırmem de bır etkı etmıyor. bunun sebebı ne olabılır yazdıgım kodlar da burada yardımcı olabılır mısınız ?
hesabım da söyle : 10 e6 x256x(256-x)=0.05 x burdan 60 cıkıyor. pic im 10 bitlik bir pic
#device PIC18F4680
#include <18f4680.h>
#fuses xt,nowdt,noprotect, nobrownout, nolvp, noput, nowrt, nocpd
#use delay (clock=4000000)
int i=0;
#int_timer0
void timer0_kesme()
{
set_timer0(60);
i++;
if(i==10)
output_high(pin_b0);
if(i==20)
{
output_low(pin_b0);
i=0;
}
}
void main()
{
setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
set_tris_b(0x00);
output_b(0x00);
setup_timer_0( RTCC_INTERNAL | RTCC_DIV_256 );
set_timer0(60);
enable_interrupts(INT_timer0);
enable_interrupts(GLOBAL);
while(1);
}
hesabım da söyle : 10 e6 x256x(256-x)=0.05 x burdan 60 cıkıyor. pic im 10 bitlik bir pic
#device PIC18F4680
#include <18f4680.h>
#fuses xt,nowdt,noprotect, nobrownout, nolvp, noput, nowrt, nocpd
#use delay (clock=4000000)
int i=0;
#int_timer0
void timer0_kesme()
{
set_timer0(60);
i++;
if(i==10)
output_high(pin_b0);
if(i==20)
{
output_low(pin_b0);
i=0;
}
}
void main()
{
setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
set_tris_b(0x00);
output_b(0x00);
setup_timer_0( RTCC_INTERNAL | RTCC_DIV_256 );
set_timer0(60);
enable_interrupts(INT_timer0);
enable_interrupts(GLOBAL);
while(1);
}