![]() |
|
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ử 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. |
|
|
|
|
|
|
#2 | |
|
Đệ tử 4 túi
Tham gia ngày: Jul 2008
Bài gửi: 61
: |
Trích:
|
|
|
|
|
|
|
#3 |
|
Đệ 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 |
|
|
|
![]() |
|
|