Tải bản đầy đủ (.pdf) (11 trang)

Quá trình hình thành tư liệu hướng dẫn cách chấm mạch eprom trong KIT vi xử lý p6 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (147.16 KB, 11 trang )

LUAÂÄN VAÊN TOÁT NGHIEÄP

56

;KeyKRB : Chuong trinh con quet ban phim. Ma cua phim an duoc cat
;trong thanh
; ghi A.
;DELAY : Chuong trinh con tri hoan theo thoi hang 0.1 ms. He so tri
;hoan duoc
; nap vao thanh ghi A.
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++
;#####################################################################
;Khai bao cac nhan duoc su dung.
;#####################################################################
RegCNT equ 03h
PortA equ 00h
PortB equ 01h
PortC equ 02h
CntI79 equ 0A001h
DataI79 equ 0A000h
KEYBRD equ 0216h
DELAY equ 0310h
KeyGO equ 17h
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
End
LUAÂÄN VAÊN TOÁT NGHIEÄP

57

B.Module Demo.cpp


#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>
#include <string.h>
#include <dos.h>
#include <math.h>
#include <complex.h>
#include <time.h>
#include <dir.h>
#include <ctype.h>

#include "screen.h"
#include "mouse.h"
#include "button.hpp"
#include "textbox.hpp"
#include "list.hpp"
#include "disklist.hpp"
#include "send.hpp"

#define NumBox 2
#define NumBut 2

LPEVENT lpEvent; //bien chua cac bien co chuot
char szMessage[128];

BUTTON But[NumBut],NutKiem;
TEXTBOX Box[NumBox],Port;
char DiskName[27],DName;
char ftype[15]="*.prn";

char inter_Path[100]="";
char RequF[100];
unsigned int St_address,End_address=0;
char Sta_hex[5],End_hex[5];
//
int TestPressedButton(int x,LPEVENT lpEvent);
int TestPressTexbox(int x,LPEVENT lpEvent,char layra[],unsigned
*attribp);
void MainProgram();
int TestPressList(LIST L,LPEVENT lpEvent,char s[],unsigned
*attrib,char *typ);//nhap bang liet ke
int SendFile();
//
void main(void)
{
InitGraphics();
InitValues("Download Program.");
InitScreen();

if (!InitMouse(&MainWindow.rViewPort))
{
OutMessage("Mouse driver not found. Init mouse and return");
getch();
closegraph();
exit(1);
}

ShowMouse();
MainProgram();
closegraph();

}
LUAÂÄN VAÊN TOÁT NGHIEÄP

58

//
void MainProgram()
{
char Name[20],buffer[MAXPATH];
unsigned attrib,Attribp;
SEND Send;
LIST L;
But[0].InitButton(200,380,250,400,LIGHTGRAY,"Send");
But[1].InitButton(400,380,450,400,LIGHTGRAY,"Exit");
Box[0].InitTextBox(50,70,477,90,GREEN,LIGHTGREEN,"Open File");
Port.InitTextBox(50,270,250,290,GREEN,LIGHTGREEN,"Out port");
Port.GetS_in("LPT1");
L.InitList(480,70,500,90,LIGHTGRAY);

But[0].OutButton();//xuat nut lenh
But[1].OutButton();//xuat nut lenh
Box[0].OutTextBox();//xuat hop nhap text
Port.OutTextBox();
L.Show();
setcolor(BLACK);
line(50,150,250,150);
line(50,150,50,215);
setcolor(WHITE);
line(50,215,250,215);
line(250,150,250,215);

outtextxy(50,130,"Free memory request");
outtextxy(55,158,"Start ad :");
outtextxy(55,178,"End ad :");
outtextxy(55,198,"Total :");

OutMessage("Click mouse to chose action");
int kkkk;

char RequestFile[15]="";

do//kiem tra nhap chuot chon cong viec
{
ShowMouse();
lpEvent = GetEvent();//lay bien co chuot
if(TestPressedButton(2,lpEvent)==0)//kiem tra xem da click vao
nut nao
//0:nhan OK
{
char InName[100],OutName[100];
Box[0].GetS(InName);
if(InName[strlen(InName)-1]=='\\')
InName[strlen(InName)-1]='\0';
_dos_getfileattr(InName,&attrib);
if(attrib==16)
{
OutMessage("");
OutError("Please enter a file name");
OutMessage("Click mouse to chose action");
}
else//la file

{
if(End_address!=0)
{
if(OutError("Are you sure ?"))
{
OutMessage("Sending Press Esc to stop if time is
over.");
Send.CatFile(Sta_hex,End_hex,inter_Path);
LUAÂÄN VAÊN TOÁT NGHIEÄP

59

Send.Out();
HideMouse();
if(Send.Out()!=-1)
{
HideMouse();
OutMessage("");
OutError("Task is complete.");
OutMessage("Click mouse to choose action");
}
else
{
HideMouse();
OutMessage("Click mouse to choose action");
}
}
}
}
}//if(TestPressedButton

if(TestPressList(L,lpEvent,Name,&attrib,ftype)==1)
//chon OK
{
switch (attrib)
{
case 16:chdir(Name);
getcwd(buffer, MAXPATH);//lay duong dan hien thoi vao
buffer
strcpy(inter_Path,buffer);
Box[0].GetS_in(inter_Path);
Box[0].OutTextBox();
break;
default:
getcwd(buffer, MAXPATH);//lay duong dan hien thoi vao
buffer
strcpy(inter_Path,buffer);
if(inter_Path[strlen(inter_Path)-1]!='\\')
strcat(inter_Path,"\\");
strcat(inter_Path,Name);
Box[0].GetS_in(inter_Path);
Box[0].DuongDan(inter_Path);
Box[0].OutTextBox();
break;
}//end switch
}//if(TestPressList(
//chon Cancel
TestPressTexbox(NumBox,lpEvent,inter_Path,&Attribp);//Path lay
ra duong dan cho file nhap vao
//ShowMouse();
if(kbhit())

{
kkkk=getch();
if(kkkk==0)kkkk=getch();
}
Box[0].GetS(RequF);
{
int n=strlen(RequF);
if(n>5)//?.???
if(RequF[n-1]!='\\')
{
while(n>0&&RequF[n-1]!='\\')
{
n ;
}
char *strtemp=RequF;
LUAÂÄN VAÊN TOÁT NGHIEÄP

60

for(int m=0;m<n;m++)
strtemp++;
if(strcmp(RequestFile,strtemp))//neu file chon co thay doi
{
setfillstyle(SOLID_FILL,CYAN);
bar(155,155,245,210);
strcpy(RequestFile,strtemp);
strtemp+=strlen(strtemp)-4;
if(!strcmp(strtemp,".prn"))//neu dung file prn
{
FILE *f;

if ((f = fopen(RequF,"rb")) == NULL)
{
fprintf(stderr, "Cannot open input file.\n");
return ;
}
else//neu mo duoc file
{
clock_t start, end;
int period=0;

char c,address[7],buf[8];
int thoat;
int dem;

char
KyTu_Hex[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E
','F','a','b','c','d','e','f'};
int
Gtri_Dec[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,10,11,12,13,14,15};
double Value1=0,Value2=0;
char Total[10];
int FindPos,FindValue;

start = clock();
do
{
fread(&c,1,1,f);
end = clock();
}while(c!='\''&&(period=(end - start) / CLK_TCK)<10);
if(period>=2) goto Error;



fseek(f,-5,SEEK_CUR);
fread(address,10,1,f);
address[4]='\0';
strcpy(Sta_hex,address);
HideMouse();
strcat(address," Hex");
outtextxy(170,158,address);

for (FindPos=3;FindPos>=0;FindPos )
for(FindValue=0;FindValue<22;FindValue++)
if(address[FindPos]==KyTu_Hex[FindValue])
Value1+=pow(16,(3-
FindPos))*Gtri_Dec[FindValue];
St_address=(unsigned int)Value1;

ShowMouse();
thoat=1;
start = clock();
do
{
LUAÂÄN VAÊN TOÁT NGHIEÄP

61

do
{
fread(&c,1,1,f);
end = clock();

}while(c!='m'&&c!='M'&&(period=(end - start) /
CLK_TCK)<10);
if(period>=10) goto Error;
fseek(f,-1,SEEK_CUR);
fread(buf,7,1,f);
buf[7]='\0';
end = clock();

if(!strcmp(buf,"Macros:")||!strcmp(buf,"MACROS:")||!strcmp(buf,"
macros:"))
thoat=0;
}while(thoat&&(period=(end - start) / CLK_TCK)<15);
if(period>=15) goto Error;
fseek(f,-1,SEEK_CUR);
start = clock();
do
{
dem=0;
do
{
fread(&c,1,1,f);
if(c=='\n')
fseek(f,-3,SEEK_CUR);
else
fseek(f,-2,SEEK_CUR);
end = clock();
}while(c!='\''&&(period=(end - start) /
CLK_TCK)<10);
if(period>=10) goto Error;
do

{
dem++;
fread(&c,1,1,f);
if(c=='\n')
dem=20;
fseek(f,-2,SEEK_CUR);
end = clock();
}while(dem<10&&(period=(end - start) / CLK_TCK)<15);
if(period>=15) goto Error;
end = clock();
}while(dem!=20&&(period=(end - start) / CLK_TCK)<15);
if(period>=15) goto Error;
fseek(f,2,SEEK_CUR);
start = clock();
do
{
fread(&c,1,1,f);
end = clock();
}while(c!='\''&&(period=(end - start) / CLK_TCK)<10);
if(period>=10) goto Error;
fseek(f,-5,SEEK_CUR);
fread(buf,4,1,f);
buf[4]='\0';
HideMouse();
strcpy(End_hex,buf);
strcat(buf," Hex");
outtextxy(170,178,buf);

for (FindPos=3;FindPos>=0;FindPos )
LUAÂÄN VAÊN TOÁT NGHIEÄP


62

for(FindValue=0;FindValue<22;FindValue++)
if(buf[FindPos]==KyTu_Hex[FindValue])
Value2+=pow(16,(3-
FindPos))*Gtri_Dec[FindValue];
End_address=(unsigned int)Value2;
Value1=Value2-Value1+1;
sprintf(Total,"%0.0f bytes",Value1);
outtextxy(160,198,Total);

outtextxy(260,250,buf);
ShowMouse();
while(0)
{
Error:
strcpy(buf,"error");
setfillstyle(SOLID_FILL,CYAN);
HideMouse();
bar(155,155,245,210);
outtextxy(200,158,buf);
outtextxy(200,178,buf);
outtextxy(200,198,buf);
ShowMouse();
}
fcloseall();
}
}
else

{
OutMessage("");
}
}
}
}
if(kkkk==27)
{
HideMouse();
if(!OutError("Do you want to quit ?"))
kkkk=0;
ShowMouse();
}
}while(kkkk!=27);
}
//
int TestPressedButton(int x,LPEVENT lpEvent)//kiem tra cac nut
{
if(lpEvent->Msg==1)
{
for(int i=0;i<x;i++)
if(But[i].Left()<= lpEvent->Posx&&But[i].Top()<=lpEvent-
>Posy&&But[i].Right()>=lpEvent->Posx&&But[i].Bottom()>=lpEvent->Posy)
{
HideMouse();
But[i].PressButton();
delay(100);
But[i].OutButton();
if(i==1)
{

if(OutError("Do you want to quit ?")==0)
return -1;
closegraph();
exit(1);
}
ShowMouse();
LUAÂÄN VAÊN TOÁT NGHIEÄP

63

return i;
}
}
return -1;
}
//
int TestPressTexbox(int x,LPEVENT lpEvent,char layra[],unsigned
*attribp)
{
*attribp=0;
if(lpEvent->Msg==1)
{
for(int i=0;i<x;i++)
if(Box[i].Left()<= lpEvent->Posx&&Box[i].Top()<=lpEvent-
>Posy&&Box[i].Right()>=lpEvent->Posx&&Box[i].Bottom()>=lpEvent->Posy)
{
HideMouse();//giau chuot de khong bi vet lem mau o vi tri
chuot
char LastName[100];
Box[i].GetS(LastName);

OutMessage("Enter a file name. Press Enter to finish, Esc to
ignore.");
Box[i].Path();//lay Path vao bien S cua TEXTBOX
Box[i].OutTextBox();
Box[i].GetS(layra);//lay ra text da nhap vao

//tao chuan cho chuoi Path
if(layra[strlen(layra)-1]=='>')//gat bo dau \> sau thu muc
nhung van giu lai doi voi o dia
if(layra[strlen(layra)-2]=='\\')
if(layra[strlen(layra)-3]==':')//dang a:\>
layra[strlen(layra)-1]='\0';//ra a:\
else //dang a:\fname\>
layra[strlen(layra)-2]='\0';//ra dang a:\fname
else
layra[strlen(layra)-1]='\0';//bo dau >
if(layra[strlen(layra)-1]=='\\')//gat bo dau \ sau thu muc
nhung van giu lai doi voi o dia
if(layra[strlen(layra)-2]!=':')//dang a:\fname\
layra[strlen(layra)-1]='\0';
if(layra[strlen(layra)-1]==':')
if(strlen(layra)==2)//dang a:
strcat(layra,"\\");//ra a:\

int NotExist=_dos_getfileattr(layra, attribp);

int m=strlen(layra)-1;
while(layra[m]!='\\')//dem so ky tu thuoc ve phan Path
m ;
for(int n=0;n<m;n++)//doi thanh chu hoa duong dan

if(layra[n]>='a'&&layra[n]<='z')
layra[n]=toupper(layra[n]);
Box[i].GetS_in(layra);

if(i==0)//chon Open file
{
if(*attribp==16)
{
m=strlen(layra);
while(layra[ m]!='\\')//doi sang chu hoa ten cua thu
muc
layra[m]=toupper(layra[m]);

LUAÂÄN VAÊN TOÁT NGHIEÄP

64

if(layra[1]==':'&&layra[0]!=LastName[0])
setdisk(toupper(layra[0])-'A');
chdir(layra);//vao them mot cap thu muc
if(layra[strlen(layra)-1]!='\\')
strcat(layra,"\\");
Box[0].GetS_in(layra);
Box[0].OutTextBox();
OutMessage("Click mouse to chose action");
return 0;
}
if (NotExist == 0)
{
return 0;

}
else
{
OutMessage("File does not exist.");
Box[0].GetS_in(LastName);
Box[0].OutTextBox();
return 1;
}
}//end if Open
}
}
return -1;
}
//
int TestPressList(LIST L,LPEVENT lpEvent,char s[],unsigned
*attrib,char *typ)
{
int k=0;
if(lpEvent->Msg==1)

if(L.Left()<= lpEvent->Posx&&L.Top()<=lpEvent-
>Posy&&L.Right()>=lpEvent->Posx&&L.Bottom()>=lpEvent->Posy)
{
OutMessage("Open File Name");
delay(100);//neu khong thi khong the putimage, khong thoat khoi
bang list duoc
k=L.Press(s,&Box[0],attrib,DiskName,&DName,typ);
}
return k;
}

//
II.CLASS BUTTON.HPP
#if !defined __BUTTON__
#define __BUTTON__
class BUTTON
{
private:
int l,t,r,b;//toa do box
int Color;
char S[100];
public:
void InitButton(int x1,int y1,int x2,int y2,int color,char s[]);
void OutButton();
void PressButton();
int Left() {return l;}
int Right() {return r;}
int Top() {return t;}
int Bottom() {return b;}
};
#endif
LUAÂÄN VAÊN TOÁT NGHIEÄP

65

III.MODULE BUTTON.CPP
#include <graphics.h>
#include <string.h>

#include "button.hpp"
//

void BUTTON::InitButton(int x1,int y1,int x2,int y2,int color,char
s[])
{
l=x1;
t=y1;
r=x2;
b=y2;
Color=color;
strcpy(S,s);
}
//
void BUTTON::OutButton()
{
setfillstyle(SOLID_FILL,Color);
bar(l,t,r,b);
setcolor(WHITE);
line(l,t,r,t);
line(l,t,l,b);
setcolor(BLACK);
line(r,t,r,b);
line(l,b,r,b);
setcolor(BLUE);
int x=l+(r-l-textwidth(S))/2,y=t+(b-t-textheight(S))/2;
outtextxy(x,y,S);
}
//
void BUTTON::PressButton()
{
setcolor(BLACK);
line(l,t,r,t);

line(l,t,l,b);
setcolor(WHITE);
line(r,t,r,b);
line(l,b,r,b);
}
//
IV. CLASS DISKLIST.HPP
#include "textbox.hpp"
#include "mouse.h"
#if !defined __DISKLIST__
#define __DISLIST__

extern char Disk(char *s);
extern int ChosenDisk(char *s,/*TEXTBOX *Box,*/char PreDisk,char
CurDisk);
extern LPEVENT CheckChooseDisk(char *DiskName,char
*DName,LPEVENT lpEvent,int x,int y);
extern char *FileType(TEXTBOX *b);

#endif
V.MODULE DISKLIST.CPP
#include <dir.h>
#include <alloc.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <graphics.h>
LUAÂÄN VAÊN TOÁT NGHIEÄP

66


#include <bios.h>
#include <PROCESS.H>
// <PROCESS.H, STDLIB.H>

#include "disklist.hpp"

char Disk(char *s)//kiem tra co bao nhieu o dia trong may, luu ten cac
o dia vao chuoi s, tra ve ten o dia hien hanh
{
int save,disk, disks;
int equip_check;
char c[4];
s[0]='\0';
save = getdisk();
equip_check = biosequip();
equip_check >>= 6;
equip_check = (equip_check & 3) + 1;//dem so o dia mem
for (disk = 0;disk < 26;++disk)
{
setdisk(disk);
if (disk == getdisk())
{
sprintf(c,"%c",disk +'A');
strcat(s,c);
}
}
setdisk(save);
if(equip_check==1&&s[1]=='B')//neu chi co ot o dia mem
for(int i=1;i<strlen(s);i++)//thi khong co ten o dia B

s[i]=s[i+1];//loai ky tu B ra khoi chuoi luu ten o dia
}
//
int ChosenDisk(char *s,/*TEXTBOX *Box,*/char PreDisk,char CurDisk)
//tra ve ten o dia
{
int i;
if(PreDisk!=CurDisk)
{
for(i=0;i<strlen(s);i++)
if((CurDisk)==s[i])//hien thi cho dia moi
{

setdisk(s[i]-'A');
char buffer[MAXPATH],*iem;
if((iem=getcwd(buffer, MAXPATH))==NULL)
{
OutMessage("Driver is not ready.");
i=0;
ShowMouse();
return s[i];
}
}
return s[i];
}
//
LPEVENT CheckChooseDisk(char *DiskName,char *DName,LPEVENT lpEvent,int
x,int y)
{
int NumDisk=strlen(DiskName);

int x1=x-30,y1=y+NumDisk*14+12;

void far *buf;//con tro chi vung luu tru man hinh
unsigned int size = imagesize(x1,y,x,y1);

×