Hỏi về eeprom pic16f877

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • dongphutho
    Nhập môn đệ tử
    • Oct 2008
    • 2

    #1

    Hỏi về eeprom pic16f877

    Có bạn nào biết cho mình hỏi?
    pic 16f877 có 256 bye vậy giá trị địa chỉ pic bắt đầu từ 0 và kết thúc ở 255, giá trị data la những so 8bit phải ko?

    set_tris_b(0);
    write_program_eeprom(0,0xf0);
    value= read_eeprom(0);
    output_b(valuve);

    Mình viết thử cách lưu và đọc chương trình từ eeprom nhưng mô phỏng không thấy bít xuất ra chân b(11110000)? bạn nào biết giải thích rùm mình nhé
  • lequocbao
    Đệ tử 6 túi
    • Oct 2008
    • 137

    #2
    Nguyên văn bởi dongphutho View Post
    Có bạn nào biết cho mình hỏi?
    pic 16f877 có 256 bye vậy giá trị địa chỉ pic bắt đầu từ 0 và kết thúc ở 255, giá trị data la những so 8bit phải ko?

    set_tris_b(0);
    write_program_eeprom(0,0xf0);
    value= read_eeprom(0);
    output_b(valuve);

    Mình viết thử cách lưu và đọc chương trình từ eeprom nhưng mô phỏng không thấy bít xuất ra chân b(11110000)? bạn nào biết giải thích rùm mình nhé
    write_program_eeprom(0,0xf0);----------->bạn thử thay = write_eeprom(0,0xf0);
    Bạn chịu khó post đầy đủ code lên,rùi mình nghâm cứu cho!
    A&A

    Comment

    • dongphutho
      Nhập môn đệ tử
      • Oct 2008
      • 2

      #3
      ý của mình là muốn ghi dữ liệu lên eeprom và đọc thử ra một port nào đó để kiểm tra lại xem đúng không.
      #include<16f877.h>
      #use delay(clock=20000000)
      int8 value;
      void main()
      {
      set_tris_c(0);
      write_program_eeprom(0,0xf0);
      value=read_eeprom(0);
      output_c(value);
      }

      Comment

      • lequocbao
        Đệ tử 6 túi
        • Oct 2008
        • 137

        #4
        Nguyên văn bởi dongphutho View Post
        ý của mình là muốn ghi dữ liệu lên eeprom và đọc thử ra một port nào đó để kiểm tra lại xem đúng không.
        #include<16f877.h>
        #use delay(clock=20000000)
        int8 value;
        void main()
        {
        set_tris_c(0);
        write_program_eeprom(0,0xf0);
        value=read_eeprom(0);
        output_c(value);
        }
        bít ngay mà!bạn phải để đoạn code của bạn vào vòng while(true) chứ bạn!
        A&A

        Comment

        • Bluetek212
          Đệ tử 1 túi
          • Sep 2008
          • 12

          #5
          bạn chạy mô phỏng bằng Protues phải ko!Nếu đúng vậy thì mô phỏng eeprom trong proteus chạy ko đúng đâu bạn nhé!mình cũng đã thử rồi, cứ nạp chạy thực tế, mô phỏng đôi khi không tin tưởng được đâu!chúc bạn thành công

          Comment

          • silvadk2
            Đệ tử 2 túi
            • Nov 2008
            • 42

            #6
            Chú ý việc đưa lệnh ghi và đọc eeprom vào vòng lặp while(), số lần ghi và đọc vào eeprom là có hạn

            Comment

            • nbb3i
              Đệ tử 2 túi
              • Aug 2008
              • 45

              #7
              write_program_eeprom(add,value) là dùng cho dòng 16bit
              bạn dùng hàm write_eeprom(add,value) giống như lequocbao nói ý.
              Và nên cẩn thận với ghi đọc eeprom vì nó chỉ ghi/xóa được vài trăm nghìn lần thôi à
              1ms ghi/đọc 1 lần thì chắc dùng được 1 ngày :-P
              http://group3i.net

              Comment

              Working...