Thông báo

Collapse
No announcement yet.

Biến trong KeilC

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

  • Biến trong KeilC

    Các bác ơi ! em không phải chuyên ngành, mà chỉ ham mê điện tử.
    Có vần đề về khai bao biến trong KeilC em muốn nhờ các bác giúp đỡ:
    Các bác cho em hỏi các biến: idata , static unsigned char , unsigned char , khác nhau ở chỗ nào ,biến static unsigned char thì được dùng trong trường hợp nào?

    Và biến idata được lưu ở bộ nhớ nào của VDK. vì em khai báo mảng nhiều phần tử kiều idata , nhiều hơn rất nhiều bộ nhớ RAM của VDK mà trình dịch vẫn dịch tốt và VDK cũng chạy tốt. mà tất cả các biến idata đó vần thay đổi được giá trị, vậy nó ở bộ nhớ ROM hay bộ nhớ RAM.
    Mong các bác chỉ giúp!
    Em xin cảm ơn!
    Last edited by bockhoi; 04-03-2010, 09:24.

  • #2
    Nguyên văn bởi bockhoi Xem bài viết
    Các bác ơi ! em không phải chuyên ngành, mà chỉ ham mê điện tử.
    Có vần đề về khai bao biến trong KeilC em muốn nhờ các bác giúp đỡ:
    Các bác cho em hỏi các biến: idata , static unsigned char , unsigned char , khác nhau ở chỗ nào ,biến static unsigned char thì được dùng trong trường hợp nào?

    Và biến idata được lưu ở bộ nhớ nào của VDK. vì em khai báo mảng nhiều phần tử kiều idata , nhiều hơn rất nhiều bộ nhớ RAM của VDK mà trình dịch vẫn dịch tốt và VDK cũng chạy tốt. mà tất cả các biến idata đó vần thay đổi được giá trị, vậy nó ở bộ nhớ ROM hay bộ nhớ RAM.
    Mong các bác chỉ giúp!
    Em xin cảm ơn!
    Các biến idata được lưu trữ trong bộ nhớ truy xuất gián tiếp
    http://www.keil.com/support/man/docs...1_le_idata.htm

    static unsigned char / unsigned char / char khi được lưu trên bộ nhớ không khác gì nhau cả, nhưng cách dùng thì sẽ khác nhau.
    nếu để unsigned thì khi cộng trừ, compiler sẽ xử lý số đó như là số không dấu
    static thì mình ko nhớ

    Comment


    • #3
      Bạn cẩn thận IDATA nếu khai báo nhiều quá nó cũng không báo lỗi hay cảnh báo gì hết nhưng khi lưu trữ thì dữ liệu lưu không được đâu, bạn nên kểm tra kỹ, mô phỏng lại xem các vùng nhớ thế nào, chứ IDATA lưu trên RAM nội mà ram nội của 8051 chỉ có 128 byte thôi.
      Kiểu khai Static chỉ cho xử dụng trong file đó thôi chứ không cho liên kết qua các file khác bằng từ khóa extern được.
      vài lời cùng bạn không biết có đúng không nữa ai thấy sai sửa dùm nha!!!

      Comment


      • #4
        IDATA là 128 byte cao của RAM dòng 8051
        89C51 chỉ có 128 byte RAM, do đó IDATA không có tác dụng
        89C52, 89C55, 89S52 là có 256 byte RAM nên mới dùng được IDATA

        nếu dùng KeilC, khi dịch code ra file .HEX nó sẽ báo RAM cao, RAM thấp, RAM ngoài đã dùng hết bao nhiêu byte

        cách khai báo như bình thường thôi
        ví dụ: a là biến cần khai báo trong RAM

        unsigned char a; //biến a nằm ở 128 byte RAM thấp
        unsigned char IDATA a; //biến a nằm trong 128 byte cao
        unsigned char XDATA a; //biến a nằm ở RAM ngoài

        Comment


        • #5
          Cam on cac bac ! em da hieu.

          Comment


          • #6
            còn rất nhiều cách khai báo nữa,ví dụ khai báo có thêm từ khóa code, thì dữ liệu sẽ đc lưu trữ ở bộ nhớ chương trình, lưu được rất nhiều giá trị

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X