Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Аддрессиране на памет през 2 порта
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=5410
Страница 1 от 1

Автор:  mk912 [ Пет Фев 01, 2008 11:04 pm ]
Заглавие:  Аддрессиране на памет през 2 порта

Имам следното питане: Как да изразя на С30 2-та младши байта от адрес да се
пуснат на ПОРТД 0-15 и треитя байт на ПОРТБ 8-15 - много рових в нета ама не
можах да конкретизирам стринга за търсене...Идват ми идеи за преместване
например ама не може да няма по елегантен начин.

Автор:  TheWizard [ Нед Фев 03, 2008 12:13 am ]
Заглавие: 

[code]

*((char*)&LATB+1) = 0xA5;
*((char*)&LATB+0) = 0x5A;

[/code]

Автор:  mk912 [ Нед Фев 03, 2008 8:01 pm ]
Заглавие: 

Мерси за идеята, а какво трябва да прочета за да ми станат ясни 2-та реда?

Автор:  TheWizard [ Нед Фев 03, 2008 8:41 pm ]
Заглавие: 

аз малко трудно ти хващам заданието

искаш някакво 3 байтово число ( LONG? struct? ) да го метнеш на порт бе и де ли

Автор:  mk912 [ Нед Фев 03, 2008 8:56 pm ]
Заглавие: 

Точно така - имам лонг инт (адрес на външна памет) който трябва да метна на ПОРТД 0-15 и
третия байт на ПОРТБ 8-15. За сега го правя така: ПОРТД=адрес и ПОРТБ=адрес>>8 - в дебъг
се държи коректно ама знам ли

Автор:  TheWizard [ Нед Фев 03, 2008 9:12 pm ]
Заглавие: 

union {
unsigned long UL;
struct {
unsigned short Lo;
unsigned short Hi;
}WVal;
struct {
unsigned char B[4];
}BVal;
}ADR;

int main(int argc, char * argv[]){
ADR.UL = 0x87654321;
LATB = ADR.WVal.Lo;
*((char*)&LATD+1) = ADR.BVal.B[2];

обърни си там LATB и D

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/