View Single Post
Old 27-06-2010, 08:45 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi sit_alone76816 View Post
Em đang có 1 project, trong đó em cần lấy từng bit, cụ thể như sau : em có 1 con số hex 1 byte nằm trong biến x, vậy làm sao em có thể lấy từng bit của số hex đó gán cho 8 biến khác nhau, tức là lấy từng con số A7 A6 A5 ... A1 A0 ra. Em có ý định là gán x vào thanh ghi nào đó giả sử TMR1H đi, khi đó em sẽ lấy các bit đó như sau : ví dụ : i = TMR1Hbits.bit7 , j = TMR1Hbits.bit6 ... như vậy có được không nhỉ ?

Cho em hỏi là trong pic 18F452 có thanh ghi nào 16bit, mà thanh ghi đó chỉ để danh cho người dùng sử dụng,thanh ghi không có làm gì hết, giống như là nơi tạm giữ dữ liệu thôi đó mà .
Giả sử bạn đang dùng MPLAB C18, TMR1Hbits chưa được khai báo sẵn trong các header file của các PIC18. Do đó, cách làm trên của bạn về nguyên tắc là ổn, nhưng sẽ bị báo lỗi vì chưa có khai báo cho struct TMR1Hbits.

Bạn có thể tự khai báo các struct tương tự như LATAbits để truy xuất đến từng bit của byte (đọc tài liệu hướng dẫn cơ bản về C, hoặc tham khảo các header file của một PIC18 nào đó trong thư mục cài đặt MPLAB C18).

Để dùng một số 16 bit, bạn chỉ việc khai báo một biến có kiểu là unsigned int (hoặc unsigned short), trình dịch sẽ tự động dùng hai thanh ghi (ô nhớ) nằm trong vùng RAM công dụng chung (general purpose) cho biến đó.

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

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn