Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

программирование cpu-188/ ПОМОГИТЕ.

 Ответить Ответить
Автор
Сообщение
kostikp Смотреть выпадающим
Новичок
Новичок


Присоединился: 07 Ноябрь 2007
Online Status: Offline
Публикации: 5
Свойства публикации Свойства публикации   Ответить, цитируя автора - kostikp Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: программирование cpu-188/ ПОМОГИТЕ.
    Опубликовано: 27 Ноябрь 2007 15:52
мне необходимо написать прогу для cpu-188 с прерыванями для компорта. я хочу писать на С. Вот написал программку с прерываниями таймера 1 и каждую секунду мигает светодиод. я связан с cpu через терминал винды. но после запуска и выхода из моей простой прогрммки больше не работает функция ftrans контроллер виснет при попытке записатьв него прогу.
помогите плиз. вот прога.   553FD_cpu188.zip
где косяк ?
и может у кого есть пример приема по прерываниям порта на С. очень буду благодарен.
Наверх
kostikp Смотреть выпадающим
Новичок
Новичок


Присоединился: 07 Ноябрь 2007
Online Status: Offline
Публикации: 5
Свойства публикации Свойства публикации   Ответить, цитируя автора - kostikp Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 28 Ноябрь 2007 11:18
вот текст:

#include <dos.h>
#include <bios.h>
#include <stdio.h>

#define Vector 0x12
#define EOIrqReg 0xff22
#define MskReg 0xff28
#define Mask 0x01

char Flag1;
int Flag;
int Delay;
int d;

void interrupt HandlerTimer1()
{
_DX=0xFF2C;
_AX=inport(_DX);
if(_AL & 0x01)
{
   Delay++;
   if(Delay==500)
   {

    Flag ^=1;
    outportb(0x87,Flag<<1);
    Delay=0;
    Flag1=1;
   }
}
_AX=0x0008;
_DX=0xFF22;
outportb(_DX,_AL);
}


void interrupt (*oldhandlerTimer1)();


void Timer1Init(void)
{
_DX=0xFF5E;
_AX=0x4000;
   outport(_DX,_AX);
_DX=0xFF58;
_AX=0;
   outport(_DX,_AX);
_DX=0xFF5A;
_AX=0x2710;
   outport(_DX,_AX);
_DX=0xFF5E;
_AX=0xE001;
   outport(_DX,_AX);
}


void main ()
{

Flag=0;
Delay=0;

printf(" Hello! Press any key to Quit...\n");
//

   disable();
   oldhandlerTimer1=getvect(Vector);
   setvect(Vector,HandlerTimer1);
   _AX=(inportb(MskReg)&(~Mask));
   outport(MskReg,_AX);

   Timer1Init();
enable();

while(1)
{

if (bioskey(1))
    {

    disable();


      _AX=(inportb(MskReg)|(Mask));
      outportb(MskReg,_AL);
      setvect(Vector,oldhandlerTimer1);


    enable();
      //
      printf(" Process is stopped 2 \n");
      bioskey(0);
      return;
    }
}
}
Наверх
Vel_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 25 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 116
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vel_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 10 Декабрь 2007 06:27
А на ASM не подойдет?
Vel
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz