Thiết kế giao tiếp máy tính với KIT 8085, chương 7

Chia sẻ: Nguyen Van Dau | Ngày: | Loại File: PDF | Số trang:81

0
54
lượt xem
21
download

Thiết kế giao tiếp máy tính với KIT 8085, chương 7

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Sau khi chọn xong file thì trong bảng “Free memory request” xuất hiện các địa chỉ đầu cuối, và dung lượng bộ nhớ sẽ sử dụng. Sau đó click Send để gởi dữ liệu đi. Khi quá trình truyền file kết thúc thì xuất hiện thông báo “Task is complete.”

Chủ đề:
Lưu

Nội dung Text: Thiết kế giao tiếp máy tính với KIT 8085, chương 7

  1. LUAÂÄN VAÊN TOÁT NGHIEÄP 1 Chương 7: Chöông trình nhaän döõ lieäu ôû Kit thöïc taäp vi xöû lyù 8085. ;+++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++;Chuong trinh nhan du lieu tu may tinh goi xuong Thiet bi thuc tap ;vi xu li 8085. ;+++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++ Org 2500h MVI A,99h ;khoi tao 8255, Mode 0: PortA nhap du lieu, PortB xuat OUT RegCNT ;trang thai, PortC nhan lenh dieu khien. MVI A,80h ;bao cho may tinh biet thiet bi dang ban. OUT PortB MVI C,00h ;reset bien dem dia chi. CALL READY ;xuat chu "READY" ra hien thi tren 5 LED 7 doan. WaitGO: CALL KEYBRD ;doi nhan phim. CPI KeyGO ;chuong trinh chi thuc hien tiep khi nhan dung JNZ WaitGO ;phim "GO". CALL SENDING ;nhan dung phim "GO" se xuat hien "SENDING" tren 8 LED. MVI A,00h ;bao cho may tinh biet thiet bi da san sang tiep ;nhan OUT PortB ;du lieu. CkSTB1:IN PortC ;doc lenh dieu khien STROBE tai PortC. ANI 01h CPI 01h JNZ CkSTB1 ;neu STROBE # 1 thi doi tiep. MVI A,80h ;bao BUSY\ = 0, ACK = 0.
  2. LUAÂÄN VAÊN TOÁT NGHIEÄP 2 OUT PortB IN PortA ;doc du lieu vao. MOV B,A ;tam cat du lieu vao thanh ghi B. MVI A,0C0h ;bao ACK = 1. OUT PortB ChkAF1: IN PortC ;doc lenh dieu khien AF. ANI 02h CPI 02h JNZ ChkAF1 ;neu AF # 1 thi doi tiep. MOV A,B ;hoan tra B lai cho A. ANI 0F0h ;che nibble thap va reset bit ERROR = 0. OUT PortB ;xuat nibble cao va bao ERROR = 0. ChkAF0: IN PortC ;doc lenh dieu khien AF. ANI 02h CPI 00h JNZ ChkAF0 ;neu AF # 0 thi doi tiep. MOV A,B ;hoan tra B lai cho A. RLC ;dich 4 bit thap thanh 4 bit cao tuong ung. RLC RLC RLC ANI 0F0h ;che nua byte thap thap. ORI 08h ;set bit ERROR = 1. OUT PortB ;xuat nibble thap va bao ERROR = 1. ChkSTB0:IN PortC ;doc lenh dieu khien STROBE. ANI 01h CPI 00h JNZ ChkSTB0 ;neu STROBE # 0 thi doi tiep. IN PortA ;doc du lieu. CPI 0FFh ;FFh la ma bao du lieu dung. JZ NoChk CALL PROCESS NoChk: MVI A,40h ;bao BUSY\ = 1. OUT PortB
  3. LUAÂÄN VAÊN TOÁT NGHIEÄP 3 JMP ChkSTB1 ;chuan bi nhan byte ke tiep. ;+++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++ ;Chuong trinh con hien thi "READY" tren nam LED 7 doan. ;+++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++ READY: PUSH PSW MVI A,10h ;khoi tao 8279: hien thi 8 ki tu,loi vao phai, STA CntI79 ;quet ban phim co lap ma, khoa ngoai 2 phim. MVI A,3Eh ;lap trinh xung Clock = 100 KHz. STA CntI79 MVI A,0C3h ;xoa hien thi va xoa FIFO. STA CntI79 MVI A,01h ;tri hoan 0.1 ms > 160 us. CALL DELAY MVI A,90h ;bat dau ghi vao tai LED dau tien ben phai, co STA CntI79 ;tang dia chi tu dong. MVI A,31h ;cho hien thi "R". STA DataI79 MVI A,79h ;cho hien thi "E". STA DataI79 MVI A,77h ;cho hien thi "A". STA DataI79 MVI A,5Eh ;cho hien thi "D". STA DataI79 MVI A,6Eh ;cho hien thi "Y". STA DataI79 POP PSW RET ;+++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++;Chuong trinh con hien thi "SENDING" tren bay LED 7 doan. ;+++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++ SENDING:POP PSW
  4. LUAÂÄN VAÊN TOÁT NGHIEÄP 4 MVI A,10h ;khoi tao 8279: hien thi 8 ki tu,loi vao phai, STA CntI79 ;quet ban phim co lap ma, khoa ngoai 2 phim. MVI A,3Eh ;lap trinh xung Clock = 100 KHz. STA CntI79 MVI A,0C3h ;xoa hien thi va xoa FIFO. STA CntI79 MVI A,01h ;tri hoan 0.1 ms > 160 us. CALL DELAY MVI A,90h ;bat dau ghi vao tai LED dau tien ben phai, co STA CntI79 ;tang dia chi tu dong. MVI A,6Dh ;cho hien thi "S". STA DataI79 MVI A,79h ;cho hien thi "E". STA DataI79 MVI A,37h ;cho hien thi "N". STA DataI79 MVI A,5Eh ;cho hien thi "D". STA DataI79 MVI A,06h ;cho hien thi "I". STA DataI79 MVI A,37h ;cho hien thi "N". STA DataI79 MVI A,6Fh ;cho hien thi "G". STA DataI79 POP PSW RET ;+++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++;Chuong trinh con xu li du lieu: Chuong trinh nay se nhan dia chi bat ;dau va dia chi cham dut cua vung du lieu, cac ma may cua chuong trinh ;tren may tinh do xuong se duoc dat trong pham vi vung nay.
  5. LUAÂÄN VAÊN TOÁT NGHIEÄP 5 ;+++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++ PROCESS:MOV A,C ;kiem tra xem co phai day la byte thu nhat ;khong ? CPI 00h JNZ A1 MOV H,B ;neu dung thi cat byte thu nhat vao thanh ghi H. INR C ;tang bien dem byte dia chi len 1 don vi. RET A1: MOV A,C ;kiem tra xem co phai day la byte thu hai khong ? CPI 01h JNZ A2 MOV L,B ;neu dung thi cat byte thu hai vao thanh ghi L. INR C ;tang bien dem byte dia chi len 1 don vi. RET A2: MOV A,C ;kiem tra xem co phai day la byte thu ba khong ? CPI 02h JNZ A3 MOV D,B ;neu dung thi cat byte thu ba vao thanh ghi D. INR C ;tang bien dem byte dia chi len 1 don vi. RET A3: MOV A,C ;kiem tra xem day co phai la byte thu tu khong ? CPI 03h JNZ A4 MOV E,B ;neu dung thi cat byte thu tu vao thanh ghi E. INR C ;tang bien dem byte dia chi len 1 don vi. RET
  6. LUAÂÄN VAÊN TOÁT NGHIEÄP 6 A4: MOV M,B ;ke tu byte thu nam tro di se duoc cat vao o nho co INX H ;dia chi do cap thanh ghi HL quan li. MOV A,D CPI H RNZ MOV A,E CMP L RNZ ;thoat neu HL tro den dia chi cham dut nam trong DE. CALL END ;cho hien thi "END." tren ba LED 7 doan. MVI A,40h ;bao BUSY\ = 1. OUT PortB HLT ;+++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++;Chuong trinh con hien thi "END." tren ba LED 7 doan. ;+++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++ END: PUSH PSW MVI A,10h ;khoi tao 8279: hien thi 8 ki tu,loi vao phai, STA CntI79 ;quet ban phim co lap ma, khoa ngoai 2 phim. MVI A,3Eh ;lap trinh xung Clock = 100 KHz. STA CntI79 MVI A,0C3h ;xoa hien thi va xoa FIFO. STA CntI79 MVI A,01h ;tri hoan 0.1 ms > 160 us. CALL DELAY MVI A,90h ;bat dau ghi vao tai LED dau tien ben phai, co STA CntI79 ;tang dia chi tu dong. MVI A,79h ;cho hien thi "E". STA DataI79 MVI A,54h ;cho hien thi "N". STA DataI79
  7. LUAÂÄN VAÊN TOÁT NGHIEÄP 7 MVI A,0DEh ;cho hien thi "D.". STA DataI79 POP PSW RET ;+++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++;Hai chuong trinh con sau day da co san trong thiet bi thuc tap Vi xu ;li 8085 ;nen nguoi thuc hien de tai nay thay khong can thiet phai viet lai va ;trinh bay ;ra. Do la 2 chuong trinh: ;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
  8. LUAÂÄN VAÊN TOÁT NGHIEÄP 8 B.Module Demo.cpp #include #include #include #include #include #include #include #include #include #include #include #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]; //------------------------------------------ ---------------
  9. LUAÂÄN VAÊN TOÁT NGHIEÄP 9 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(); } //------------------------------------------ --------------- void MainProgram() { char Name[20],buffer[MAXPATH]; unsigned attrib,Attribp; SEND Send; LIST L;
  10. LUAÂÄN VAÊN TOÁT NGHIEÄP 10 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,LIGHTG REEN,"Open File"); Port.InitTextBox(50,270,250,290,GREEN,LIGHTG REEN,"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 {
  11. LUAÂÄN VAÊN TOÁT NGHIEÄP 11 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); Send.Out(); HideMouse(); if(Send.Out()!=-1) { HideMouse(); OutMessage(""); OutError("Task is complete.");
  12. LUAÂÄN VAÊN TOÁT NGHIEÄP 12 OutMessage("Click mouse to choose action"); } else { HideMouse(); OutMessage("Click mouse to choose action"); } } } } }//if(TestPressedButton if(TestPressList(L,lpEvent,Name,&attrib,ftyp e)==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;
  13. LUAÂÄN VAÊN TOÁT NGHIEÄP 13 }//end switch }//if(TestPressList( //chon Cancel TestPressTexbox(NumBox,lpEvent,inter_Path,&A ttribp);//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; for(int m=0;m
  14. LUAÂÄN VAÊN TOÁT NGHIEÄP 14 { 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)=2) goto Error; fseek(f,-5,SEEK_CUR); fread(address,10,1,f); address[4]='\0'; strcpy(Sta_hex,address);
  15. LUAÂÄN VAÊN TOÁT NGHIEÄP 15 HideMouse(); strcat(address," Hex"); outtextxy(170,158,address); for (FindPos=3;FindPos>=0;FindPos--) for(FindValue=0;FindValue
  16. LUAÂÄN VAÊN TOÁT NGHIEÄP 16 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) goto Error; do { dem++; fread(&c,1,1,f); if(c=='\n') dem=20; fseek(f,-2,SEEK_CUR); end = clock(); }while(dem
  17. LUAÂÄN VAÊN TOÁT NGHIEÄP 17 }while(c!='\''&&(period=(end - start) / CLK_TCK)=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--) for(FindValue=0;FindValue
  18. LUAÂÄN VAÊN TOÁT NGHIEÄP 18 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=lpEvent- >Posx&&But[i].Bottom()>=lpEvent->Posy) { HideMouse(); But[i].PressButton(); delay(100); But[i].OutButton(); if(i==1)
  19. LUAÂÄN VAÊN TOÁT NGHIEÄP 19 { if(OutError("Do you want to quit ?")==0) return -1; closegraph(); exit(1); } ShowMouse(); 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=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
  20. LUAÂÄN VAÊN TOÁT NGHIEÄP 20 //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='a'&&layra[n]
Đồng bộ tài khoản