Thông báo

Collapse
No announcement yet.

Các cao thủ về PIC ơi giúp mình với

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

  • Các cao thủ về PIC ơi giúp mình với

    Mình đang học về con pic16f877a và có viết một chương chỉnh nhỏ như thế này trên CCS v4.023:

    [*code] #include <16f877a.h>
    #include <def_877a.h>
    #device adc=8

    #FUSES NOWDT //No Watch Dog Timer
    #FUSES RC //Resistor/Capacitor Osc with CLKOUT
    #FUSES PUT //Power Up Timer
    #FUSES NOPROTECT //Code not protected from reading
    #FUSES NODEBUG //No Debug mode for ICD
    #FUSES BROWNOUT //Reset when brownout detected
    #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
    #FUSES NOCPD //No EE protection
    #FUSES NOWRT //Program memory not write protected

    #use delay(clock=20000000)
    #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)


    void main()
    {

    trisb = 0;
    while(1)
    {
    portb =11111111;
    delay_ms(250);
    portb = 0;
    delay_ms(250);
    }
    }
    [/code]
    mình đã dịch ra file hex thì ko thấy có lỗi gì nhưng khi mô phỏng trên protues thì khi trường hợp portb=11111111 có 3 chân là 3,4,5 ko cho led sáng. Không biết vì sao nữa. Các bạn có thể giúp mình chứ.
    Thanks trước nhé.
    Last edited by DUNG_HUT; 09-02-2010, 14:08.
    |

  • #2
    Nguyên văn bởi DUNG_HUT Xem bài viết
    Mình đang học về con pic16f877a và có viết một chương chỉnh nhỏ như thế này trên CCS v4.023:

    [*code] #include <16f877a.h>
    #include <def_877a.h>
    #device adc=8

    #FUSES NOWDT //No Watch Dog Timer
    #FUSES RC //Resistor/Capacitor Osc with CLKOUT
    #FUSES PUT //Power Up Timer
    #FUSES NOPROTECT //Code not protected from reading
    #FUSES NODEBUG //No Debug mode for ICD
    #FUSES BROWNOUT //Reset when brownout detected
    #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
    #FUSES NOCPD //No EE protection
    #FUSES NOWRT //Program memory not write protected

    #use delay(clock=20000000)
    #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)


    void main()
    {

    trisb = 0;
    while(1)
    {
    portb =11111111;
    delay_ms(250);
    portb = 0;
    delay_ms(250);
    }
    }
    [/code]
    mình đã dịch ra file hex thì ko thấy có lỗi gì nhưng khi mô phỏng trên protues thì khi trường hợp portb=11111111 có 3 chân là 3,4,5 ko cho led sáng. Không biết vì sao nữa. Các bạn có thể giúp mình chứ.
    Thanks trước nhé.
    thay dòng lệnh nàyortb =11111111;portb=0xff;
    |

    Comment


    • #3
      uh cảm ơn tdm đã giúp mình. Nhưng mà tdm ơi sao phải thay như thế thì nó mới hiển thị đúng nhỉ.
      |

      Comment


      • #4
        Để cấu hình I/O cho chân PIC thì có thanh ghi TRISA/B/C...
        PortB của pic còn là đầu vào analog nên trước khi dùng nó cần cấu hình xem nó là analog in hay digital I/O
        Mình ko rành về 877 mấy, bạn có thể xem datasheet. trong đó nói rất rõ
        Nếu mới bắt đầu học Pic thì nên học assembly trước, để nắm rõ cấu trúc phần cứng và các thanh ghi

        Comment


        • #5
          Nguyên văn bởi DUNG_HUT Xem bài viết
          uh cảm ơn tdm đã giúp mình. Nhưng mà tdm ơi sao phải thay như thế thì nó mới hiển thị đúng nhỉ.
          Nguyên văn bởi DUNG_HUT
          Mình đang học về con pic16f877a và có viết một chương chỉnh nhỏ như thế này trên CCS v4.023:

          [*code] #include <16f877a.h>
          #include <def_877a.h>
          #device adc=8

          #FUSES NOWDT //No Watch Dog Timer
          #FUSES RC //Resistor/Capacitor Osc with CLKOUT
          #FUSES PUT //Power Up Timer
          #FUSES NOPROTECT //Code not protected from reading
          #FUSES NODEBUG //No Debug mode for ICD
          #FUSES BROWNOUT //Reset when brownout detected
          #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
          #FUSES NOCPD //No EE protection
          #FUSES NOWRT //Program memory not write protected

          #use delay(clock=20000000)
          #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)


          void main()
          {

          trisb = 0;
          while(1)
          {
          portb=0xff //portb =11111111;
          delay_ms(250);
          portb = 0;
          delay_ms(250);
          }
          }
          |

          Comment

          Về tác giả

          Collapse

          DUNG_HUT Tìm hiểu thêm về DUNG_HUT

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

          Collapse

          Đang tải...
          X