Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Чтение I/O

13K
31 января 2007 года
sima
27 / / 15.06.2006
Есть PC совместимый промышленный контроллер ADAM-5010 на процессоре 80188. Операционная система - DOS. Среда разработки Borland Turbo C++ 3.0. Хочу прочитать значение контрольного регистра таймера. Пробовал сделать это с помощью библиотечных функций Borland и inline assembler в обоих случаях результат одинаковый.

Код:
#include <dos.h>
#include "5510drv.h"

#define PORT_ID 0x56

void main() {
    unsigned char bit;
    int result0=0;

    asm in ax,0x56    //вариант1

//  asm mov dx,0x56   вариант2
//  asm in ax,dx

//  inport(PORT_ID); вариант3

    result0=_AX;

//  result0=inport(PORT_ID);   вариант4

    if (result0) {
        bit=1;
        Set5055(&bit,0,0,ABit);
        adv_printf("control register 0x%X\n", result0);
    }
        else {
            bit=0;
            Set5055(&bit,0,0,ABit);
            adv_printf("program fail");
        }
}


Во всех вариантах результом выполнения программы является строка
control register 0x5756
т. е. адреса байтов из которых я пытаюсь читать (пробовал читать из других портов
результат подобный).
Подскажите пожалуйста в чем проблема?
Заранее спасибо ответившим.
252
01 февраля 2007 года
koderAlex
1.4K / / 07.09.2005
result0=inportb(0x56);
попробуй так .
на асме :
asm {
in al,56h
mov result0,al
};
13K
01 февраля 2007 года
sima
27 / / 15.06.2006
Все перепробовал не помогает :( Тот же самый результат.
1.6K
01 февраля 2007 года
Vov4ick
476 / / 01.02.2007
Таймер висит на портах 40h-43h. Или здесь речь о чём-то другом?
13K
01 февраля 2007 года
sima
27 / / 15.06.2006
Процессор 80188. Адреса I/O другие (таймер на кристалле), но суть от этого не меняется.
252
01 февраля 2007 года
koderAlex
1.4K / / 07.09.2005
давай спецуху - подумаем .
13K
01 февраля 2007 года
sima
27 / / 15.06.2006
871,5KB
http://www.rdc.com.tw/files/productfiles/R8800_F19_20050123.pdf

При попытке скомпилировать из командой строки
tcc -1 -B myprog.c
появилось ругательство
Error: Unable to execute command ` tasm.exe`
Сейчас качаю tasm 5.0
Кстати кто-нибудь может дать ссылочку на доку по Borland TCC (что-нибудь типа Programmer's Guide), поиск результатов не дал.
252
05 февраля 2007 года
koderAlex
1.4K / / 07.09.2005
когда скачаеш попробуй скомпилить сначала в асм файл .
13K
07 февраля 2007 года
sima
27 / / 15.06.2006
Загрузил tasm. Поместил файлы ..\tasm\bin\tasm.exe, ..\tasm\bin\tlink.exe и ..\tasm\bin\rtm.exe в папку проекта.
Как рекомендовал koderAlex откомпилировал свою прогу в .asm файл
tcc -1 -S myprog.c
Потом создаю объектный модуль
tasm /z myprog.asm
и линкую
tlink /x myprog.obj, myprog.exe, utilitys.lib
Получаю ошибку
Turbo Link 7.1.30.1 ...
Error: Undefind symbol _SET5055 in module MYPROG.C
Error: Undefind symbol _ADV_PRINTF in module MYPROG.C
Fatal: No program entry point.
Попробовал скомпилировать напрямую
tcc.exe -1 -B myprog.c
появляется сообщение
Turbo Link 7.1.30.1 ...
Error: Undefind symbol _Set5055 in module myprog.c
Error: Undefind symbol _adv_printf in module myprog.c
добавил опцию отключения подчеркивания -u-
tcc.exe -1 -B -u- myprog.c
результат также отрицательный, с сообщением
Turbo Link 7.1.30.1 ...
Error: Undefind symbol _main in module c0.asm
Error: Undefind symbol Set5055 in module myprog.c
Error: Undefind symbol adv_printf in module myprog.c
Как побороть это подчеркивание?
252
09 февраля 2007 года
koderAlex
1.4K / / 07.09.2005
это ошибка из-за настроек компилятора .
незачем пользоватся командной строкой .
запусти tc.exe . создай проект . добавь свои файлы и покопайся в настройках .
13K
09 февраля 2007 года
sima
27 / / 15.06.2006
Подразобрался я с компилятором, компилирую и с IDE и с командной строки. Но программа работает по-разному на компе и на контроллере. Запускал ее в режиме step over в IDE вроде работает как предполагается, а на контроллере выдает тот же бутер. Не знаю даже, в какую сторону теперь смотреть.
252
12 февраля 2007 года
koderAlex
1.4K / / 07.09.2005
что в либе "utilitys.lib" находится ?
и в "5510drv.h" заодно .
13K
12 февраля 2007 года
sima
27 / / 15.06.2006
В utilitys.lib находяться функции для работы с flash памятью, battery backup RAM, программными таймерами, функции установки режима watchdog и функция для вывода строки на консоль (контроллер соединен по COM-порту с компом на котором установлена программа-терминал). В 5510drv.h прототипы этих функции и дефайны.
252
12 февраля 2007 года
koderAlex
1.4K / / 07.09.2005
програмные таймеры под дебагером посмотри .
13K
13 февраля 2007 года
sima
27 / / 15.06.2006
Ты предлагаешь отследить как обращается библиотечная функция к таймеру (аппаратному)? Если это так, то тогда мне непонятно как это сделать. Я написал прогу, в которой в функции main вызывается единственная библиотечная функция инициализации программного таймера. Как воспользоваться дебагером, чтобы посмотреть, что она делает и по каким адресам обращается (если не затруднит то пожалуйста подробнее).
252
13 февраля 2007 года
koderAlex
1.4K / / 07.09.2005
держи отладчик . там всё на русише . )
13K
14 февраля 2007 года
sima
27 / / 15.06.2006
Пожалуйста не бейте ногами - не могу его запустить, пишет ошибка в axe-hack.cfg. Запускаю из командной строки Windows XP.
252
15 февраля 2007 года
koderAlex
1.4K / / 07.09.2005
он досовский . тыж писал что целевая платформа - дос .
13K
16 февраля 2007 года
sima
27 / / 15.06.2006
Так и есть. Сам контроллер - PC совместимая архитектура, работающая под DOS. Но у него нет средств для работы с клавиатурой, монитором. Алгоритм работы с ним следующий: на компе (не котроллере) пишу прогу, получаю .exe файл, через прогу-терминал заливаю её в контроллер, через неё же (прогу-терминал) даю команду контроллеру на выполнение моей программы.
Можно ли запустить axe-hack в режиме DOS из под Win98?
252
16 февраля 2007 года
koderAlex
1.4K / / 07.09.2005
нет , нужен чистенький дос . )
сеть у контроллера есть ?
261
16 февраля 2007 года
ahilles
1.5K / / 03.11.2005
короче берешь дискету форматируешь её под загрузку DOS, потом ставишь в BIOS загрузку с дискеты раньше чем с жёсткого, втыкаешь дискету и пошёл...........
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог