Thông báo

Collapse
No announcement yet.

Ghi/đọc vào eeprom của Pic 16f877a với CCS

Collapse
This topic is closed.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Ghi/đọc vào eeprom của Pic 16f877a với CCS

    Chào mọi người,

    Em ghi/đọc giá trị một biến ( volume) vào eeprom của pic 16F877A.Khi mô phỏng chạy oki, nhưng khi tắt đi/bật lên ( giả vờ mất điện ) thì chương trình ko nhớ gì tới số đã lưu trước đó mà luôn trả về giá trị là 0000. ( view 0000 )

    Em nghĩ nó phải nhớ cái số lưu cuối cùng chứ?

    thanks all,
    Trình dịch: PIC C Compiler
    Mô phỏng: ISIS 7 Professional ( bản 7.5 )
    //========================================

    Code:

    #define LAST_VOLUME 0 // Location in EEPROM
    int16 volume;

    Ghi đọc vào eeprom
    write_eeprom(LAST_VOLUME,volume);
    volume = read_EEPROM (LAST_VOLUME);
    Biến volume tăng lên khi ta ấn nút
    if((!input(Pin_A1)))volume++;
    while((!input(Pin_A1))) ;
    Rồi hiển thị lên LCD
    lcd_putcmd(0x80);
    lcd_putchar("view");
    lcd_putcmd(0x88);
    hienthi(volume);
    Last edited by luongthitu; 30-10-2012, 11:20.

  • #2
    hi ..Em chỉnh được rồi
    Trong hàm main ( trước lệnh đọc/ghi ) ta lấy giá trị volume ra trước

    volume = read_EEPROM (LAST_VOLUME);

    Rồi trong hàm while hãy ghi/đọc.

    Tiện đây cho em hỏi:

    - Tại sao trình mô phỏng ISIS 7 Professional ( 7.5) khi em thu nhỏ xuống thanh tabar thì khi click bật lên là nó out lun nhỉ?
    - Em chạy trên win7
    Last edited by luongthitu; 30-10-2012, 12:03.

    Comment


    • #3
      Bạn read_EEPROM ở vị trí ô nhớ nào?(mình nói ô nhớ cho dể hiểu..)
      Như vd của bạn: volume = read_EEPROM (LAST_VOLUME); nó hiểu bạn đọc giá trị volume ở ô nhớ LAST_VOLUME
      Bạn sửa lại như sau:volume=READ_EEPROM(1); // nó đọc giá trị bạn lưu ở ô nhớ "1"
      tương tự bạn ghi vào eeprom như sau: WRITE_EEPROM(1,volume);// ghi giá trị volume vào ô nhớ "1"
      Cả thế giới đều nằm trong cuốn "Tự điển" do đó tôi rất thích điện tử

      Comment


      • #4
        Cám ơn bác dtbinhtomay2 .

        trong hàm em đã định nghĩa ô nhớ rồi: #define LAST_VOLUME 0 // Location in EEPROM ( dòng trên cùng đó )

        Comment


        • #5
          Uh, mắt mũi tèm nhem

          Cò về proteus của bạn thu nhỏ xuống, bật lên nó out luôn có thể bị lỗi ct do lỗi *****. bạn cài bản 7.9 đi, mình cũng đang xài bản 7.9 trên win 7 không thấy lỗi gì.
          Cả thế giới đều nằm trong cuốn "Tự điển" do đó tôi rất thích điện tử

          Comment


          • #6
            mô phỏng khi bật tắt bằng hình tam giác và hình vuông ở góc dưới bên trái thì nó ko nhớ là phải rồi, đó là khởi động và tắt mô phỏng chứ ko phải tắt nguồn.

            Comment


            • #7
              Nguyên văn bởi dtbinhtomay2 Xem bài viết
              Uh, mắt mũi tèm nhem

              Cò về proteus của bạn thu nhỏ xuống, bật lên nó out luôn có thể bị lỗi ct do lỗi *****. bạn cài bản 7.9 đi, mình cũng đang xài bản 7.9 trên win 7 không thấy lỗi gì.
              Bác cho em xin link down và "thuốc" ?

              Comment


              • #8
                Code:
                .....
                #define LAST_VOLUME 10 
                
                void main()
                {
                     // Ghi vao o nho 0x00 cua EEPROM gia tri 100
                     Write_EEPROM(0x00,100);
                
                     // Doc gia tri o nho 0x00 cua EEPROM
                     int value;
                     value = Read_EEPROM(0x00);
                }

                Comment


                • #9
                  Mấy người thích mô phỏng thì các bạn thành viên trả lời làm gì cho tốn thời gian, mô phỏng đẻ ra hàng tỷ vấn đề không liên quan. Luồng đóng tại đây.
                  Phần mềm tự do hoặc không dùng máy tính nữa !.

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...
                  X