سلام دوستان
من 19 بیت دیتا برای ارسال دارم که باید به پایه های خروجی میکرو منترلر بفرستم
هر کاری کردم نشد!
C3-C2-C1-C0-D7-D6-D5-D4-D3-D1-D0-B7-B6-B5-B4-B3-B2-B1-B0(به همین ترتیب باشه - C3 پر ارزش
ATMEGA8535
کل پورت B - پورت D به جز اینتراپت صفر - و چهار بیت پایین پورت C
ممنون میشم کمک کنید
اینم دو برنامه نمونه که کار نداده-اولیش مال خودمه - دومیش مال دوستان
PORTB = Data2 & 0x0FF;
PORTD &=((Data2>>8) | 0x04);
PORTD |= ((Data2>>8) & 0xfb);
PORTC &= ((Data2>>16) | 0x0F0 );
PORTC |= ((Data2>>16) & 0x0f); */
void set_bits(unsigned long n) // 19 bits in use only!
{
unsigned char tmp;
PORTB = (unsigned char)n; // 8 bits, B0..B7
n >>= 8;
tmp = (unsigned char)n & 0x0F;
PORTC = (PORTC & (~0x0F)) | tmp; // 4 bits, C0..C3
tmp = ((unsigned char)n >> 4) & 0x03;
PORTD = (PORTD & (~0x03)) | tmp; // 2 bits, D0..D1
tmp = ((unsigned char)n & (~0x03)) << 1;
PORTD = (PORTD & (~0xF8)) | tmp; // 5 bits, D3..D7
}
من 19 بیت دیتا برای ارسال دارم که باید به پایه های خروجی میکرو منترلر بفرستم
هر کاری کردم نشد!
C3-C2-C1-C0-D7-D6-D5-D4-D3-D1-D0-B7-B6-B5-B4-B3-B2-B1-B0(به همین ترتیب باشه - C3 پر ارزش
ATMEGA8535
کل پورت B - پورت D به جز اینتراپت صفر - و چهار بیت پایین پورت C
ممنون میشم کمک کنید
اینم دو برنامه نمونه که کار نداده-اولیش مال خودمه - دومیش مال دوستان
PORTB = Data2 & 0x0FF;
PORTD &=((Data2>>8) | 0x04);
PORTD |= ((Data2>>8) & 0xfb);
PORTC &= ((Data2>>16) | 0x0F0 );
PORTC |= ((Data2>>16) & 0x0f); */
void set_bits(unsigned long n) // 19 bits in use only!
{
unsigned char tmp;
PORTB = (unsigned char)n; // 8 bits, B0..B7
n >>= 8;
tmp = (unsigned char)n & 0x0F;
PORTC = (PORTC & (~0x0F)) | tmp; // 4 bits, C0..C3
tmp = ((unsigned char)n >> 4) & 0x03;
PORTD = (PORTD & (~0x03)) | tmp; // 2 bits, D0..D1
tmp = ((unsigned char)n & (~0x03)) << 1;
PORTD = (PORTD & (~0xF8)) | tmp; // 5 bits, D3..D7
}




دیدگاه