View Full Version : Giúp về Pic 12f629
boylikerock197
23-03-2011, 11:59 AM
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
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
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)
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
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
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
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
#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
đơn giản thôi bạn, thay đổi biến th là xong
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.