1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

giúp đỡ về pic

Thảo luận trong 'Phòng huấn luyện' bắt đầu bởi hoantien, 8 Tháng mười 2010.

  1. hoantien Member

    Số bài viết: 359
    Đã được thích: 1
    Điểm thành tích: 18
    trong mấy đoạn code thì thường em thấy có #FUSES, mà em xóa nó đi thì thấy củng chả ảnh hưởng gì tới chương trình, vậy cái cái đó là gì, viết gì ở sau nó

    mấy anh xe gium em doạn code:

    #include <16F877.h>
    #use delay(clock=20000000)
    #byte portc = 0x07
    void main ()
    {
    set_tris_c(1);
    setup_timer_2(T2_DIV_BY_1,99,1);
    setup_ccp1(CCP_PWM);
    setup_ccp2(CCP_PWM);
    while(1)
    {
    set_pwm2_duty (55);
    }
    }

    không hiểu vì sao em mô phỏng trên proteus mà nó hok chạy.
  2. cindar New Member

    Số bài viết: 105
    Đã được thích: 0
    Điểm thành tích: 0
    cái này bạn viết bằng CCS phải hem.
    cái đó thì mình chịu, ko giúp đc.Nếu bạn viết bằng HT thì may ra còn biết chút đỉnh để giúp đỡ (^_^)
    nhưng theo ý mình thì dòng #Fuses đó dùng để set các chế độ config ban đầu cho con PIC ( giống như set fuse bit của avr vậy đó)
  3. hoantien Member

    Số bài viết: 359
    Đã được thích: 1
    Điểm thành tích: 18
    Cái fuse này thấy mổi chương trình lại khác nhau không bik dường dấu mà lần hết! hic
  4. cindar New Member

    Số bài viết: 105
    Đã được thích: 0
    Điểm thành tích: 0
    cái đó dùng để set chế độ đó bạn.khi viết code có người dùng thạch anh nội, có người sài thạch anh ngoài nên khai báo chắc chắn phải khác nhau rồi, bạn nên xem data sheet để nắm rõ về nó và xem manual của trình biên dịch để biết cách khai báo.
    :D
    GoodLuck
  5. cindar New Member

    Số bài viết: 105
    Đã được thích: 0
    Điểm thành tích: 0
    ví dụ về đoạn code trên
    NOWDT tức là No watch dog timer // ko sài nó
    PUT : hem biết cái này.
    NOPROTECT : ko bật chức năng bảo vệ code, tức là ta có thể đọc lên từ chip và copy.
    HS : hem rõ (^_^)
    Nếu là HiTech C thì có lẽ mình sẽ biết.
  6. tintincom New Member

    Số bài viết: 18
    Đã được thích: 0
    Điểm thành tích: 0
    Chương trình của hoantien cần thiết lập TrisC là output! Bạn thử xem nhé! Còn PUT là Power Up Timer.
    HS là sử dụng thạch anh HightSpeed!
    Mấy cái fuse này phải khai báo nếu ko khi nạp vào chíp sẽ ko chạy! Còn với CCS hình như khi lập một project mới thì có khai báo sẵn rồi(hoặc mặc định) nên trong chương trình xóa cũng không ảnh hưởng! Và cuối cùng bạn hoantien cần cập nhật thư viện Pic16.dll cho protues mới mô phỏng được chế độ PWM! cái này seach trên google ấy mình ko biết gửi kèm file như thế nào(mình có file này)!
  7. hoantien Member

    Số bài viết: 359
    Đã được thích: 1
    Điểm thành tích: 18
    anh gửi file đó cho em nha
    email của em : hoantien05@gmail.com
  8. tintincom New Member

    Số bài viết: 18
    Đã được thích: 0
    Điểm thành tích: 0
  9. hoantien Member

    Số bài viết: 359
    Đã được thích: 1
    Điểm thành tích: 18
  10. tintincom New Member

    Số bài viết: 18
    Đã được thích: 0
    Điểm thành tích: 0
  11. hoantien Member

    Số bài viết: 359
    Đã được thích: 1
    Điểm thành tích: 18
    hok dc anh à, chắc cái protues có vấn đề rùi, em dùng chương trình và mạch anh đã sữa thì chạy ok, nhưng em cũng dùng chương trình đó vào cái mạch cũ của thì hok chạy dc, dùng dao dộng kí đo thì sóng ra đúng, chả hiểu nổi
  12. hoantien Member

    Số bài viết: 359
    Đã được thích: 1
    Điểm thành tích: 18
    em hỏi cái này:
    setup_timer_2(T2_DIV_BY_1,100,16)
    set_pwm1_duty (50);
    cái con số 100 là số dặt cho timer để đếm, 16 là hệ số chia, 50 là độ rộng xung ứng với số 100. dúng hok anh?
    em set chon số ở set_pwm1_duty lớn hơn 100 thì chạy đúng (dộng cơ chạy hết tốc độ, dao dộng kí hiện 1 đường thẳng)
    còn nếu em set < 100 thì dao dộng kí hiện đúng nhưng dộng cơ quay kì lắm( nhíc từng bước, thậm chí có 1 số lần hok quay mạc dù em để set_pwm1_duty (100)
  13. tintincom New Member

    Số bài viết: 18
    Đã được thích: 0
    Điểm thành tích: 0
    setup_timer_2(T2_DIV_BY_1,100,16)
    đúng là 100 là để cho timer đếm, nhưng timer 2 có 2 bộ chia Prescale và Postscale! Trong chế độ PWM chỉ dùng prescale! Em coi trong Datasheet ấy! T2_DIV_BY_1 là bộ chia Prescale=1, Prescale chỉ có 3 mức là 1,4,16! còn số 16 cuối cùng là của bộ chia Postscale! PWM dùng là 10 bit nên có thề set từ 0 đến 1023! CCS thì ko rõ lắm về khai báo này! xem thêm trong file Help nhé!

    Nếu set độ rộng lớn hơn chu kỳ thì không sao, nhưng nếu chỉnh chu kỳ nhỏ quá thì chỉnh độ rộng khó thấy trên Protues! Chương trình đáp ứng không kịp! Hoặc là tăng giá trị bộ chia lên tối đa hoặc chỉnh giá trị thạch anh khi mô phỏng là 1Hz!

Chia sẻ trang này