Thông báo

Collapse
No announcement yet.

8051 những điều chưa biết ?????????

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

  • 8051 những điều chưa biết ?????????

    xin chào mọi người lại là em đây ,em tên là hiếu vốn sinh ra trong 1 gia đình có truyền thống hiếu học nên ba mẹ em đặt tên em là hiếu,khoảng 2 tháng gần đây em có tự học lập trình 89S52 bằng ASM ,1 tháng học lý thuyết và 1 tháng thực hành,đã làm được với LCD,led 7 seg,UART,.....,tuy đã làm được hết các ngoại vi của core 8051 này nhưng vẫn còn những cái chưa hiểu mong được mọi người chỉ bảo giúp,đây là những cái khó hiểu đối với những người tự học như em :

    1,stack: cái này thì hiểu nó là ngăn xếp giống như ngăn tủ hoạt động theo cơ chế LIFO ,để cất địa chỉ trở về khi thực hiện chương trình con,biết là thế rồi nhưng mà nó vẫn mơ hồ lắm,như ở PIC thì ngăn xếp do CPU tự quản ,còn với 89 này thì ra sao trong các tài liệu không giải thích,và em thấy mọi người viết lệnh mà cứ PUSH POP loạn cả lên đoạn này không hiểu được cái này có cần thiết lắm không hay để CPU tự làm

    2,con trỏ DPTR :cái này thì dùng suốt rồi,viết suốt rồi quét led,làm lcd...,dùng là vậy nhưng cũng chưa hiểu bản chất của nó lắm,chỉ biết nó dùng truy suất bảng thôi

    3,bank(băng): core 8051 có 4 băng nhớ mặc định là bank 0 rồi,em nghĩ bank 1 nó ghi dùng để chứa stack ,vậy bank 2 và bank 3 chỉ để không thôi sao vì khi viết chương trình em dùng băng 0 đã thoải mái lắm rùi ,còn bank 1 em nghĩ là không được dùng vì nhỡ ghi lên stack thì sao nhỉ ,hơn nữa nó chỉ chuyển sang bank 1 để lưu vào stack nếu có chương trình con sau đó lại nhảy về bank 0 đúng không nhỉ ??? ở PIC chuyển băng để set các thanh ghi khác nhau mà 8051 cả 4 bank đều giống nhau (R0-R7) thì bank 2,3 ...??????

    4,các ô nhớ :core 8051 nói chung có vùng ram có định địa chỉ bit gồm 16 byte từ 20h-2Fh,vậy ta có thể sử dụng 16 byte này để cất dữ liệu không ? ví dụ em cất giá trị #255 vào địa chỉ 20 chẳng hạn??
    -còn lại từ địa chỉ 30-7F là vùng ram đa dụng thì sử dụng thế nào ?
    -khi ta sử dụng ram của CPU rồi thì khi chạy nó thiếu ô nhớ thì sao ?

    5,cờ nhớ C :cái này em cũng dùng rùi nhưng cũng chả hiểu luôn !!

    6, địa chỉ tức thời : trong khi viết chuơng trình hầu như thấy chỉ sử dụng địa chỉ tức thời ví dụ như: #200 ,còn định địa chỉ trực tiếp hay gián tiếp rất ít khi dùng đoạn này em cũng chưa hiểu

    mong mọi người trợ giúp tha thiết cầu xin !!!
    SỐNG THEO BẢN CHẤT,KỆ MỌI NGƯỜI NÓI GÌ THÌ NÓI

  • #2
    1. Ở 8051 thì hoạt động của ngăn xếp do cả CPU và người lập trình quản lý. Mình không lập trình cho PIC nên không biết trong PIC có mấy lệnh PUSH - POP hay không. Còn ở 8051 thì nhiều khi người lập trình phải dùng 2 lệnh này để cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp.

    Ví dụ: Trong chương trình con thứ nhất bạn dùng thanh ghi A, đến chương trình con thứ 2 bạn cũng sử dụng thanh ghi A, vì thanh ghi A được dùng chung như vậy nên trước khi bạn chuyển sang chương trình con thứ 2 bạn phải dùng lệnh PUSH để cất nội dung của thanh ghi A vào ngăn xếp, sau khi dùng xong thanh ghi A ở CTC thứ 2 thì bạn phải dùng lệnh POP để trả lại nội dung của thanh ghi A mà bạn vừa cất đi. Mục đích của việc PUSH - POP này là tránh làm mất dữ liệu.

    2. Con trỏ là để trỏ. Nó cũng chỉ là một thanh ghi 16 bít. Nội dung của con trỏ DPTR chính là địa chỉ của dữ liệu. Người ta thường dùng nó để trỏ đến những địa chỉ trong phạm vi 64k.

    3. Khi cấp nguồn hoặc có hoạt động Reset 8051 thì bank 0 là bank mặc định như bạn nói, đồng thời con trỏ ngăn xếp (SP) được mặc định ở địa chỉ 07h. Như thế khi 8051 có hoạt động cất vào stack thì nó sẽ cất vào từ địa chỉ 08h trở đi (tức là cất vào từ thanh ghi R0 của bank 1 trở đi). Nếu dùng lệnh chuyển bank tích cực là bank 1 thì rất có thể nội dung của ngăn xếp sẽ bị mất như bạn nói. Vì vậy khi dùng bank 1, bank 2 hoặc bank 3 là bank tích cực thì người ta thường dùng thêm lệnh: MOV SP, #xxh để di chuyển vị trí bắt đầu ngăn xếp (xx là vị trí bạn muốn di chuyển ngăn xếp đến đó). Ví dụ lệnh : MOV SP, #2Fh.

    4. Địa chỉ 20h đến 2Fh bạn hoàn toàn có thể sử dụng để cất dữ liệu. Nó có cái ưu điểm là vùng Ram định địa chỉ bít nên nhưng hoạt động chi cần yêu cầu trên đơn vị bít thôi thì ta nền dùng đoạn Ram này để sử dụng bít thay vì phải dùng cả byte (tốn bộ nhớ ).

    Vùng Ram đa tác dụng thì bạn dùng để cất dữ liệu dạng byte thông thường. Tùy vào mục đích của bạn để trao đổi dữ liệu hay gì gì đó.

    Với những ứng dụng thông thường thì 128 byte Ram mà 8051 cung cấp cho ta thoải mái đủ dùng, nếu thiếu thì có thể dùng thêm Ram ngoài.

    5. Cờ C nó là 1 bít báo hiệu dùng trong các phép toán số học, nếu có số nhớ từ phép cộng bít 7 hoặc có mượn số mang đến bít 7 thì cờ C này được 8051 bật lên bằng 1 để báo hiệu. Nó còn là thanh chứa logic được dùng như 1 thanh ghi 1 bít đối với các lệnh logic thao tác trên các bít.

    6. Địa chỉ trực tiếp hay gián tiếp ít được dùng là do nó khó nhớ và còn tùy vào ứng dụng. Ví dụ 2 lệnh sau là tương đương: MOV P0, #48h ; MOV 80h, #48h. Việc bạn chép số #48h vào cổng P0 bằng lệnh đầu tiên sẽ dễ nhớ và thực hiện nhanh hơn việc bạn dùng lệnh thứ 2 (sử dụng địa chỉ trực tiếp).

    Có vần đề gì thắc mắc thì bạn cứ hỏi, trong khả năng hiểu biết của mình có thời gian mình sẽ giải đáp.
    Last edited by Ck33spkt; 24-03-2014, 20:44.

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X