Портирование кода из 8-разрядной на 32-разрядную платформу

G

Guest

Guest
Я переносе нескольких приложений с 8051 по ARM7.Может кто-то ответить на следующие:

1.Есть ли 16-битная переменная Avaialable в 32-разрядных ARM.Эквивалентом знака в 8051 Int.

2.Если у меня ЖК-дисплей шины данных связана с P0.16-P0.23 (8 бит 32-битный порт), что является лучшим способом обратиться к этим 8-битные части порта 32 бит, не нарушая остальные DataBus

3.Каков наилучший способ чтения P0.16-P0.23 в 8-битную переменную (неподписанных Char).

4.Один порт штифт двунаправленный требующих направления меняются достаточно часто.Трудно отслеживать направление другим булавки и переключать только этим выводом.Есть ли лучший способ сделать это.Как, например, делая вывод порта не требует высокого знания существующего состояния других контактов на тот же порт, и вы можете просто написать IOSET0 = 0x00001000 установить контактный 0,15.Есть аналогичный способ изменить направление.

 
1.Вы можете использовать uint16_t типы 16 бит из переменной "types.h библиотекой";
2.Одним из решений может быть использование маски.
uint8_t LCDdata, темп;
uint32_t маска = 0xFF0F;
Temp = IOPIN0;
Temp = темп &mask;
IO0SET = маска | ((uint32_t) (LCDdata>> 16)); / / устанавливает желаемую для них P0.16-P0.23
Надежды вы получите эту идею.
3.Рединг можно сделать так:
uint8_t data8;
uint32_t read32;
read32 = IOPIN0;
data8 = (uint8_t) (read32>> 16);
4.использование строительства, как:
IODIR0 | = (1 <<15); / / Pin определить в качестве выходного
IOSET0 = (1 <<15); / / установить бит
IODIR0 & = ~ ((1 <<15); / / Pin определить в качестве входных данных

Они просто мои идеи, которые пришли на данный момент.Может быть, есть более лучшего предложения.
---------------
www.scienceprog.com

 
Можете ли вы поместить некоторые примеры кода.

Пусть P0.16-P0.23 изначально = 0xAA;
Вы хотите разместить 0x55 данные по этому вопросу.

Если вы IO0SET = маска | ((uint32_t) (LCDdata>> 16));

Тогда P0.16-P0.23 станет 0xff поскольку вы ORed 0xAA до 0x55.Wouldnt Вам нужно сначала сделать территорию порта = 0x00 и тогда, ни ее новыми данными.Но это выглядит настолько громоздки.

У вас есть полезный макрос сделать это в одной строке простым образом.

Я скучаю по 8051.

Р0 = I;
I = Р0;
если (P0.3 == 0) .....
P0.3 = 1;
P0.3 = 0;

 

Welcome to EDABoard.com

Sponsor

Back
Top