PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 08-04-2010, 08:06 PM   #1
melody010
Nhập môn đệ tử
 
Tham gia ngày: Jan 2010
Bài gửi: 4
:
xin giúp đỡ e về cách chuyển đổi số 16bit đưa vào 2 thanh ghi 8 bit

- E dùng CCS C để lập trình nhưng có phần này ko biết viết sao nữa. mong các a giúp đỡ để e viết được tiếp chương trình của e.

- Giả sử e khai báo biến

int16 vitri;

- bây giờ nếu e muốn đưa giá trị từ 2 thanh ghi 8 bit vào biến vitri (16 bit) thì e dùng code như sau (cái này do e tham khảo các bài khác):


void Read_QEI() // ĐỌC ENCODER
{
vitri = make16(POSCNTH,POSCNTL);


(2 thanh ghi POSCNTH,POSCNTL là 8 bit)


- e xin hỏi bây giờ e có biến vitri đang mang giá trị số 16 bit nếu muốn đưa vào 2 thanh ghi POSCNTH,POSCNTL thì code phải viết như thế nào? (8 bit cao của vitri đưa vào POSCNTH và 8 bit thấp đưa vào POSCNTL). mong các a giúp đỡ gấp với vì e sắp nộp đồ án rồi, chả là e đang viết chương chình nhưng tới phần này ko biết viết. Xin cảm ơn các a rất nhiều!
melody010 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-04-2010, 10:49 PM   #2
melody010
Nhập môn đệ tử
 
Tham gia ngày: Jan 2010
Bài gửi: 4
:
Trích:
Nguyên văn bởi ngocthanh07 View Post
Mình có cách này, bạn tham khảo chơi
POSCNTL = vitri ; //vì vị trí là 16 bit, POSCNTL chỉ có 8 bit nên nó chỉ move đuợc 8 bit thấp vào thôi
POSCNTH = vitri>>8 ;//biến vi tri dịch phải 8 bit, khi đó 8 bit cao dời tới vị trí 8 bit thấp, sau đó đưa vào POSCNTH khi đó 8 bit cao (giờ đang nằm ở chỗ thấp) đuợc đưa vào POSCNTH

cách khác là dùng cấu trúc union, khi đó byte thấp và byte cao cùng địa chỉ biến vitri, nó tự lấy giá trị, bạn không cần làm gì. Cách nữa là dùng con trỏ ...
thanks bạn nhìu ! mình đã hiểu ý của bạn, để mình thử xem !
melody010 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-04-2010, 09:48 AM   #3
kiepphudu
Nhập môn đệ tử
 
Tham gia ngày: Feb 2009
Bài gửi: 2
:
Trích:
Nguyên văn bởi melody010 View Post
- E dùng CCS C để lập trình nhưng có phần này ko biết viết sao nữa. mong các a giúp đỡ để e viết được tiếp chương trình của e.

- Giả sử e khai báo biến

int16 vitri;

- bây giờ nếu e muốn đưa giá trị từ 2 thanh ghi 8 bit vào biến vitri (16 bit) thì e dùng code như sau (cái này do e tham khảo các bài khác):


void Read_QEI() // ĐỌC ENCODER
{
vitri = make16(POSCNTH,POSCNTL);


(2 thanh ghi POSCNTH,POSCNTL là 8 bit)


- e xin hỏi bây giờ e có biến vitri đang mang giá trị số 16 bit nếu muốn đưa vào 2 thanh ghi POSCNTH,POSCNTL thì code phải viết như thế nào? (8 bit cao của vitri đưa vào POSCNTH và 8 bit thấp đưa vào POSCNTL). mong các a giúp đỡ gấp với vì e sắp nộp đồ án rồi, chả là e đang viết chương chình nhưng tới phần này ko biết viết. Xin cảm ơn các a rất nhiều!
bạn thử làm như vậy xem có được không!
POSCNTH = (vitri)>>8;
POSCNTL = vitri&0x00FF;
kiepphudu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 04:17 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam