Welcome & Happy Holidays!
Kết quả 1 đến 7 của 7
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Giúp e hiểu cái lệnh Sbit với !

    e thì mới học con 8051 ,code bằng ngôn ngữ C nên nhiều cái chưa đc hiểu sâu lắm
    e có mò trong cái AT89X51.H thì thấy lệnh này
    Sbit P0_0 =0x80 // theo e hiểu thì là mình định nghĩa P0_0 bằng 0x80

    và khi mình viết trong hàm main thì lại viết
    P0_0 =1
    Vậy có phải là nó tương đương với 0x80=1 không ạ (e thấy nó khó hiểu chỗ này )
    Thanks mọi người trước nhé :'(

  2. #2
    Ngày tham gia
    Mar 2016
    Bài viết
    0
    sbit la định nghĩa kiểu bít. viết như trên thì bít P0_0 bằng giá trị bít 0 của số 0x80 tức là bắng 0.
    P0_0 = 1; gán bít p0_0 bằng 1 chứ không phải 0x80 = 1

  3. #3
    Ngày tham gia
    Jun 2016
    Bài viết
    0
    tại sao lại biết nó bằng giá trị của bit 0 hả anh ,sao không phải là bit 1,2 . Em nghĩ là cái tên P0_0 là do họ đặt cho dễ nhớ thôi , cho em hỏi thêm là cái số 0x80 trong khai báo đó còn có ý nghĩa gì khác ko ạ ,em thấy họ khai báo từ P0.0 tới P0.7 là 0x80 ->0x87 , các chân khác cũng vậy ,hình như nó có liên quan đến cấu trúc của vđk

  4. #4
    Ngày tham gia
    Jun 2016
    Bài viết
    0
    bít thì chỉ nhận 0 hoặc 1 thôi. gán thế này P0_0 = 0x80 thì vị trí tương ứng với bít 0 có giá trị nào thì bít p0_0 nhận giá trị đó

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi huunho
    bít thì chỉ nhận 0 hoặc 1 thôi. gán thế này P0_0 = 0x80 thì vị trí tương ứng với bít 0 có giá trị nào thì bít p0_0 nhận giá trị đó
    cái này thì e cũng hiểu r ạ , nhưng cái e thắc mắc là tại sao nó lại lấy giá trị tại bit 0 mà ko phải là nó lấy giá trị tại bit 1 , bit 2 fb:'(

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    thì nó ở vị trí bít 0 nên nó lấy giá trị bít 0. có phải số 0x80 viết dưới dạng nhị phân là 10000000
    tức là nó có 8 bít ,
    bit 0 là 0,
    bít 1 là 0
    bít 2 là 0
    ....
    bít 7 là 1
    còn P0_0 chỉ có mỗi 1 bít nên vị trị của nó là bít 0 và và nhận giá trị tương ứng với bít 0 trong số 0x80

  7. #7
    Ngày tham gia
    Feb 2016
    Bài viết
    0
    Do cấu trúc của dòng vdk 8051 ngoài việc các byte được định địa chỉ thì một số bit cũng được định địa chỉ. Port 0 được định danh là P0 có địa chỉ là 0x80 (địa chỉ byte) còn các bit của nó từ P0_0 đến P0_7 có dia chỉ 0x80 đến 0x87 (địa chỉ bit). Khi ta viết lệnh tác động lên byte thì nó là địa chỉ byte, còn viết lệnh tác động lên bit thì nó là địa chỉ bit. Trong file .h có câu lệnh "sbit P0_0 = 0x80" định nghĩa P0_0 là bit có địa chi 0x80, bit này nối với chân 39 của vdk. Còn câu lệnh "P0_0 = 1" nghĩa là bật bit 0x80 lên mức điện áp cao (5v), tương ứng chân 39 của vdk lên 5v. Các cách viết này do trình biên dịch quy định. Nó không phải là các biểu thức toán học với suy luận logic kiểu tam đoạn luận...

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 05:18 PM. Diễn đàn sử dụng vBulletin® Phiên bản 4.2.5.
Bản quyền của 2024 vBulletin Solutions, Inc. Tất cả quyền được bảo lưu.
Ban quản trị không chịu trách nhiệm về nội dung do thành viên đăng.