PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   Ngắt RB mô phỏng bình thường nhưng mạch thực tếkhông chạy dc (http://www.picvietnam.com/forum/showthread.php?t=31408)

zhangthang 08-12-2012 09:26 AM

Ngắt RB mô phỏng bình thường nhưng mạch thực tếkhông chạy dc
 
1 Attachment(s)
mình có 1 chương trình, khi mô phỏng thì bình thường nhưng thử cắm mạch thì ngắt RB ko hoạt động, nhờ mọi người chỉ giúp
Code:

#include <16f877a.h>
#device *=16
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use rs232 (baud=9600 , parity=n , xmit=pin_C6 , rcv=pin_C7,bits=9 )

int khoang;
int tang;
int step=0;
int khoanggui=3;
int tanggui=3;
int khoangnhan=1;
int tangnhan=1;
int tran1=1;
int tran2=1;
int tran3=1;
char daygui='b';
char daynhan='a';
int trangthai=1;
char buffer[8];
int i;

#INT_RB
void cn_khoang()
{

if (input(pin_B7))
{
khoang=1;
}

if (input(pin_B6))
{
khoang=2;
}

if (input(pin_B5))
{
khoang=3;
}

if(input(pin_B4))
{
step++;
if(step==2)
{
step=0;
trangthai=2;
}

}

}

#INT_RDA
void nhan_lenh()
{

buffer[i]=getc();
i++;

if (buffer[0]=='1')
{
tangnhan=1;
}
else if (buffer[0]=='2')
{
tangnhan=2;
}
else if (buffer[0]=='3')
{
tangnhan=3;
}

if (buffer[1]=='1')
{
khoangnhan=1;
}
else if (buffer[1]=='2')
{
khoangnhan=2;
}
else if (buffer[1]=='3')
{
khoangnhan=3;
}

daynhan=buffer[2];

if (buffer[3]=='1')
{
tanggui=1;
}
else if (buffer[3]=='2')
{
tanggui=2;
}
else if (buffer[3]=='3')
{
tanggui=3;
}

if (buffer[4]=='1')
{
khoanggui=1;
}
else if (buffer[4]=='2')
{
khoanggui=2;
}
else if (buffer[4]=='3')
{
khoanggui=3;
}

daygui=buffer[5];

if (i==6)
{
i=0;
trangthai=1;
tran1=1;
tran2=1;
tran3=1;
}

}

void main()
{
setup_ccp1(ccp_pwm);
setup_ccp2(ccp_pwm);
enable_interrupts ( INT_RB ) ;
enable_interrupts ( INT_RDA ) ;
enable_interrupts ( GLOBAL ) ;
setup_timer_2(t2_div_by_16,255,16);
buffer[0]='1';
buffer[1]='1';
buffer[2]='a';
buffer[3]='3';
buffer[4]='3';
buffer[5]='b';
while(true)
{
  if (trangthai==0)
  {
  set_pwm1_duty(0);
 
  }
  if (trangthai==1)
  {
 
      if(step==0)
      {
        if(khoang<khoangnhan)
        {
            output_high(pin_B1);
            set_pwm1_duty(1000);
            }
        if (khoang>khoangnhan)
        {
            output_low(pin_B1);
            set_pwm1_duty(1000);
        }
        if (khoang==khoangnhan)
        {
            set_pwm1_duty(0);
            if (tran1==1)
            {
            putc('s');
            putc(buffer[0]);
            putc(buffer[2]);
            putc(buffer[3]);
            putc(buffer[5]);
            tran1=0;
            }
        }
      }
      if (step==1)
      {
        if (khoang==khoanggui)
        {
            set_pwm1_duty(0);
            if (tran2==1)
            {
            putc('c');
            tran2=0;
            }
        }
        if (khoang<khoanggui)
        {
            output_high(pin_B1);
            set_pwm1_duty(1000);
        }
        if (khoang>khoanggui)
        {
            output_low(pin_B1);
        }
      }
  }
  if (trangthai==2)
  {
      if (khoang>1)
      {
        output_low(pin_B1);
        set_pwm1_duty(1000);
      }
      else
      {
        set_pwm1_duty(0);
        if (tran3==1)
        {
            putc('l');
            tran3=0;
            trangthai=0;
        }
      }
  }
}
}

http://i1295.photobucket.com/albums/...g/untitled.png

tdm 08-12-2012 04:14 PM

Trích:

Nguyên văn bởi zhangthang (Post 79895)
mình có 1 chương trình, khi mô phỏng thì bình thường nhưng thử cắm mạch thì ngắt RB ko hoạt động, nhờ mọi người chỉ giúp
Code:

#include <16f877a.h>
#device *=16
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use rs232 (baud=9600 , parity=n , xmit=pin_C6 , rcv=pin_C7,bits=9 )

int khoang;
int tang;
int step=0;
int khoanggui=3;
int tanggui=3;
int khoangnhan=1;
int tangnhan=1;
int tran1=1;
int tran2=1;
int tran3=1;
char daygui='b';
char daynhan='a';
int trangthai=1;
char buffer[8];
int i;

#INT_RB
void cn_khoang()
{

if (input(pin_B7))
{
khoang=1;
}

if (input(pin_B6))
{
khoang=2;
}

if (input(pin_B5))
{
khoang=3;
}

if(input(pin_B4))
{
step++;
if(step==2)
{
step=0;
trangthai=2;
}

}

}

#INT_RDA
void nhan_lenh()
{

buffer[i]=getc();
i++;

if (buffer[0]=='1')
{
tangnhan=1;
}
else if (buffer[0]=='2')
{
tangnhan=2;
}
else if (buffer[0]=='3')
{
tangnhan=3;
}

if (buffer[1]=='1')
{
khoangnhan=1;
}
else if (buffer[1]=='2')
{
khoangnhan=2;
}
else if (buffer[1]=='3')
{
khoangnhan=3;
}

daynhan=buffer[2];

if (buffer[3]=='1')
{
tanggui=1;
}
else if (buffer[3]=='2')
{
tanggui=2;
}
else if (buffer[3]=='3')
{
tanggui=3;
}

if (buffer[4]=='1')
{
khoanggui=1;
}
else if (buffer[4]=='2')
{
khoanggui=2;
}
else if (buffer[4]=='3')
{
khoanggui=3;
}

daygui=buffer[5];

if (i==6)
{
i=0;
trangthai=1;
tran1=1;
tran2=1;
tran3=1;
}

}

void main()
{
setup_ccp1(ccp_pwm);
setup_ccp2(ccp_pwm);
enable_interrupts ( INT_RB ) ;
enable_interrupts ( INT_RDA ) ;
enable_interrupts ( GLOBAL ) ;
setup_timer_2(t2_div_by_16,255,16);
buffer[0]='1';
buffer[1]='1';
buffer[2]='a';
buffer[3]='3';
buffer[4]='3';
buffer[5]='b';
while(true)
{
  if (trangthai==0)
  {
  set_pwm1_duty(0);
 
  }
  if (trangthai==1)
  {
 
      if(step==0)
      {
        if(khoang<khoangnhan)
        {
            output_high(pin_B1);
            set_pwm1_duty(1000);
            }
        if (khoang>khoangnhan)
        {
            output_low(pin_B1);
            set_pwm1_duty(1000);
        }
        if (khoang==khoangnhan)
        {
            set_pwm1_duty(0);
            if (tran1==1)
            {
            putc('s');
            putc(buffer[0]);
            putc(buffer[2]);
            putc(buffer[3]);
            putc(buffer[5]);
            tran1=0;
            }
        }
      }
      if (step==1)
      {
        if (khoang==khoanggui)
        {
            set_pwm1_duty(0);
            if (tran2==1)
            {
            putc('c');
            tran2=0;
            }
        }
        if (khoang<khoanggui)
        {
            output_high(pin_B1);
            set_pwm1_duty(1000);
        }
        if (khoang>khoanggui)
        {
            output_low(pin_B1);
        }
      }
  }
  if (trangthai==2)
  {
      if (khoang>1)
      {
        output_low(pin_B1);
        set_pwm1_duty(1000);
      }
      else
      {
        set_pwm1_duty(0);
        if (tran3==1)
        {
            putc('l');
            tran3=0;
            trangthai=0;
        }
      }
  }
}
}

http://i1295.photobucket.com/albums/...g/untitled.png

dùng4 con r 10k nối chân rb4...rb7 xuống mass.


Múi giờ GMT. Hiện tại là 12:22 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam