View Full Version : Ghep bit
no1990
30-01-2011, 09:53 AM
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!
LTD.LEO
30-01-2011, 02:03 PM
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!
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;
no1990
30-01-2011, 03:55 PM
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.
LTD.LEO
31-01-2011, 02:44 PM
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 .
no1990
31-01-2011, 03:46 PM
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;
unsigned char i;
i=i|(a)|(b<<1)|(c<<2)|(d<<3)|.......
bạn thử xem như dzầy có được ko
LTD.LEO
11-02-2011, 06:56 AM
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.
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:
#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)
{
}
}
LTD.LEO
12-02-2011, 10:32 PM
sửa lại như sau:
#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 .
Đ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
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.