|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
15-02-2012, 11:24 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Sep 2011
Bài gửi: 1
: |
Cần Giúp Về Pic 18F4550
Mình đang học về Pic8f4550, thầy của mình có ra bài tập là sử dụng bộ timer0 để cho các led ở các chân a0, b0, c0, d0, e0 nhấp nháy với thời gian là 1s! Mình đã tham khảo nhiều trên mạng mà không hiếu sao mình vẩn không thành công, mong đc các bạn giúp đở.
Đây là code của mình: #include "D:\DO AN DO LUONG DIEU KHIEN TU DONG\baitap3\main.h" int16 count=0; int8 a=0; #int_TIMER0 void TIMER0_isr(void) { ++count; clear_interrupt(int_timer0); set_timer0(56); if(count == 25000) { count =0; a=~a; } } void main() { setup_adc_ports(NO_ANALOGS|VSS_VDD); setup_adc(ADC_OFF); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_wdt(WDT_OFF); setup_timer_0(RTCC_INTERNAL); setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); setup_timer_2(T2_DIV_BY_16,255,1); setup_timer_3(T3_DISABLED|T3_DIV_BY_1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); enable_interrupts(INT_TIMER0); enable_interrupts(GLOBAL); //Setup_Oscillator parameter not selected from Intr Oscillotar Config tab // TODO: USER CODE!! set_tris_a(0); set_tris_b(0); set_tris_c(0); set_tris_d(0); set_tris_e(0); set_timer0(56); while(1) { output_a(a); output_b(a); output_c(a); output_d(a); output_e(a); } } |
17-02-2012, 02:09 PM | #2 | |
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
: |
Trích:
bạn khai báo:setup_timer_0(RTCC_INTERNAL);//thì nó mặc định là timer 16bit. theo chương trình bạn viết (giả sử thạch anh 20M) thì : T(a đổi trạng thái)=(4/20)*(65536-56)*25000 sau khoảng thời gian đó thì các port mới thay đổi giá trị.
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề. |
|
17-02-2012, 04:05 PM | #3 |
Nhập môn đệ tử
Tham gia ngày: Oct 2011
Bài gửi: 1
: |
Bạn lưu ý 3 điểm sau:
-Config của 18f4550 phải phù hợp với giá trị thạch anh thực tế để dao động là 48MHZ -Giá trị delay là 48M chứ ko phải 20M ( Pic này có bộ nhân tần số, con này giao tiếp USB nên mới cần tôc đọ đó) -Giá trị cài đặt cho Timer : X= Tckl*2^(so bit)*(số lần chia) - (giá trị cần reset Timer) (micro giây) thời gian chu kì lệnh: Tckl=4*chu kì xung=4/48 (us) |
|
|