Программирование CPU-188-5 Помогите! |
Ответить |
Автор | |
Новичок Присоединился: 07 Ноябрь 2007 Online Status: Offline Публикации: 5 |
Опубликовано: 25 Ноябрь 2007 18:58 |
Написал программу мигания светодиодом по тпймру 1. В се моргает раз в секундупрог, но после запуска программы и выхода из нее не работает функция ftrans. Контроллер зависает после выполения программы мигания светодиода. Не знаю в чем проблема. Вот прилагаю с-файл и exe. Может кто поможет понять где косяк. Очень буду благодарен. CZ952_cpu188.zip
|
|
Новичок Присоединился: 07 Ноябрь 2007 Online Status: Offline Публикации: 5 |
|
кто работал с cpu-188 помогите мой icq: 476-158-465 |
|
Новичок Присоединился: 27 Февраль 2007 Категория: Russian Federation Online Status: Offline Публикации: 6 |
|
А кто за тебя будет восстанавливать предыдущее значение вектора прервания? Потаму та прога и подвисает. Пример рабочего кода: static volatile word count = 0; static void interrupt TimerHandler(__CPPARGS) { register byte t1; __asm { mov dx, 0xFF2C in ax, dx and al, 1 mov [t1], al } if (t1 != 0) { // Делаешь, что те нужно count += 1; __asm { mov dx, 0xFF22 mov ax, 8 out dx, al } } else { oldTimerHandler(); }; } static void InitTimerHandler() { __asm { cli mov dx, 0xFF5E mov ax, 0x4000 out dx, al // Timer1 counter mov dx, 0xFF58 xor ax, ax out dx, al // Timer1 MaxCountA mov dl, 0x5A mov ax, MaxCountA out dx, al // Enable Timers Interrupts mov dx, 0xFF28 in ax, dx and al, 0xFE out dx, al // Enable Timer1 with interrupts mov dx, 0xFF5E mov ax, 0xE001 out dx, al } oldTimerHandler = _dos_getvect(0x12); _dos_setvect(0x12, TimerHandler); __asm sti } static void DestroyTimerHandler() { __asm { // Disable Timer1 mov dx, 0xFF5E mov ax, 0x4000 out dx, al } _dos_setvect(0x12, oldTimerHandler); } |
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |