![]() |
|
Tài trợ cho PIC Vietnam |
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 |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 2 túi
Tham gia ngày: Dec 2008
Bài gửi: 33
: |
Theo ý kiến của mình thì :
Nếu bạn dùng CCS thì int1 là biến 1 bit,vậy phải cần dùng 50 biến int8 (8 bit) để ghép : Code:
int1 T[]; (T là tập hợp giá trị biến 1 bit cần ghép) int8 k[] = {0x00,...,0x00};(K là tập hợp giá trị biến 8 bit sau khi ghép ) i = 0; j = 0; bước 1 : k[j] = k[j] + T[i]; i tăng 1 đơn vị; k[j] = k[j] <<1; nếu i < 8 quay lại bước 1; nếu i > =8 i = 0; j tăng 1 đơn vị nếu j >= 8,nhảy đến END j < 8 ,quay lại bước 1 END//kết thúc |
![]() |
![]() |
![]() |
#2 | |
Đệ tử 4 túi
Tham gia ngày: Jul 2008
Bài gửi: 61
: |
Trích:
co j mong anh e chi ju[. thanks! Nội quy diễn đàn bắt buộc phải gõ có dấu, mình đã nhắc ở đây, có vẻ như bạn ko đọc: http://www.picvietnam.com/forum/show...8&postcount=68 thay đổi nội dung bởi: bien_van_khat, 10-07-2009 lúc 05:04 PM. |
|
![]() |
![]() |
![]() |
#3 | |
Đệ tử 4 túi
Tham gia ngày: Jul 2008
Bài gửi: 61
: |
Trích:
|
|
![]() |
![]() |
![]() |
#4 | |
Đệ tử 4 túi
Tham gia ngày: Aug 2008
Bài gửi: 89
: |
![]() Trích:
Code:
... #define BITS_COUNT 400 int16 count=0; // Bat dau tai vi tri byte 0 int8 buff[BITS_COUNT/8]; // Dung mat 50 Bytes .... void SetBitData(int1 value) // Goi ham moi 10us de luu gia tri cua bit doc duoc { // Gan lan luot tung bit (13 bits cao xac dinh byte va 3 bits thap xac dinh bit) if(value==1) buff[count>>3]|=(1<<(count&0x07)); else buff[count>>3]&=(~(1<<(count&0x07))); if(count++==BITS_COUNT){ // Nhan du 400 bits va thuc hien truyen du lieu 50 bytes ve may tinh count=0; // Reset lai ve vi tri byte 0 } } ...
__________________
Quang báo RG/RGB 6/8/12/16 bits màu Phone No: 0905.034.086 Email: lmquyen@gmail.com thay đổi nội dung bởi: cskiller, 11-07-2009 lúc 01:19 AM. |
|
![]() |
![]() |
![]() |
#5 | |
Đệ tử 4 túi
Tham gia ngày: Jul 2008
Bài gửi: 61
: |
Trích:
|
|
![]() |
![]() |
![]() |
#6 |
Đệ tử 6 túi
Tham gia ngày: Mar 2007
Bài gửi: 150
: |
Theo tôi thì thế này : mỗi 10us bạn đọc giá trị 1 lần bạn dịch bít đó vào biến x(kiểu byte) , sau 8 lần thì ghi lưu biến x đó vào byte thứ 1 , cứ thế mà tiếp tục đến byte thứ 50. Như vậy bạn chỉ tốn khoản 51 byte mà thôi . Kô cần phải khai báo mãng 400 bit đâu .
Trong CCS có hỗ trợ cho bạn 2 hàm dịch bit (shift_left và shift_right) ví dụ : đọc 8 bit từ ngõ vào B1 (mỗi lần đọc cách nhau là 10us) Code:
unsigned int x,i; for(i=0;i<8;i++) { shift_left(x,1,input(pin_B1) delay_us(9); }
__________________
_________________________________________________ Le Trung Duc Industry Research & Application Center NTT Institute of Hi_technolog ltduc@ntt.edu.vn leduc_cktd@yahoo.com.vn http://www.nttc.edu.vn CNC DIY : http://quangcaosanpham.com/shop/driverservo 0909300332 |
![]() |
![]() |
![]() |
#7 | |
Đệ tử 4 túi
Tham gia ngày: Jul 2008
Bài gửi: 61
: |
Trích:
|
|
![]() |
![]() |
![]() |
|
|