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 30-01-2011, 09:53 AM   #1
no1990
Nhập môn đệ tử
 
Tham gia ngày: Jan 2011
Bài gửi: 3
:
Ghep bit

Xin chào mọi người!
e có 1 thắc mắc thế này mà e tìm khong ra.
e có 8 biến 1 bit abcdefgh giờ em muốn ghép 8 biên 1 bit này thành 1 byte 8 bit thì e làm thế nào?
Vd:
a=1;b=0;c=0;d=1;e=0;f=1;g=1;h=0;
Thì giờ e sẽ ghép thành :
aa=abcdefh tức giờ aa=10010110 thì trong C em phải dùng câu lệnh như thế nào?
E xin cảm ơn và chúc các huynh năm mới hạnh phúc!
no1990 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-01-2011, 02:03 PM   #2
LTD.LEO
Nhập môn đệ tử
 
Tham gia ngày: Jan 2011
Bài gửi: 9
:
Trích:
Nguyên văn bởi no1990 View Post
Xin chào mọi người!
e có 1 thắc mắc thế này mà e tìm khong ra.
e có 8 biến 1 bit abcdefgh giờ em muốn ghép 8 biên 1 bit này thành 1 byte 8 bit thì e làm thế nào?
Vd:
a=1;b=0;c=0;d=1;e=0;f=1;g=1;h=0;
Thì giờ e sẽ ghép thành :
aa=abcdefh tức giờ aa=10010110 thì trong C em phải dùng câu lệnh như thế nào?
E xin cảm ơn và chúc các huynh năm mới hạnh phúc!
Code:
unsigned char i=0;
i|=a;i<<1;
i|=b;i<<1;
i|=c;i<<1;
i|=d;i<<1;
i|=e;i<<1;
i|=f;i<<1;
i|=g;i<<1;
i|=h;
LTD.LEO vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-01-2011, 03:55 PM   #3
no1990
Nhập môn đệ tử
 
Tham gia ngày: Jan 2011
Bài gửi: 3
:
a ơi eddax thử làm rồi nhưng mà e có thay đổi các bit abcdefgh như thế nào thì nó điều xuất ra là 10000000 thôi .
a xem lại giúp e nha.
no1990 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-01-2011, 02:44 PM   #4
LTD.LEO
Nhập môn đệ tử
 
Tham gia ngày: Jan 2011
Bài gửi: 9
:
Trích:
Nguyên văn bởi no1990 View Post
a ơi eddax thử làm rồi nhưng mà e có thay đổi các bit abcdefgh như thế nào thì nó điều xuất ra là 10000000 thôi .
A xem lại giúp e nha.
post đoạn code của em lên đây .
LTD.LEO vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-01-2011, 03:46 PM   #5
no1990
Nhập môn đệ tử
 
Tham gia ngày: Jan 2011
Bài gửi: 3
:
code cua e đây a xem dùm e cái
a=0;b=1;c=0;d=1;e=1;f=0;g=1;h=0;

unsigned char i=0;
i|=a;i<<1;
i|=b;i<<1;
i|=c;i<<1;
i|=d;i<<1;
i|=e;i<<1;
i|=f;i<<1;
i|=g;i<<1;
i|=h;

PORTA=i;
no1990 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-02-2011, 06:56 AM   #6
LTD.LEO
Nhập môn đệ tử
 
Tham gia ngày: Jan 2011
Bài gửi: 9
:
Trích:
Nguyên văn bởi no1990 View Post
code cua e đây a xem dùm e cái
a=0;b=1;c=0;d=1;e=1;f=0;g=1;h=0;

unsigned char i=0;
i|=a;i<<1;
i|=b;i<<1;
i|=c;i<<1;
i|=d;i<<1;
i|=e;i<<1;
i|=f;i<<1;
i|=g;i<<1;
i|=h;

PORTA=i;
bạn viết cho trình biên dịch nào ? ko thấy hàm chính đâu cả ???? Mình cần cả 1 đoạn code hoàn chỉnh của bạn kìa . Trong chương trình của bạn có while(true) hay ko có cũng khác xa nhau nhiều huốn hồ là bạn ko post lên thì làm sao ai biết được.
LTD.LEO vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-02-2011, 10:06 AM   #7
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi no1990 View Post
code cua e đây a xem dùm e cái
a=0;b=1;c=0;d=1;e=1;f=0;g=1;h=0;

unsigned char i=0;
i|=a;i<<1;
i|=b;i<<1;
i|=c;i<<1;
i|=d;i<<1;
i|=e;i<<1;
i|=f;i<<1;
i|=g;i<<1;
i|=h;

PORTA=i;
sửa lại như sau:
Code:
#include <16F877A.h>
#device *=16 adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
int1 a=0,b=1,c=1,d=0,e=1,g=1;
int1 n=1,m=0;
int8 i=0x00;
main()
{
set_tris_b(0x00);
i=i|a;i<<=1;
i=i|b;i<<=1;
i=i|c;i<<=1;
i=i|d;i<<=1;
i=i|e;i<<=1;
i=i|g;i<<=1;
i=i|n;i<<=1;
i=i|m;
output_b(i);
 while(1)
 {
 }
}
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-02-2011, 10:32 PM   #8
LTD.LEO
Nhập môn đệ tử
 
Tham gia ngày: Jan 2011
Bài gửi: 9
:
Trích:
Nguyên văn bởi tdm View Post
sửa lại như sau:
Code:
#include <16F877A.h>
#device *=16 adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
int1 a=0,b=1,c=1,d=0,e=1,g=1;
int1 n=1,m=0;
int8 i=0x00;
main()
{
set_tris_b(0x00);
i=i|a;i<<=1;
i=i|b;i<<=1;
i=i|c;i<<=1;
i=i|d;i<<=1;
i=i|e;i<<=1;
i=i|g;i<<=1;
i=i|n;i<<=1;
i=i|m;
output_b(i);
 while(1)
 {
 }
}
Đoạn code đâu có vấn đề gì đâu bạn ? Mình mô phỏng bằng MPlap và xem kết quả thì đúng mà , làm gí có cái kết quả giống như bạn nói .
LTD.LEO vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-02-2011, 12:35 PM   #9
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi LTD.LEO View Post
Đoạn code đâu có vấn đề gì đâu bạn ? Mình mô phỏng bằng MPlap và xem kết quả thì đúng mà , làm gí có cái kết quả giống như bạn nói .
thuật toán của bạn không sai.bạn xem lại cú pháp:
i<<1
đúng thì nó có cú pháp:i<<=1
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-02-2011, 12:48 PM   #10
bkx
Nhập môn đệ tử
 
bkx's Avatar
 
Tham gia ngày: Nov 2009
Bài gửi: 2
:
unsigned char i;
i=i|(a)|(b<<1)|(c<<2)|(d<<3)|.......
bạn thử xem như dzầy có được ko
bkx 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:18 PM.


Đượ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