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)
-   -   Giúp về Pic 12f629 (http://www.picvietnam.com/forum/showthread.php?t=8220)

boylikerock197 23-03-2011 11:59 AM

Giúp về Pic 12f629
 
Các bác cho em hỏi làm sao cấu hình trong ccs cho con pic 12f629 để dùng dao động nội, và giá trị dao động nội bằng bao nhiêu. Em xin cảm ơn

boylikerock197 23-03-2011 02:05 PM

Em cấu hình để pic dùng dao động nội như sau thì có đúng chưa, nhờ các bác giúp đỡ

#include <12F629.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOCPD //No EE protection
#FUSES NOPROTECT //Code not protected from reading
#FUSES MCLR //Master Clear pin enabled
#FUSES NOPUT //No Power Up Timer
#FUSES BROWNOUT //Reset when brownout detected
#FUSES BANDGAP_HIGH
#FUSES RESERVED //Used to set the reserved FUSE bits

#use delay(clock=4000000)

void main()
{

}

nhanh0112 23-03-2011 02:59 PM

Trích:

Nguyên văn bởi boylikerock197 (Post 42894)
Em cấu hình để pic dùng dao động nội như sau thì có đúng chưa, nhờ các bác giúp đỡ

#include <12F629.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOCPD //No EE protection
#FUSES NOPROTECT //Code not protected from reading
#FUSES MCLR //Master Clear pin enabled
#FUSES NOPUT //No Power Up Timer
#FUSES BROWNOUT //Reset when brownout detected
#FUSES BANDGAP_HIGH
#FUSES RESERVED //Used to set the reserved FUSE bits

#use delay(clock=4000000)

void main()
{

}

Bạn cấu hình như vậy ko chạy đc sao? Như vậy với CCS là đủ rồi

boylikerock197 23-03-2011 03:21 PM

Em viết chương trình để cho đèn led ở chân số 2 sáng nhưng không chạy
#include <12F629.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOCPD //No EE protection
#FUSES NOPROTECT //Code not protected from reading
#FUSES MCLR //Master Clear pin enabled
#FUSES NOPUT //No Power Up Timer
#FUSES BROWNOUT //Reset when brownout detected
#FUSES BANDGAP_HIGH
#FUSES RESERVED //Used to set the reserved FUSE bits

#use delay(clock=4000000)


void main()
{
while(1)
{
output_low(PIN_A0);//A0=GP0
}
}

nhanh0112 23-03-2011 09:29 PM

Trích:

Nguyên văn bởi boylikerock197 (Post 42899)
Em viết chương trình để cho đèn led ở chân số 2 sáng nhưng không chạy
#include <12F629.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOCPD //No EE protection
#FUSES NOPROTECT //Code not protected from reading
#FUSES MCLR //Master Clear pin enabled
#FUSES NOPUT //No Power Up Timer
#FUSES BROWNOUT //Reset when brownout detected
#FUSES BANDGAP_HIGH
#FUSES RESERVED //Used to set the reserved FUSE bits

#use delay(clock=4000000)


void main()
{
while(1)
{
output_low(PIN_A0);//A0=GP0
}
}

Bạn đã cấu hình phần cứng cho chân MCLR chưa? (Nối trở với VCC thì phải)

tdm 24-03-2011 10:21 AM

Trích:

Nguyên văn bởi boylikerock197 (Post 42899)
Em viết chương trình để cho đèn led ở chân số 2 sáng nhưng không chạy
#include <12F629.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOCPD //No EE protection
#FUSES NOPROTECT //Code not protected from reading
#FUSES MCLR //Master Clear pin enabled
#FUSES NOPUT //No Power Up Timer
#FUSES BROWNOUT //Reset when brownout detected
#FUSES BANDGAP_HIGH
#FUSES RESERVED //Used to set the reserved FUSE bits

#use delay(clock=4000000)


void main()
{
while(1)
{
output_low(PIN_A0);//A0=GP0
}
}

thiếu lệnh set_tris_a(0x00)
chân số 2 là PIN_A5 chứ không phải PIN_A0
#FUSES MCLR //dùng cấu hình này phải treo r=10k lên + nguồn

boylikerock197 25-03-2011 02:04 PM

Bây giờ em đang muốn lập trình để cho 1 đèn led đang tắt tăng độ sáng lên từ từ rồi sau đó tối đi từ từ nhưng không biết phải làm thế nào, nhờ các bác giúp đỡ

caremlanh 25-03-2011 02:28 PM

Trích:

Nguyên văn bởi boylikerock197 (Post 42970)
Bây giờ em đang muốn lập trình để cho 1 đèn led đang tắt tăng độ sáng lên từ từ rồi sau đó tối đi từ từ nhưng không biết phải làm thế nào, nhờ các bác giúp đỡ

dùng pwm đi bạn

boylikerock197 28-03-2011 11:27 AM

Trích:

Nguyên văn bởi caremlanh (Post 42972)
dùng pwm đi bạn

Nhưng mà con này không có chức năng này bác ơi

caremlanh 28-03-2011 05:16 PM

Trích:

Nguyên văn bởi boylikerock197 (Post 43105)
Nhưng mà con này không có chức năng này bác ơi

khổ thế, phần cứng ko hỗ trợ thì viết bằng phần mềm thôi.

boylikerock197 29-03-2011 09:32 AM

Tại em cũng mới tìm hiểu về pic và cũng chưa làm điều chế xung bao giời nên bác có code mẫu để em tham khảo thì tốt quá

caremlanh 29-03-2011 11:40 PM

con 12f629 này ít chân quá, có mỗi 8 chân
bạn tham khảo code tạo xung dùng ngắt Timer1 của mình viết xem :) biến th là độ rộng xung

Code:

#include<16F877A.h>
#include<def_877A.h>
#fuses NOWDT,HS
#use delay(clock=20000000)

int1 x;
int16 th,tl;

#INT_TIMER1
void ngat_timer1()
{
 
  x=rd0;
  if(x==1){set_timer1(th); }
  if(x==0){set_timer1(tl); }
  rd0=~rd0;
 
}

void main()
{
trisd=0x00;
rd0=0;

enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER1);

setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_4 ); //chu ky 52.4ms
th=0xA000; //do rong xung PWM
tl=0xFFFF-th;

while(true){}

}


boylikerock197 30-03-2011 10:21 AM

Theo như em hiểu thì đoạn code trên chỉ tạo xung cố định, như vậy thì không làm cho led tắt sáng từ từ được

caremlanh 06-04-2011 01:23 AM

1 Attachment(s)
đơn giản thôi bạn, thay đổi biến th là xong


Múi giờ GMT. Hiện tại là 11:32 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