Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 92 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
92
Dung lượng
393,64 KB
Nội dung
Chương 11: THIẾT KẾ PHẦM MỀM PASCAL Giới thiệu ngôn ngữ PASCAL: 1.Xuất xứ: Pascal ngôn ngữ lập trình cấp cao giáo sư NIKLAUS WIRTH trường đại học kỹ thuật ZURICH Thụy Só sáng tạo vào năm 1970, đặt tân PASCAL để tưởng nhớ đến BLAISE PASCAL, nhà toán học, nhà triết học PHÁP kỷ 17 Người chế tạo kiểu máy tính khí PASCAL coi ngôn ngữ đẹp họ cổ điển, ngôn ngữ mạnh, phổ biến tảng cho môn lập trình khác, có nhiều tính ưu việt Người ta nhận thấy lập trình cách khoa học, logic cho chương trình cụ thể dựa phân tích thuật toán suy diễn toán học IV.3.2.các ưư điểmcủa ngôn ngữ PASCAL: PASCAL thực cách xác cấu trúc liệu phức tạp thuật toán phức tạp PASCAL có tính mềm dẽo tiện lợi việc chia nhỏ vấn đề giải độc lập Có đủ phép toán số học, logic,…Các kiểu liệu PASCAL phong phú, thể nhiều kiểu liệu từ đơn giản đến phức tạp Ngôn ngữ PASCAL trở thành ngôn ngữ thống, ngôn ngữ phổ biến, dùng nhiều trường học lónh vực khác IV.3.3.Turbo pascal: Từ ngôn ngữ PASCAL giáo sư WIRTH sáng tác, hãng phần mền phát triển thêm tạo chương trình dịch ngôn ngữ PASCAL như: - OS PASCAL:Được gọi PASCAL chuẩn - IBM PASCAL : Của hãng Microsoft - TURBO PASCAL : Của hãng BORLAND - Ưu điểm TURBO PASCAL: - Tiện cho việc dịch liên hoàn với việc soạn thảo, sửa -0- chữa - Tốc độ dịch nhanh - Chương trình dịch gọn, đòi hỏi nhớ, có nhiều hàm,nhiều công cụ hỗ trợ - Làm việc thoải mái, có hiệu Tính đối thoại người máy phong phú - Giải hầu hết toán kỹ thuật, thiết kế đồ họa, quản lý, xây dựng phần mềm hệ thống - Dễ dạy học - Luôn cải tiến mở rộng phát triển không ngừng -1- IV.4.Lưu đổ tổng quát mạch quang báo giao tiếp với máy tính: Begin NHẬP CHUỖI ĐỌC CHUỖI MÃ HOÁ XUẤT DỮ LIỆU KIT NHẬN DỮ LIỆU KIT THI HÀNH CHƯƠNG TRÌNH QUANG BÁO End -2- IV.4.1.Lưu đồ đọc chuỗi mã hoá: B MÃ HÓA Begin i:=i+2 i:=1 Kiểm tra kết thúc chuổi A A Nhận dạng End a,e,u,o 6,7,8 St[i+1 B ] Mã hóa 5 Mã hóa Mã hóa i:=i+2 St[i+1] i:=i+1 A A Kiểmtra chuổi Kiểm tra kết thúc chuổi i:=i+1 A End Kiểm tra kết thúc chuổi End -3- End C MÃ HÓA i:=i+2 Kiểm tra kết thúc chuỗi A Y,I End Không dấu D C Mã hóa Không dấu 1-5 Mã hóa Mã hóa i:=i+2 St[i+1] i:=i+1 A A Kiểmtra Chuỗi i:=i+1 Kiểm tra kết thúc chuỗi A End Kiểm tra kết thúc chuỗi End -4- End -5- d MÃ HÓA i:=i+2 Kiểm tra kết thúc A $ End D 1-4 M,N,O,P,C,T,Y,I,U d Mã hóa 1-9 Mã hóa Mã hóa i:=i+2 St[i+1] i:=i+1 A A Kiểm tra kết thúc chuổi Kiểm tra kết thúc chuổi i:=i+1 A End Kiểm tra kết thúc chuổi End -6- End Lưu đồ gởi liệu máy tính Begin * Kết thúc chuổi STB = Busy =0 End Gởi liệu STB=0 S ACK=1 Ñ STB=1 Ñ S ACK=0 * -7- Z80 ; ; ; RESET MAY VA DUA RA DAU NHAC ; ; ; ORG 0000H LD A,8BH LD (KEY_IO),A ; KHOI TAO 8255 I PORT A RA PORT C VAO LD A,81H LD (DIS_IO),A ; KHOI TAO 8255 II CA PORT RA ; ; ; HIEN THI DAU NHAC CUA HE THONG ; ; ; RESET: LD HL,SYS_SP LD SP,HL LD A,01 LD (ROLPAS),A LD A,00H LD (KEYFLG),A CALL RS164 LD B,03H LD IX,DISBUF LD A,38H LP11: LD (IX),A INC IX DJNZ LP11 LD A,7CH LD (IX),A INC IX LD A,38H LD (IX),A INC IX LD A,10H LD (IX),A LD A,3EH ; ; -8- ; D7,D6,D5(6),D4(5),D3(4),D2(3),D1(DEN 2),D0(DEN 1) ; ; ; CALL CLRSCR LD IX,FUNSEL LD (MNPTR),IX LD HL,DISBUF LD (DISPTR),HL MIT: LD A,(VAO) CP 00H JR Z,PUT CP 01H JR Z,PUT CP 03H JP NDL CP 09H JP Z,PHAI CP 0AH JP Z,TRAI JR MIT ; ; ; CHUONG TRINH RESET IC 74164 ; ; ; RS164: LD B,81 LPRS: LD A,00H LD (CKOUT),A ; CANH XUONG XUNG CK LD (DATAOUT),A CALL DLPUT LD A,01H ; CANH LEN XUNG CK LD (CKOUT),A DJNZ LPRS RET ; ; ; CHUONG TRINH HIEN THI DU LIEU; ; RA MA TRAN LED CHUONG TRINH ; ; NAY CO THE THUC HIEN DOC LAP ; ; VUNG NHO DEM CHO DEN TU ; ; DISBUF DEN DISBUF + 80 ; -9- end; 'C':begin for k:=1 to begin bat_tay1; port[$378]:=chu[17,k]; bat_tay2; end; i:=i+2; end; 'I':begin for k:=1 to begin bat_tay1; port[$378]:=chu[32,k]; bat_tay2; end; i:=i+2; end; 'M':begin for k:=1 to begin bat_tay1; port[$378]:=chu[40,k]; bat_tay2; end; i:=i+2; end; 'N':begin for k:=1 to begin bat_tay1; port[$378]:=chu[45,k]; bat_tay2; end; -77- i:=i+2; end; 'P':begin for k:=1 to begin bat_tay1; port[$378]:=chu[60,k]; bat_tay2; end; i:=i+2; end; 'T':begin for k:=1 to begin bat_tay1; port[$378]:=chu[66,k]; bat_tay2; end; i:=i+2; end; 'U':begin for k:=1 to begin bat_tay1; port[$378]:=chu[75,k]; bat_tay2; end; i:=i+2; end; 'Y':begin for k:=1 to begin bat_tay1; port[$378]:=chu[83,k]; -78- bat_tay2; end; i:=i+2; end; else; i:=i+1; end; '2':case upcase(st[i+1]) of 'A':begin for k:=1 to begin bat_tay1; port[$378]:=chu[12,k]; bat_tay2; end; i:=i+2; end; 'I':begin for k:=1 to begin bat_tay1; port[$378]:=chu[33,k]; bat_tay2; end; i:=i+2; end; 'M':begin for k:=1 to begin bat_tay1; port[$378]:=chu[41,k]; bat_tay2; end; i:=i+2; end; 'P':begin for k:=1 to -79- begin bat_tay1; port[$378]:=chu[61,k]; bat_tay2; end; i:=i+2; end; 'N':begin for k:=1 to begin bat_tay1; port[$378]:=chu[46,k]; bat_tay2; end; i:=i+2 end; 'U':begin for k:=1 to begin bat_tay1; port[$378]:=chu[76,k]; bat_tay2; end; i:=i+2; end; 'Y':begin for k:=1 to begin bat_tay1; port[$378]:=chu[84,k]; bat_tay2; end; i:=i+2; end; else; -80- i:=i+1; end; '3':case upcase(st[i+1]) of 'A':begin for k:=1 to begin bat_tay1; port[$378]:=chu[13,k]; bat_tay2; end; i:=i+2; end; 'I':begin for k:=1 to begin bat_tay1; port[$378]:=chu[34,k]; bat_tay2; end; i:=i+2; end; 'M':begin for k:=1 to begin bat_tay1; port[$378]:=chu[42,k]; bat_tay2; end; i:=i+2; end; 'N':begin for k:=1 to begin bat_tay1; port[$378]:=chu[47,k]; -81- bat_tay2; end; i:=i+2; end; 'U':begin for k:=1 to begin bat_tay1; port[$378]:=chu[77,k]; bat_tay2; end; i:=i+2; end; 'Y':begin for k:=1 to begin bat_tay1; port[$378]:=chu[85,k]; bat_tay2; end; i:=i+2; end; else i:=i+1; end; '4':case upcase(st[i+1]) of 'A':begin for k:=1 to begin bat_tay1; port[$378]:=chu[14,k]; bat_tay2; end; i:=i+2; end; 'I':begin -82- for k:=1 to begin bat_tay1; port[$378]:=chu[35,k]; bat_tay2; end; i:=i+2; end; 'M':begin for k:=1 to begin bat_tay1; port[$378]:=chu[43,k]; bat_tay2; end; i:=i+2; end; 'N':begin for k:=1 to begin bat_tay1; port[$378]:=chu[48,k]; bat_tay2; end; i:=i+2; end; 'U':begin for k:=1 to begin bat_tay1; port[$378]:=chu[78,k]; bat_tay2; end; i:=i+2; end; -83- 'Y':begin for k:=1 to begin bat_tay1; port[$378]:=chu[86,k]; bat_tay2; end; i:=i+2; end; else i:=i+1; end; ' ':begin for k:=1 to begin bat_tay1; port[$378]:=chu[98,k]; bat_tay2; end; i:=i+1; end; '.':begin for k:=1 to begin bat_tay1; port[$378]:=chu[99,k]; bat_tay2; end; i:=i+1; end; ':':begin for k:=1 to begin bat_tay1; port[$378]:=chu[103,k]; -84- bat_tay2; end; i:=i+1; end; '-':begin for k:=1 to begin bat_tay1; port[$378]:=chu[100,k]; bat_tay2; end; i:=i+1; end; '?':begin for k:=1 to begin bat_tay1; port[$378]:=chu[101,k]; bat_tay2; end; i:=i+1; end; '!':begin for k:=1 to begin bat_tay1; port[$378]:=chu[102,k]; bat_tay2; end; i:=i+1; end; '/':begin for k:=1 to begin bat_tay1; -85- port[$378]:=chu[104,k]; bat_tay2; end; i:=i+1; end; '\':begin for k:=1 to begin bat_tay1; port[$378]:=chu[105,k]; bat_tay2; end; i:=i+1; end; '"':begin for k:=1 to begin bat_tay1; port[$378]:=chu[106,k]; bat_tay2; end; i:=i+1; end; '~':begin for k:=1 to begin bat_tay1; port[$378]:=chu[107,k]; bat_tay2; end; i:=i+1; end; else halt; end; until (i=length(st)+1) -86- or(keypressed) ; repeat x:=port[$379]and $80; until x=$00; port[$378]:=$55; port[$37A]:=$0B; repeat x:=port[$379]and $80; until x=$80; repeat x:=port[$379] and $C0; until x=$C0; port[$37A]:=$0A; repeat x:=port[$379] and $80; until x=$80; repeat x:=port[$379]and $80; until x=$00; port[$378]:=$00; end; { } PROCEDURE NHAP; begin CLRSCR; test; cua_so; repeat x:=port[$379] and $40; until x=$00; gotoxy(25,2); writeln('********************************'); gotoxy(25,3); writeln('* NHAP CHU HIEN THI QUANG BAO *'); gotoxy(25,4); writeln('*===============*==============*'); -87- gotoxy(25,5); writeln('*NHAP CHU CO DAU THEO FONT VNI *'); gotoxy(25,6); writeln('*===============*==============*'); gotoxy(25,7); writeln('********************************'); gotoxy(25,9); readln(st); xuat(h); repeat x:=port[$379] and $80; until x=$00; gotoxy(25,11); clrscr; gotoxy(25,7); writeln('NHAN FIM KIT Z80 '); gotoxy(25,8); writeln('NHAN FIM CHON TIEP'); end; { } procedure chay_phai; begin clrscr; gotoxy(25,4); writeln('CHUONG TRINH CHAY PHAI XONG'); end; { } procedure chay_trai; begin clrscr; repeat x:= port[$379] and $20; until x=$20; -88- repeat x:=port[$379] and $80; until x=$80; gotoxy(25,4); writeln('CHUONG TRINH CHAY TRAI XONG'); end; { } procedure xem_so_byte_truyen; begin clrscr; gotoxy(25,3); writeln('SO BYTE TRUYEN DUOC:',n:3,'BYTE'); gotoxy(25,4); writeln('DU LIEU DA XONG CHON TIEP'); end; { } procedure thoat; begin clrscr; gotoxy(25,2); writeln('BAN CO CHAC LA THOAT KHONG "