Thông báo

Collapse
No announcement yet.

EEPROM và ROM của PIC có khác nhau không?

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

  • EEPROM và ROM của PIC có khác nhau không?

    Nguyên văn bởi phamthaihoa Xem bài viết
    Kiến trúc Harvard, tập lệnh RISC (Reduced instruction set computer)

    More info:
    http://vi.wikipedia.org/wiki/RISC
    http://en.wikipedia.org/wiki/Harvard_architecture
    Cho em hỏi câu này hơi lúa một chút nha , eeprom va rom trong pic co giống nhau kô? nếu co khác thì khác nhau thế nào?
    Em sử dụng ccs , khi biên dich em thay vùng rom có sử dụng 8% , nhưng trong code em viết kô hề có việc ghi vào eeprom ..
    Và trong ccs muốn biên dịch file hex để nạp riêng cho eeprom phải làm sao hả anh ? ( em chỉ muốn nạp riêng một số giá trị vào trực tiếp vùng nhớ của eeprom)
    Mong các anh chỉ giúp
    Thanks for all !

  • #2
    Nguyên văn bởi LUUTINH Xem bài viết
    Cho em hỏi câu này hơi lúa một chút nha , eeprom va rom trong pic co giống nhau kô? nếu co khác thì khác nhau thế nào?
    Em sử dụng ccs , khi biên dich em thay vùng rom có sử dụng 8% , nhưng trong code em viết kô hề có việc ghi vào eeprom ..
    Và trong ccs muốn biên dịch file hex để nạp riêng cho eeprom phải làm sao hả anh ? ( em chỉ muốn nạp riêng một số giá trị vào trực tiếp vùng nhớ của eeprom)
    Mong các anh chỉ giúp
    Thanks for all !
    EEPROM dùng để chỉ data EEPROM (EEPROM dùng cho dữ liệu, là vùng nhớ không bị mất nội dung khi cấp điện, ghi/xóa bằng điện). Với PIC16 hay PIC18, vùng nhớ này là các ô nhớ 8-bit.

    ROM (hay chính xác hơn là flash ROM) là vùng nhớ chứa chương trình của PIC. Với các PIC lõi 14-bit (đa số PIC16) thì mỗi ô nhớ trong vùng này dài 14 bit, còn với các PIC18 thì mỗi ô nhớ dài 16 bit.

    Do đó, EEPROM và (flash) ROM hoàn toàn khác nhau. Khi bạn viết chương trình, bạn đang sử dụng vùng (flash) ROM, do đó CCS C báo rằng bạn sử dụng 8% dung lượng (flash) ROM là bình thường.

    Để tạo ra các giá trị cụ thể cho một ô/vùng nhớ nào đó trong EEPROM, bạn tham khảo tài liệu hướng dẫn của CCS C về #rom (trong mục nói về Preprocessor Directive). Nếu bạn chưa biết link để download tài liệu hướng dẫn của CCS C, nó đây: http://www.ccsinfo.com/downloads/CReferenceManual.pdf.

    Thân,
    Biển học mênh mông, sức người có hạn

    Comment


    • #3
      Nguyên văn bởi namqn Xem bài viết
      EEPROM dùng để chỉ data EEPROM (EEPROM dùng cho dữ liệu, là vùng nhớ không bị mất nội dung khi cấp điện, ghi/xóa bằng điện). Với PIC16 hay PIC18, vùng nhớ này là các ô nhớ 8-bit.

      ROM (hay chính xác hơn là flash ROM) là vùng nhớ chứa chương trình của PIC. Với các PIC lõi 14-bit (đa số PIC16) thì mỗi ô nhớ trong vùng này dài 14 bit, còn với các PIC18 thì mỗi ô nhớ dài 16 bit.

      Do đó, EEPROM và (flash) ROM hoàn toàn khác nhau. Khi bạn viết chương trình, bạn đang sử dụng vùng (flash) ROM, do đó CCS C báo rằng bạn sử dụng 8% dung lượng (flash) ROM là bình thường.

      Để tạo ra các giá trị cụ thể cho một ô/vùng nhớ nào đó trong EEPROM, bạn tham khảo tài liệu hướng dẫn của CCS C về #rom (trong mục nói về Preprocessor Directive). Nếu bạn chưa biết link để download tài liệu hướng dẫn của CCS C, nó đây: http://www.ccsinfo.com/downloads/CReferenceManual.pdf.

      Thân,
      Em đã đọc và cũng tạm hiểu , nhưng hiện giờ viết vẫn chưa được , đúng là nó cho phép lồng data vào trong file hex, và có thể viết data vào eeprom như ví dụ của ccs
      Code:
      #rom  0x2100={1,2,3,4,5,6,7,8}
      Em cũng đã mò hoài nhưng vẫn kô hiểu được cái chỉ thị tiền xử lý này nó làm cái gì .. em mò mẫm viết theo nhưng kết qua đọc từ eeprom ra chẳng thấy có sự thay đổi gì ... hic..hic.. viết kô được xem như giải thuật của em bị phá sản hic..hic...
      Các anh giúp em với ...
      Thanks for all !

      Comment


      • #4
        Code CCS su dung bộ EEPROM trong chip.
        Code:
        #include <16F877.h>
        #fuses HS,NOWDT,NOPROTECT,NOLVP
        #use delay(clock=20000000)
        #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
        
        #include "stdlib.h"
        #include <input.c>
        #include "limits.h"
        // The following initializes the first 4 locations of the data EERPOM
        //  using the #ROM directive
        #rom 0x2100={1,2,3,4}
        
        typedef int8 INTEE;
        
        void main() {
        
           unsigned int8 i, j, address;
           INTEE value;
        
           do {
              printf("\r\n\nEEPROM:\r\n");              // Display contents of the first 64
              for(i=0; i<=3; ++i) {                     // bytes of the data EEPROM in hex
                 for(j=0; j<=15; ++j) {
                    printf( "%2x ", read_eeprom( i*16+j ) );
                 }
                 printf("\n\r");
              }
              printf("\r\nLocation to change: ");
              address = gethex();
              printf("\r\nNew value: ");
              value = gethex();
        
              write_eeprom( address, value );
        
           } while (TRUE);
        }
        Last edited by linhnc308; 28-03-2008, 11:43. Lý do: add [code] tag
        Ethernet-RS232, PIC Webserver, RFID Reader
        CallerID, Cảnh báo BTS, ...
        0988006696
        linhnc308@gmail.com
        http://linhnc308.blogspot.com

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        • Andrea14
          Vấn đề về tốc độ quay
          bởi Andrea14
          Chào mọi người,

          Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
          12-12-2025, 12:42
        • bqviet
          Trả lời cho Đấu tắt điện cho máy tính bảng
          bởi bqviet
          Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
          06-12-2025, 17:17
        • nguyendinhvan
          Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
          bởi nguyendinhvan
          Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
          05-12-2025, 19:59
        Đang tải...
        X