PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT 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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 10-04-2009, 10:49 PM   #1
phandinh
Đệ tử 6 túi
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
:
các lệnh chuyển từ binary qua decimal

bạn nào chỉ dùm mình các lệnh chuyển từ số nhị phân ==> thập phân trong CCS
thanks
phandinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-04-2009, 06:48 PM   #2
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
để làm gì vậy bạn?
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-04-2009, 09:00 AM   #3
manhha2799
Đệ tử 5 túi
 
Tham gia ngày: Apr 2007
Bài gửi: 121
:
Send a message via Yahoo to manhha2799
Cái chắc bạn nên tạo một cái hàm chuyển đổi theo quy tắc chuyển đổi.
Ví dụ 111=1*2^2+1*2^1+1*2^0=7 , chứ trong CCS C hình như không có sẵn.
__________________
Bảng ledsigns chất lượng cao...
http://www.ledviet.info - manhha2700@yahoo.com
Đt:0949299699
manhha2799 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-04-2009, 09:25 AM   #4
phandinh
Đệ tử 6 túi
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
:
bạn có thể nói rõ giải thuật được không ? hoặc 1 ví dụ cụ thể CCS.
thanks.
phandinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-04-2009, 09:45 AM   #5
manhha2799
Đệ tử 5 túi
 
Tham gia ngày: Apr 2007
Bài gửi: 121
:
Send a message via Yahoo to manhha2799
int16 laybit(int16 binary,int8 vitri)
{
if (dbit==0) kq3&=0b00000001;
else if (dbit==1) kq3&=0b00000011;
else if (dbit==2) kq3&=0b00000111;
else if (dbit==3) kq3&=0b00001111;
else if (dbit==4) kq3&=0b00011111;
else if (dbit==5) kq3&=0b00111111;
else if (dbit==6) kq3&=0b01111111;
else if (dbit==7) kq3&=0b11111111;
return kq3;
}

void main()
{
for (i=0;i<8;i++)
thapphan=thapphan+laybit(binary,i)*2^1;
}


Giải thích, ban đầu bạn làm một hàm lấy từng byte trong chuỗi binary, từ vị trí 0-->7 bằng hàm laybyte(binary,vitri)

Sau khi lấy bit ở vị trí thì nhân với 2^vitri ở đó, rồi cộng dồn với thập phân.
__________________
Bảng ledsigns chất lượng cao...
http://www.ledviet.info - manhha2700@yahoo.com
Đt:0949299699
manhha2799 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-04-2009, 06:29 PM   #6
cong1810
Đệ tử 4 túi
 
Tham gia ngày: Sep 2007
Bài gửi: 62
:
Send a message via Yahoo to cong1810
Trích:
Nguyên văn bởi manhha2799 View Post
int16 laybit(int16 binary,int8 vitri)
{
if (dbit==0) kq3&=0b00000001;
else if (dbit==1) kq3&=0b00000011;
else if (dbit==2) kq3&=0b00000111;
else if (dbit==3) kq3&=0b00001111;
else if (dbit==4) kq3&=0b00011111;
else if (dbit==5) kq3&=0b00111111;
else if (dbit==6) kq3&=0b01111111;
else if (dbit==7) kq3&=0b11111111;
return kq3;
}
huynh xem lại dùm đệ đoạn này hen!!
đệ nghĩ phải là 0b00000001 --> 0b00000010 --> 0b00000100..mới đúng chứ nhỉ?
cám ơn huynh!!

bạn cũng có thể dùng lệnh rotate_left hay rotate_right trong CCS C.cũng với cách tương tự như huynh trên làm.bạn tạo một vòng lặp trong đó cho "and" & với 0x01 rồi lấy mũ tương ứng và cộng dồn vào.nếu giá trị của bạn nằm trong vòng 16bit thì tạo 1 biến 16 bit cho giá trị muốn đổi và cứ cho vòng lặp 16 lần.
hy vọng mình nghĩ đúng và giúp ích cho bạn!!
cong1810 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à 05:30 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