Trích:
Nguyên văn bởi sit_alone76816
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,