PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   các pro đâu cả rồi (http://www.picvietnam.com/forum/showthread.php?t=6735)

pic_13 26-07-2010 10:51 AM

các pro đâu cả rồi
 
các pác thử xem cái code dưới của em sai cái gì mà chạy sai vậy ta.
bài này đơn giản chỉ là em dùng ngắt time2 để các led nháy đồng thời trên cả
2 cổng b và c


================================================== =====
#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
int x=0,y=0,count=0;
// chuong trinh ngat
#int_timer2
void interrupts_timer2(x)
{x++;if(x==5)x=1;set_timer2(0);
switch(x)
{case 1: portb=0xaa;break;
case 2: portb=0x55;break;
case 3: portb=0xe7;break;
case 4: portb=0x18;break;
}
}
void main()
{
trisb=0x00;
trisc=0x00;
portb=0x00;
portc=0x00;
x=0;
PORT_b_PULLUPS(1);
SETUP_TIMER_2(T2_DIV_BY_16,256,16);//CHO PHEP NGAT SAU 65536US
ENABLE_INTERRUPTS(INT_TIMER2);
ENABLE_INTERRUPTS(global);
delay_us(65536);
while(true)
{portc=0xaa;delay_us(65536);
portc=0x55;delay_us(65536);
portc=0xe7;delay_us(65536);
portc=0x18;delay_us(65536);
}
}

pic_13 26-07-2010 10:38 PM

Trích:

Nguyên văn bởi pic_13 (Post 37562)
các pác thử xem cái code dưới của em sai cái gì mà chạy sai vậy ta.
bài này đơn giản chỉ là em dùng ngắt time2 để các led nháy đồng thời trên cả
2 cổng b và c


================================================== =====
#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
int x=0,y=0,count=0;
// chuong trinh ngat
#int_timer2
void interrupts_timer2(x)
{x++;if(x==5)x=1;set_timer2(0);
switch(x)
{case 1: portb=0xaa;break;
case 2: portb=0x55;break;
case 3: portb=0xe7;break;
case 4: portb=0x18;break;
}
}
void main()
{
trisb=0x00;
trisc=0x00;
portb=0x00;
portc=0x00;
x=0;
PORT_b_PULLUPS(1);
SETUP_TIMER_2(T2_DIV_BY_16,256,16);//CHO PHEP NGAT SAU 65536US
ENABLE_INTERRUPTS(INT_TIMER2);
ENABLE_INTERRUPTS(global);
delay_us(65536);
while(true)
{portc=0xaa;delay_us(65536);
portc=0x55;delay_us(65536);
portc=0xe7;delay_us(65536);
portc=0x18;delay_us(65536);
}
}

chán diễn đàn quá ,diễn đàn đông người vậy mà chả ai chịu giúp em

nbb3i 27-07-2010 09:36 AM

Trích:

Nguyên văn bởi pic_13 (Post 37575)
chán diễn đàn quá ,diễn đàn đông người vậy mà chả ai chịu giúp em

em chán thì đi chỗ khác chơi đi :beer:

pic_13 28-07-2010 10:07 AM

Trích:

Nguyên văn bởi nbb3i (Post 37578)
em chán thì đi chỗ khác chơi đi :beer:

đây đúng là pro nè. chỉ có pro mới trả lời như vậy

manhdktd 28-07-2010 10:37 AM

Trích:

Nguyên văn bởi pic_13 (Post 37562)
các pác thử xem cái code dưới của em sai cái gì mà chạy sai vậy ta.
bài này đơn giản chỉ là em dùng ngắt time2 để các led nháy đồng thời trên cả
2 cổng b và c


================================================== =====
#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
int x=0,y=0,count=0;
// chuong trinh ngat
#int_timer2
void interrupts_timer2(x)
{x++;if(x==5)x=1;set_timer2(0);
switch(x)
{case 1: portb=0xaa;break;
case 2: portb=0x55;break;
case 3: portb=0xe7;break;
case 4: portb=0x18;break;
}
}
void main()
{
trisb=0x00;
trisc=0x00;
portb=0x00;
portc=0x00;
x=0;
PORT_b_PULLUPS(1);
SETUP_TIMER_2(T2_DIV_BY_16,256,16);//CHO PHEP NGAT SAU 65536US
ENABLE_INTERRUPTS(INT_TIMER2);
ENABLE_INTERRUPTS(global);
delay_us(65536);
while(true)
{portc=0xaa;delay_us(65536);
portc=0x55;delay_us(65536);
portc=0xe7;delay_us(65536);
portc=0x18;delay_us(65536);
}
}

mô phỏng có hện tượng gì?
bạn thử set_timer2(0) trong hàm main xem sao?

pic_13 28-07-2010 05:01 PM

Trích:

Nguyên văn bởi manhdktd (Post 37603)
mô phỏng có hện tượng gì?
bạn thử set_timer2(0) trong hàm main xem sao?

thanks anh nhiều nha!
cho em hỏi lun anh xem cái code băm xung của em này sai chỗ nào mà không thấy
xung ra vậy anh.
====================================
#include<16f877a.h>
#fuses hs,NOWDT,PUT
#use delay(clock=20000000)
#int_timer2
void interrupts_timer2()
{set_timer2(0);
set_pwm1_duty(64);
}
main()
{
SET_TRIS_c(0);
output_c(0);
setup_timer_2(T2_DIV_BY_16,239,1);
set_timer2(0);
setup_ccp1(CCP_PWM);
while(1) {}
}
========================================

bebungbu 29-07-2010 10:00 AM

Phần chứng của bạn có chớp led được không vậy?
Bạn muốn chương trình của mình chạy như thế nào, nói rõ cho mọi người dễ hiểu nhe.

Trích:

Nguyên văn bởi pic_13 (Post 37613)
thanks anh nhiều nha!
cho em hỏi lun anh xem cái code băm xung của em này sai chỗ nào mà không thấy
xung ra vậy anh.
====================================
#include<16f877a.h>
#fuses hs,NOWDT,PUT
#use delay(clock=20000000)
#int_timer2
void interrupts_timer2()
{set_timer2(0);
set_pwm1_duty(64);
}
main()
{
SET_TRIS_c(0);
output_c(0);
setup_timer_2(T2_DIV_BY_16,239,1);
set_timer2(0);
setup_ccp1(CCP_PWM);
while(1) {}
}
========================================


pic_13 29-07-2010 11:53 PM

Trích:

Nguyên văn bởi bebungbu (Post 37621)
Phần chứng của bạn có chớp led được không vậy?
Bạn muốn chương trình của mình chạy như thế nào, nói rõ cho mọi người dễ hiểu nhe.

bài của em đơn giản chỉ là đưa xung ra chân cc1 thôi vậy mà chả có xung ra
pác xem code của em sai chỗ nào ,thì giúp em với.

nhamdtk4 30-07-2010 12:39 AM

Thử code này rồi tìm xem tại sao của bạn không chạy.
Code:

#include <16f877a.h>
#fuses xt,nowdt,nolvp
#use delay(clock=4M)

  int duty;
void main()
{
  setup_ccp1(CCP_PWM);   
  setup_ccp2(CCP_PWM);   
  setup_timer_2(T2_div_by_4,127,1);   
 
  while(true)
  {
      set_pwm1_duty(duty);
      set_pwm2_duty(255-duty);       
      duty++;
      delay_ms(50); 
  }
}


manhdktd 30-07-2010 05:49 AM

Trích:

Nguyên văn bởi pic_13 (Post 37613)
thanks anh nhiều nha!
cho em hỏi lun anh xem cái code băm xung của em này sai chỗ nào mà không thấy
xung ra vậy anh.
====================================
#include<16f877a.h>
#fuses hs,NOWDT,PUT
#use delay(clock=20000000)
#int_timer2
void interrupts_timer2()
{set_timer2(0);
set_pwm1_duty(64);
}
main()
{
SET_TRIS_c(0);
output_c(0);
setup_timer_2(T2_DIV_BY_16,239,1);
set_timer2(0);
setup_ccp1(CCP_PWM);
while(1) {}
}
========================================

chưa cho phép ngắt toàn cục,ngắt timer2
nên không có xung ra là phải.

pic_13 30-07-2010 11:27 AM

Trích:

Nguyên văn bởi manhdktd (Post 37637)
chưa cho phép ngắt toàn cục,ngắt timer2
nên không có xung ra là phải.

pác ơi em vẫn chưa thấy xung ra .
hay tại mạch em mắc sai nhỉ
em chỉ mắc một con oscilloscope vào 2 chân cpp1 và cpp2 .sau đó nạp chíp
nhưng chả thấy xung ra

pic_13 30-07-2010 11:30 AM

Trích:

Nguyên văn bởi nhamdtk4 (Post 37634)
Thử code này rồi tìm xem tại sao của bạn không chạy.
Code:

#include <16f877a.h>
#fuses xt,nowdt,nolvp
#use delay(clock=4M)

  int duty;
void main()
{
  setup_ccp1(CCP_PWM);   
  setup_ccp2(CCP_PWM);   
  setup_timer_2(T2_div_by_4,127,1);   
 
  while(true)
  {
      set_pwm1_duty(duty);
      set_pwm2_duty(255-duty);       
      duty++;
      delay_ms(50); 
  }
}


pác ơi em nạp code của bác vào chíp nhưng vẫn không thấy xung ra là sao nhỉ.
trong mạch em chỉ mắc thử 1 con oscillscope vào 2 chân ccp1 và cpp2
vậy mà chả thấy xung ra

manhdktd 30-07-2010 12:00 PM

1 Attachment(s)
Bác làm mạch thật hay mô phỏng trên proteus.
nếu mô phỏng trên proteus thì 1 số bản proteus không thể mô phỏng được pwm.trước mình cũng bị tình trạng này.cái này thấy bảo là nhà sản xuất nói vầy.
down bản này về rồi đưa vào ổ cài.

nhamdtk4 30-07-2010 03:57 PM

Nghiêm trọng nhỉ code chạy trên cả mạch thật lẫn mô phỏng rồi mà bạn làm ko chạy đc.

pic_13 31-07-2010 10:58 AM

Trích:

Nguyên văn bởi manhdktd (Post 37641)
Bác làm mạch thật hay mô phỏng trên proteus.
nếu mô phỏng trên proteus thì 1 số bản proteus không thể mô phỏng được pwm.trước mình cũng bị tình trạng này.cái này thấy bảo là nhà sản xuất nói vầy.
down bản này về rồi đưa vào ổ cài.

pác à trong ổ cài của em có cái đấy rồi.
thôi pác đang dùng bản proteu nào thi cho em vậy.
thank pác nhiếu


Múi giờ GMT. Hiện tại là 01:53 PM.

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