Thông báo

Collapse
No announcement yet.

[lỗi phát nốt nhạc bằng buzzer dùng pic16f877a]

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • [lỗi phát nốt nhạc bằng buzzer dùng pic16f877a]

    Chào các bác, hiện tại em định làm project về piano sử sử dụng pic16f877a để code các nốt nhạc.
    Về cơ bản thì em định phát bit 1 ra ngõ B1, theo một chu kỳ đã tính trước cứ mỗi nốt là có chu kỳ khác nhau. Các bác tham khảo code CCS bên dưới.
    Vấn đề là nếu em sử dụng duy nhất dòng lặp for đầu tiên thì nó vẫn chạy được, nhưng khi thêm cái for thứ 2 thì chương trình thực hiện for đầu tới for thứ 2, nhưng mà không quay về for thứ 1. Em thử xóa for đầu tiên để chạy for 2 thì được, nhưng hể cứ thêm for khác nào vào trước nó thì cứ bị lặp tới for thứ 2 mà thôi. Với dòng cảnh báo Condition Alway True trước vòng lặp for thứ 2. Mong mọi người giúp đỡ!
    [CODE]
    #include <16F877A.h>
    #device ADC=10

    #FUSES NOWDT //No Watch Dog Timer
    #FUSES NOBROWNOUT //No brownout reset
    #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

    #use delay(crystal=4M)
    #define BUZZER PIN_B1
    void main()
    {
    int i;
    while(TRUE)
    {
    //Not nhac thu 1
    for(i = 0; i < 31; i++)
    {
    OUTPUT_HIGH(BUZZER);
    DELAY_MS(31);
    OUTPUT_LOW(BUZZER);
    }
    delay_ms(1000);
    //Not nhac thu 2
    for(i = 0; i < 370; i++)
    {
    OUTPUT_HIGH(BUZZER);
    DELAY_US(2703);
    OUTPUT_LOW(BUZZER);
    }
    DELAY_MS(1000);
    }
    }

  • #2
    Chào bạn, lâu rồi không vào dd. với vấn đề của bạn, bạn đổi "int" thành "unsinged int" xem , 'F1' để xem chú thích về biến của ccs nhé.

    Comment

    Về tác giả

    Collapse

    Thanh Hùng Tìm hiểu thêm về Thanh Hùng

    Bài viết mới nhất

    Collapse

    Đang tải...
    X