Министерство образования Российской Федерации
Кафедра “Вычислительная техника”
Расчетно-графическая работа № 5
по курсу “микропроцессорные устройства”
Тема: Программная реализация приоритетного контроллера
Выполнили: студенты гр. ВМ-82
Коломеец А.Н.
Толстых Д.Л.
Проверил: ст. преподаватель
Бурдинский И.Н.
Хабаровск 2002
Техническое задание
Требуется программно реализовать работу устройства, имеющего следующие временные диграммы:
Рисунок 1. Требуемые временные диаграммы
Требования к устройству:
· сигналы С и D должны точно повторять входной сигнал В;
· сигнал А асинхронный;
· сигнал В может появится в любой момент времени;
· задержка составляет 0,2-1 мкс.
#include <vcl.h>
#pragma hdrstop
#include "Unit20.h"
//------------------------------------#pragma package(smart_init)
#pragma link "RXCtrls"
#pragma link "RXSpin"
#pragma link "CSPIN"
#pragma link "RXSlider"
#pragma resource "*.dfm"
TForm1 *Form1;
int lin, i;
int x=1, xold=0;
int XB=0;
int YB=25, YBold=25;
int YA0=52, YA0old=52;
int YA1=79, YA1old=79;
int YA2=106, YA2old=106;
int YA3=133, YA3old=133;
int YA4=160, YA4old=160;
int YA5=187, YA5old=187;
int YA6=214, YA6old=214;
int YA7=241, YA7old=241;
int YE=248, YEold=248;
int E[8];
int CD=0;
int YC=275, YCold=275;
int YD=302, YDold=302;
int YF=329, YFold=329;
int Fcount=0;
TColor ColorAAA=clBlue;
//----------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------void __fastcall Obnov()
{
Form1->Image1->Canvas->Pen->Color=clWhite;
if (Form1->CLR->Down==true) {Form1->Image1->Canvas->Brush->Color=clBlack;}
if (Form1->CLR->Down==false) {Form1->Image1->Canvas->Brush->Color=clWhite;}
Form1->Image1->Canvas->Rectangle(0,0,5000,369);
x=1, xold=0;
XB=0;
YB=25, YBold=25;
YA0=52, YA0old=52;
YA1=79, YA1old=79;
YA2=106, YA2old=106;
YA3=133, YA3old=133;
YA4=160, YA4old=160;
YA5=187, YA5old=187;
YA6=214, YA6old=214;
YA7=241, YA7old=241;
YE=248, YEold=248;
E[8];
CD=0;
YC=275, YCold=275;
YD=302, YDold=302;
YF=329, YFold=329;
Fcount=0;
Form1->Image1->Canvas->Pen->Color=clAppWorkSpace;
for (lin=25;lin<350;lin+=27)
{
Form1->Image1->Canvas->MoveTo(0,lin); Form1->Image1->Canvas->LineTo(5000,lin);
}
for (i=0;i<=7;i++) E[i]=1;
Form1->A0->Enabled=true;
Form1->A1->Enabled=true;
Form1->A2->Enabled=true;
Form1->A3->Enabled=true;
Form1->A4->Enabled=true;
Form1->A5->Enabled=true;
Form1->A6->Enabled=true;
Form1->A7->Enabled=true;
Form1->A0->Down=false;
Form1->A1->Down=false;
Form1->A2->Down=false;
Form1->A3->Down=false;
Form1->A4->Down=false;
Form1->A5->Down=false;
Form1->A6->Down=false;
Form1->A7->Down=false;
Form1->ScrollBox1->HorzScrollBar->Position=0;
}
void __fastcall Efinal()
{ for (i=0;i<=7;i++)
{if (E[i]==0){
YE=268;
if (YEold==248){
Form1->Image1->Canvas->Pen->Color=clFuchsia;
Form1->Image1->Canvas->MoveTo(xold,YEold); Form1->Image1->Canvas->LineTo(xold,YE);
YEold=YE;
}
break;
}
}
}
//------------------------------void __fastcall EUstanov()
{
for (i=0;i<=7;i++)
{if (E[i]==0)
{
E[i]=1;
break;
}
}
for (i=0;i<=7;i++)
{if (E[i]==0) {break;}
}
if (i==8){
YE=248;
Form1->Image1->Canvas->Pen->Color=clFuchsia;
Form1->Image1->Canvas->MoveTo(xold,YEold); Form1->Image1->Canvas->LineTo(xold,YE);
YEold=YE;
}
}
//------------------------void __fastcall TForm1::exitClick(TObject *Sender)
{
Timer1->Enabled=false;
Application->Terminate();
}
//------------------------void __fastcall TForm1::FormCreate(TObject *Sender)
{
Obnov();
}
//------------------------void __fastcall TForm1::StartClick(TObject *Sender)
{
if(Start->Down==true)
{
Timer1->Enabled=true;
Start->Caption="STOP";
delay->Enabled=false;
CLR->Enabled=false;
Obnov();
}
if(Start->Down==false)
{
Timer1->Enabled=false;
Start->Caption="START";
delay->Enabled=true;
CLR->Enabled=true;
Form1->A0->Enabled=false;
Form1->A1->Enabled=false;
Form1->A2->Enabled=false;
Form1->A3->Enabled=false;
Form1->A4->Enabled=false;
Form1->A5->Enabled=false;
Form1->A6->Enabled=false;
Form1->A7->Enabled=false;
}
}
//---------------------------void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
for (i=1;i<=9;i++)
{
if(x==570*i) {ScrollBox1->HorzScrollBar->Position=570*i;}
}
Image1->Canvas->Pen->Color=clFuchsia;
//--------------------Для B-------------if(XB==50)
{
XB=0;
if(YB==25) {YB=5;
if (CD==1){//------------Фронт D
YD=302;
Image1->Canvas->MoveTo(xold,YDold); Image1->Canvas->LineTo(xold,YD);
YDold=YD;
CD=0;
//------------Фронт F
YF=329;
Image1->Canvas->MoveTo(xold,YFold); Image1->Canvas->LineTo(xold,YF);
YFold=YF;
}
else {//------------Фронт С
YC=275;
Image1->Canvas->MoveTo(xold,YCold); Image1->Canvas->LineTo(xold,YC);
YCold=YC;
}
}
else {YB=25;
if (YE==268){ //------------Спад D
CD=1;
YD=322;
Image1->Canvas->MoveTo(xold,YDold); Image1->Canvas->LineTo(xold,YD);
YDold=YD;
Fcount=0;
}
else {//------------Спад C
CD=0;
YC=295;
Image1->Canvas->MoveTo(xold,YCold); Image1->Canvas->LineTo(xold,YC);
YCold=YC;
}
EUstanov();
}
Image1->Canvas->Pen->Color=clRed;
Image1->Canvas->MoveTo(xold,YBold); Image1->Canvas->LineTo(xold,YB);
}
Image1->Canvas->Pen->Color=clRed;
YBold=YB;
Image1->Canvas->MoveTo(xold,YB); Image1->Canvas->LineTo(x,YB);
XB++;
//------------------Для F---------------------if (Fcount==delay->Value){YF=349;
Image1->Canvas->Pen->Color=clFuchsia;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.