#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");
}
}
Чтение I/O
Код:
Во всех вариантах результом выполнения программы является строка
control register 0x5756
т. е. адреса байтов из которых я пытаюсь читать (пробовал читать из других портов
результат подобный).
Подскажите пожалуйста в чем проблема?
Заранее спасибо ответившим.
попробуй так .
на асме :
asm {
in al,56h
mov result0,al
};
Все перепробовал не помогает :( Тот же самый результат.
Таймер висит на портах 40h-43h. Или здесь речь о чём-то другом?
Процессор 80188. Адреса I/O другие (таймер на кристалле), но суть от этого не меняется.
давай спецуху - подумаем .
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), поиск результатов не дал.
когда скачаеш попробуй скомпилить сначала в асм файл .
Как рекомендовал 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
Как побороть это подчеркивание?
незачем пользоватся командной строкой .
запусти tc.exe . создай проект . добавь свои файлы и покопайся в настройках .
Подразобрался я с компилятором, компилирую и с IDE и с командной строки. Но программа работает по-разному на компе и на контроллере. Запускал ее в режиме step over в IDE вроде работает как предполагается, а на контроллере выдает тот же бутер. Не знаю даже, в какую сторону теперь смотреть.
и в "5510drv.h" заодно .
В utilitys.lib находяться функции для работы с flash памятью, battery backup RAM, программными таймерами, функции установки режима watchdog и функция для вывода строки на консоль (контроллер соединен по COM-порту с компом на котором установлена программа-терминал). В 5510drv.h прототипы этих функции и дефайны.
програмные таймеры под дебагером посмотри .
Ты предлагаешь отследить как обращается библиотечная функция к таймеру (аппаратному)? Если это так, то тогда мне непонятно как это сделать. Я написал прогу, в которой в функции main вызывается единственная библиотечная функция инициализации программного таймера. Как воспользоваться дебагером, чтобы посмотреть, что она делает и по каким адресам обращается (если не затруднит то пожалуйста подробнее).
держи отладчик . там всё на русише . )
Пожалуйста не бейте ногами - не могу его запустить, пишет ошибка в axe-hack.cfg. Запускаю из командной строки Windows XP.
он досовский . тыж писал что целевая платформа - дос .
Можно ли запустить axe-hack в режиме DOS из под Win98?
сеть у контроллера есть ?
короче берешь дискету форматируешь её под загрузку DOS, потом ставишь в BIOS загрузку с дискеты раньше чем с жёсткого, втыкаешь дискету и пошёл...........