CHƯƠNG 1 GIỚI THIỆU về IC sử DỤNG

93 246 0
CHƯƠNG 1 GIỚI THIỆU về IC sử DỤNG

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

CHƯƠNG I: Giới thiệu VỀ IC sử dụng Vi xử lý AT89C51: Cấu tạo chân Tùy theo khả (về kinh tế, kỹ thuật, …) mà nhà sản xuất sản phẩm ứng dụng chọn kiểu chân ATMEL đưa 2.2 Sơ đồ khối  Mô tả sơ đồ chân : Sơ đồ chân 8951 tương tự 8051 (trình bày sau ) + Port : gồm chân từ 32 -39 ( P0.0 đến P0.7 ) Port có chức kép Thông thường port dùng làm port I/O Nếu có sử dụng nhớ Port dùng để multiplex đòa phần thấp data bus + Port : gồm chân từ - ( P1.0 - P1.7 ) Port có chức giao tiếp I/O + Port : gồm chân từ 22 - 28 ( P2.0-P2.7 ) Đây port có chức kép, chức port I/O , port dùng làm đòa phần cao cho address bus + Port : gồm chân 10-17 ( P3.0-P3.7 ) Port có chức kép Ngoài chức I/O, chân port có chức đặc biệt : Bit P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 Tên RXD TXD /INT0 /INT1 T0 T1 /WR /RD Chức Dữ liệu nhận cho port nối tiếp Dữ liệu phát cho port nối tiếp Ngắt Ngắt Ngõ vào Timer/Counter Ngõ vào Timer/Counter Xung ghi nhớ liệu Xung đọc nhớ liệu Bảng 1-Bảng chức port + Chân /PSEN (Program Store Enable) : (chân 29 ) tín hiệu tác động mức thấp, có chức điều khiển truy xuất nhớ ngoài, thường nối với chân OE ROM Khi thực thi chương trình chân /PSEN giữ tích cực mức thấp + Chân /EA ( External access ) : ( chân 31) thường nối lên mức cao (+5V) mức thấp (GND) Nếu mức cao, vi xử lý thực chương trình từ ROM nội khoảng đòa thấp (4KB) Nếu mức thấp, chương trình thi hành từ nhớ mở rộng Nếu /EA nối xuống mức thấp,bộ nhớ bên chương trình bò cấm chương trình thi hành từ nhớ mở rộng + Chân ALE ( Address Latch Enable ) : (chân 30 ) tín hiệu dùng để chốt đòa byte thấp vào ghi bên chu kỳ đầu nhớ, sau chu kỳ bôï nhớ, đường port dùng để xuất nhập liệu Các xung nhòp tín hiệu ALE có tốc độ 1/6 lần tần số dao động chip + Chân RST ( Reset) : Ngõ vào RST chân ngõ RESET VXL, chân tác động mức cao Khi tín hiệu đưa lên mức cao ( chu kỳ máy) ghi bên nhận giá trò thích hợp để khởi động hệ thống + Nguồn : 8951 8051 hoạt động với nguồn +5V DC ( chân 40 ) GND ( chân 20) + Bộ dao động trêân chip : XTAL1 đầu vào đầu tương ứng khuếch đại đảo dùng làm dao động nội on-chip Có thể dùng thạch anh hay cộng hưởng ceramic Để lái vi điều khiển từ nguồn xung clock bên ngoài, XTAL2 phải để trống XTAL1 nối đến nguồn lái Không có yêu cầu duty cycle phải ý đến thời gian tối đa tối thiểu mức điện áp cao mức điện áp thấp Tổ chức nhớ chương trình : AT89C51 tổ chức nhớ thành vùng nhớ riêng biệt cho chương trình liệu AT89C51 có 4K ROM nội có 128 bytes nhớ RAM Tuy nhiên nhớ chương trình nhớ liệu có mở rộng lên đến 64 Kbyte Bộ nhớ RAM nội tổ chức vùng : Vùng RAM : gồm bank ghi có đòa từ 00H đến 1FH, RAM đòa hoá bit có đòa từ 20H-2FH Vùng RAM đa dụng : có đòa từ 30H-7FH + Các ghi chức đặc biệt có đòa từ 80H-FFH + Các từ trạng thái chương trình Bit Ký hiệu Đòa Chức PSW.7 CY D7H Cờ nhớ PSW.6 AC D6H Cờ nhớ phụ PSW.5 F0 D5H Cờ PSW.4 RS1 PSW.3 RS0 D4H D3H Bit chọn ghi Bit chọn ghi 00:bank 01:bank 02:bank 03:bank Cờ tràn Dự trữ Cờ parity chẳn RAM đa dụng 99 98 90 8C 8B 7F 77 6F 67 5F 57 4F 47 3F 37 2F 27 1F 17 0F 07 7E 76 6E 66 5E 56 4E 46 3E 36 2E 26 1E 16 0E 06 7C PSW.2 7B 7A0V79 74 PSW.1 73 72 71 PSW.0 6C 6B 6APORT 69 64 63 62 61 5C 5B 5A 59 54 53 52 51 4C 4B 4A 49 44 43 42 41 3C 3B 3A 39 34 33 32 31 2C 2B 2A 29 24 23 22 21 1C 1B 1A 19 14 13 12 11 0C 0B 0A 09 04 03 02 01 Bank 7D 75 6D 65 5D 55 4D 45 3D 35 2D 25 1D 15 IE 0D 05 P2 SBUFF 78 D2H 70 D1H 68 D0H Từ 60 58 50 48 40 38 30 28 20 18 10 08 00 Bank Bank P1 P3 F7 F6 F5 F4 F3 F2 F1 F0 E7 E6 E5 E4 E3 E2 E1 E0 D7 D6 D5 D4 D3 D2 D1 D0 - - BC BB BA B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 AF - - AC AB AA A9 A8 IP A7 A6 A5 A4 A3 A2 9F 97 96 trạng thái chương trình PCON DPH DPL DP P0 FF 81 80 F0 A1 A0 Không đòa hoá bit 9E 9D 9C 9B 9A 99 98 TH1 Bank ghi TH0 (mặ c đònh cho R0-R7) TL1 TL0 TMOD TCON - 8F 95 94 93 92 91 90 Không đòa hoá bit Không đòa hoá bit Không đòa hoá bit Không đòa hoá bit Không đòa hoá bit 8E 8D 8C 8B 8A 89 88 Không đòa hoá bit E0 D0 8A 89 88 A0 87 83 82 A8 B0 B8 87 Không đòa hoá bit Không đòa hoá bit Không đòa hoá bit 86 85 84 83 82 81 80 Tóm tắt nhớ liệu chip  Các cờ nhớ : • CY (carry flag): cờ nhớ thường dùng cho lẹânh số học Ngoài xem ghi bit cho lệnh luận lý thi hành bit • AC (auxiliary carry flag): cờ nhớ phụ sử dụng cộng số BCD • Flag (bit F0) : cờ sử dụng chung dành cho người lập trình • 0V (overlow flag) : cờ tràn set có phép toán thi hành bò tràn  Các ghi lệnh : • Thanh ghi A (Accumulator): ghi tích luỹ • Thanh ghi B : ghi đệm đa dụng có đòa F0H • Thanh ghi SP (Stack Pointer) : đòa 81H chứa đòa byte liệu hành đỉnh ngăn xếp Con trỏ ngăn xếp truy xuất trực tiếp lệnh POP PUSH • Data Pointer (DPTR) : dùng để truy xuất nhớ DPTR ghi 16 bit phân đòa 82H (DPL-byte thấp) 83H (DPH-byte cao)  Các ghi Port : P0 đòa 80H P1 đòa 90H P2 đòa A0H P3 đòa B0H Các ghi đòa hoá bit  Thanh ghi timer : vi xử lý có timer/counter 16 bit dùng cho việc đònh thời đếm kiện Timer : gồm ghi TL0 (8AH) TH0 (8CH) Timer : gồm ghi TL1 (8AH) TH1 (8CH) Việc vận hành timer set ghi TMOD (89H) ghi điều khiển TCON (88H) , ghi đòa hoá bit TCON Gate C ⁄T M1 M0 Gate C ⁄T M1 M0 Thanh ghi đệm SBUF : (99H) dùng để đệm data nối tiếp cho việc truyền nhận data Thanh ghi SCON : (98H) đòa hoá bit, có chức điều khiển port nối tiếp Thanh ghi SCON : SM0 SM1 SM2 REN TB8 RB8 TI RI  Thanh ghi ngắt IE : có nguồn ngắt, mức ưu tiên ngắt Các ngắt bò cấm sau reset hệ thống điều khiển, cho phép ngắt ghi IP, ghi đòa hoá bit Thanh ghi IE : EA _ ET2 ES ET1 EX1 ET0 EX0  Thanh ghi ngắt ưu tiên IP : Điều khiển mức ngắt ưu tiên cách set bit tương ứng ghi IP Thanh ghi có bit sau : _ _ PT2 PS PT1 PX1 PT0 PX0  Thanh ghi PCON : đòa 87H chứa nhiều bit điều khiển (bảng Bit SFR TCON TMOD TL0 TL1 Ký hiệu SMOD Ý nghóa Bit tăng tốc độ baud, set tốc độ baud tăng gấp đôi mod 1,2,3 Không đònh nghóa Không đònh nghóa Không đònh nghóa GF1 Bit cờ đa dụng GF0 Bit cờ đa dụng DP Giảm công suất, set để kích hoạt mod giảm công suất, thoát reset IDL Mode chờ, set để hoạt node chờ, thoát reset hệ thống Bảng tóm tắt bit ghi PCON Mục đích Điều khiển timer Chế độ timer Byte thấp timer Byte thấp timer Đòa 88H 89H 8AH 8BH Đòa hoá bit Có Không Không Không TH0 TH1 Byte cao timer Byte cao timer 8CH 8DH Không Không Các ghi đặc biệt điều khiển truy xuất timer Bit Ký hiệu GATE Timer C/T M1 M0 GATE C/T M1 M0 0 0 Mô tả Bit mở cổng, lên 1, timer chạy INT1 mức cao Chọn chế độ: 1: chế độ đếm kiện 0: chế độ đònh Bit1 chọn Mode hoạt động Với M1 M0 : 00 : mode 01 : mode 10 : mode 11 : mode Bit0 chọn Mode hoạt động Bit mở cổng Bit chọn counter/timer Bit1 chọn Mode hoạt động Bit chọn Mode hoạt động Bảng tóm tắt ghi TMOD Bit IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0 Ký hiệu EA -ET2 ES ET1 EX1 ET0 EX0 Đòa bit 0AFH 0AEH 0ADH 0ACH 0ABH 0AAH 0A9H 0A8H Mô tả(1= cho phép, 0= cấm) Cho phép/cấm toàn Không đònh nghóa Cho phép ngắt timer (8052) Cho phép ngắt port nối tiếp Cho phép ngắt timer1 Cho phép ngắt ngoài1 Cho phép ngắt timer Cho phép ngắt Tóm tắt ghi IE Bit TCON.7 Ký hiệu TF1 Đòa 8FH TCON.6 TR1 8EH TCON.5 TCON.4 TCON.3 TF0 TR0 IE1 8DH 8CH 8BH TCON.2 IT1 8AH TCON TCON.0 IE0 IT0 89H 88H Mô tả Cờ báo tràn timer1 , đặt phần cứng tràn, xoá phần mềm phần cứng timer xử lý đến chương trình phục vụ ngắt Bit cho phép timer1 chạy Đặt xoá phần mềm timer chạy dừng Cờ báo tràn timer Bit cho phép timer chạy Cờ ngắt bên ngoài, đặt phần cứng phát cạnh xuống INT1, xoá phần mềm phần cứng timer đến chương trình phục vụ ngắt Cờ kiểu ngắt ngoài, set xoá phần mềm cạnh xuống mức thấp kích hoạt ngắt Cờ ngắt bên Cờ ngắt Timer0 Bảng tóm tắt ghi TCON Bit IP.7 IP.6 IP.5 IP.4 IP.3 IP.2 IP.1 IP.0 Ký hiệu PT2 PS PT1 PX1 PT0 PX0 Đòa bit Mô tả(1= cho phép, 0= cấm) - Không đònh nghóa Không đònh nghóa Ưu tiên ngắt từ timer (8052) Ưu tiên ngắt từ port nối tiếp Ưu tiên ngắt từ timer1 Ưu tiên ngắt ngoài1 Ưu tiên ngắt từ timer Ưu tiên ngắt 0BDH 0BCH 0BBH 0BAH 0B9H 0B8H Bảng tóm tắt ghi IP Bit SCON.7 Ký hiệu SM0 Đòa bit 9FH Mô tả(1= cho phép, 0= cấm) Bit chế độ port nối tiếp SCON.6 SCON.5 SCON.4 SCON.3 SM1 SM2 REN TB8 9EH 9DH 9CH 9BH SCON.2 RB8 9AH SCON.1 SCON.0 TI RI 99H 98H Chế độ lười Bit chế độ port nối tiếp Bit chế độ port nối tiếp Cho phép thu Bit phát thứ 8, bit phát Mode để kiểm tra Bit thu thứ 8, bit thu Mode để kiểm tra Cờ ngắt phát Cờ ngắt thu Bảng tóm tắt ghi chế độ port nối tiếp Trong chế độ lười, CPU rơi vào trạng thái “ngủ” tất thiết bò ngoại vi tích cực Chế độ tạo phần mềm Nội dung RAM on-chip giá trò SFR giữ nguyên Kết thúc chế độ lười cách kích hoạt ngắt reset phần cứng Chú kết thúc chế độ lười cách reset phần cứng thông thường vi điều khiển gọi lại chương trình mà vừa thoát, hai chu kỳ máy trước thuật toán reset chiếm quyền điều khiển Phần cứng cấm truy cập RAM nội trường hợp không cấm truy cập đến chân port, xảy trường hợp không mong muốn Để loại bỏ trường hợp này, lệnh sau lệnh gọi chế độ lười không nên lệnh ghi port hay ghi nhớ 2.8 Chế độ hạ nguồn Trong chế độ hạ nguồn, dao động ngừng, lệnh gọi hạ nguồn lệnh cuối thực thi RAM on-chip SFR trì giá trò kết thúc chế độ hạ nguồn Kết thúc chế độ hạ nguồn cách : reset phần cứng Reset tạo lại giá trò cho SFR không thay đổi nội dung RAM on-chip Không nên reset trước Vcc phục hồi mức điện áp thông thường phải giữ đủ lâu để dao động phục hồi ổn đònh 2.9 Trạng thái số chân chế độ lười chế độ hạ nguồn 2.10 Các thông số kỹ thuật Exit1: TMenuItem; Help1: TMenuItem; exit2: TMenuItem; procedure Son1Click(Sender: TObject); procedure New1Click(Sender: TObject); procedure Kiemdinh1Click(Sender: TObject); procedure exit2Click(Sender: TObject); procedure N2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation uses thu, Unit3, Unit4, Unit5; {$R *.DFM} procedure TForm2.Son1Click(Sender: TObject); begin Form3.show; end; procedure TForm2.New1Click(Sender: TObject); var hoso:textFile; cot:array[1 20]of String[20]; rowNums,i,j,t:integer; s:string; begin AssignFile(hoso,'C:\My Documents\hoso.txt'); reset(hoso); rowNums:=0; Grid1.Cells[1,0]:='So Seri'; Grid1.Cells[2,0]:='ngay nhap'; Grid1.Cells[3,0]:='so huu chu'; Grid1.Cells[4,0]:='Dung tich'; Grid1.Cells[5,0]:='Thu lan thu'; Grid1.Cells[6,0]:='Nam san xuat'; Grid1.Cells[7,0]:='Noi san xuat'; Grid1.Cells[8,0]:='Khoi luong binh'; Grid1.Cells[9,0]:='Be day'; Grid1.Cells[10,0]:='co'; Grid1.Cells[11,0]:='Khoi luong vo'; Grid1.Cells[12,0]:='Cat duc dao lom'; Grid1.Cells[13,0]:='Phi ra'; Grid1.Cells[14,0]:='an mon'; Grid1.Cells[15,0]:='Ro ri'; Grid1.Cells[16,0]:='Kiem dinh'; Grid1.Cells[17,0]:='Son'; try begin While not eof(hoso) begin readln(hoso,cot[1],cot[2],cot[3],cot[4],cot[5],cot[6], cot[7],cot[8],cot[9],cot[10],cot[11],cot[12], cot[13],cot[14],cot[15],cot[16],cot[17]) ; inc(rowNums); Grid1.RowCount:=rowNums; Grid1.Cells[0,rowNums]:=IntToStr(rownums); for i:=1 to Grid1.Cells[i,rownums]:=cot[i]; Grid1.Cells[3,rownums]:='SGPETRO'; Grid1.Cells[4,rownums]:=cot[4]+'.l'; for i:=5 to Grid1.Cells[i,rownums]:=cot[i]; Grid1.Cells[8,rownums]:=cot[8]+'.kg'; Grid1.Cells[9,rownums]:=cot[9]+'.cm'; Grid1.Cells[10,rownums]:=cot[10]+'.cm'; Grid1.Cells[11,rownums]:=cot[11]+'.kg'; for i:=12 to 15 if cot[i][1]='0' then Grid1.Cells[i,rownums]:='khong dat' else if cot[i][1]='1' then Grid1.Cells[i,rowNums]:='dat'; if cot[16][1]='1' then Grid1.Cells[16,rowNums]:='khong&kd'; if cot[16][1]='0' then Grid1.Cells[16,rowNums]:='phai&kd'; if cot[17][1]='1' then Grid1.Cells[17,rowNums]:='khong&son'; if cot[17][1]='0' then Grid1.Cells[17,rowNums]:='phai& son'; for j:=1 to 17 begin s:=''; for t:=1 to length(Grid1.Cells[j,rownums]) if Grid1.Cells[j,rownums][t]=' ' then s:=s+'' else if Grid1.Cells[j,rownums][t]='&' then s:=s+' ' else s:=s+ Grid1.Cells[j,rownums][t]; Grid1.Cells[j,rownums]:=' '+s; end; end; inc(rowNums); Grid1.RowCount:=rowNums; end; Grid1.FixedRows:=1; finally CloseFile(hoso); end; end; procedure TForm2.Kiemdinh1Click(Sender: TObject); begin Form4.show; end; procedure TForm2.exit2Click(Sender: TObject); begin close(); end; procedure TForm2.N2Click(Sender: TObject); begin form5.showmodal; end; end unit Unit3; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, Menus; type TForm3 = class(TForm) Grid1: TStringGrid; MainMenu1: TMainMenu; File1: TMenuItem; New1: TMenuItem; Save1: TMenuItem; Exit1: TMenuItem; Help1: TMenuItem; procedure New1Click(Sender: TObject); procedure Exit1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form3: TForm3; implementation {$R *.DFM} procedure TForm3.New1Click(Sender: TObject); var hoso:textFile; cot:array[1 20]of String[20]; rowNums,i,binh:integer; temp:string; begin AssignFile(hoso,'C:\My Documents\hoso.txt'); reset(hoso); rowNums:=0; binh:=0; Grid1.RowCount:=rowNums; Grid1.Cells[0,0]:='stt'; Grid1.Cells[1,0]:='so se ri'; try begin While not eof(hoso) begin readln(hoso,cot[1],cot[2],cot[3],cot[4],cot[5],cot[6], cot[7],cot[8],cot[9],cot[10],cot[11],cot[12], cot[13],cot[14],cot[15],cot[16],cot[17]) ; temp:=''; for i:=1 to Length(cot[17]) if cot[17][i]=' ' then temp:=temp+'' else temp:=temp+ cot[17][i]; if temp='0' then begin inc(rowNums); Grid1.RowCount:=rowNums; Grid1.cells[1,rownums]:=cot[1]; Grid1.Cells[0,rowNums]:=IntToStr(rownums); end else inc(binh); end; inc(rowNums); Grid1.RowCount:=rowNums; end; Grid1.FixedRows:=1; finally CloseFile(hoso); end; end; procedure TForm3.Exit1Click(Sender: TObject); begin close(); end; end unit Unit4; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, Grids; type TForm4 = class(TForm) MainMenu1: TMainMenu; File1: TMenuItem; New1: TMenuItem; Save1: TMenuItem; Load1: TMenuItem; N1: TMenuItem; exit1: TMenuItem; Help1: TMenuItem; Grid1: TStringGrid; procedure New1Click(Sender: TObject); procedure exit1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form4: TForm4; implementation {$R *.DFM} procedure TForm4.New1Click(Sender: TObject); var hoso:textFile; cot:array[1 20]of String[20]; rowNums,i,binh:integer; temp:string; begin AssignFile(hoso,'C:\My Documents\hoso.txt'); reset(hoso); rowNums:=0; binh:=0; Grid1.RowCount:=rowNums; Grid1.Cells[0,0]:='stt'; Grid1.Cells[1,0]:='so se ri'; try begin While not eof(hoso) begin readln(hoso,cot[1],cot[2],cot[3],cot[4],cot[5],cot[6], cot[7],cot[8],cot[9],cot[10],cot[11],cot[12], cot[13],cot[14],cot[15],cot[16],cot[17]) ; temp:=''; for i:=1 to Length(cot[16]) if cot[16][i]=' ' then temp:=temp+'' else temp:=temp+ cot[16][i]; if temp='0' then begin inc(rowNums); Grid1.RowCount:=rowNums; Grid1.cells[1,rownums]:=cot[1]; Grid1.Cells[0,rowNums]:=IntToStr(rownums); end else inc(binh); end; // temp:=temp+ cot[16][i]; inc(rowNums); Grid1.RowCount:=rowNums; //Grid1.cells[1,rownums]:=cot[1]; //Grid1.Cells[0,rowNums]:=IntToStr(rownums); end; Grid1.FixedRows:=1; finally CloseFile(hoso); end; end; procedure TForm4.exit1Click(Sender: TObject); begin close(); end; end unit Unit5; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm5 = class(TForm) Edit1: TEdit; Edit2: TEdit; OK: TButton; Cancel: TButton; Label1: TLabel; Label2: TLabel; procedure OKClick(Sender: TObject); procedure CancelClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form5: TForm5; implementation uses Unit2, Unit6; {$R *.DFM} procedure TForm5.OKClick(Sender: TObject); var i,t,k:integer; temp,temp1,temp2,s:string; Procedure binhgas(j:integer); var lylich:textFile; t:integer; s:array[1 20]of string; begin AssignFile(lylich,'c:\My Documents\lylich.txt'); Rewrite(lylich); try for t:=1 to form2.grid1.colcount s[t]:=form2.Grid1.Cells[t,j]; Writeln(lylich,' Ly lich binh gas'); writeln(lylich,''); writeln(lylich,' Số sê ri',' :',s[1]); writeln(lylich,' Ngày nhập',' :',s[2]); writeln(lylich,' Sở hữu chủ',' :',s[3]); writeln(lylich,' Dung tích bình',' :',s[4]); writeln(lylich,' Thử lần thứ',' :',s[5]); writeln(lylich,' Năm sản xuất',' :',s[6]); writeln(lylich,' Nơi sản xuất',' :',s[7]); writeln(lylich,' Khối lượng bình',' :',s[8]); writeln(lylich,' Chiều dày',' :',s[9]); writeln(lylich,' Cổ',' :',s[10]); writeln(lylich,' Khối lượng vỏ',' :',s[11]); writeln(lylich,' Cắt đục đào lõm',' :',s[12]); writeln(lylich,' Phì ra',' :',s[13]); writeln(lylich,' Ăn mòn',' :',s[14]); writeln(lylich,' Rò rỉ,',' :',s[15]); writeln(lylich,' Kiểm đònh',' :',s[16]); writeln(lylich,' Sơn',' :',s[17]); finally CloseFile(lylich); Form6.Show; end; end; begin k:=0; temp1:=edit2.text; temp2:=edit1.text; temp:=''; for i:=1 to length(temp1) if temp1[i]=' ' then temp:=temp+'' else temp:=temp+temp1[i]; temp1:=temp; temp:=''; for i:=1 to length(temp2) if temp2[i]=' ' then temp:=temp+'' else temp:=temp+temp2[i]; temp2:=temp; if temp1'*' then begin for i:=1 to form2.Grid1.Rowcount begin s:=''; for t:=1 to length(form2.Grid1.Cells[2,i]) if form2.Grid1.Cells[2,i][t]=' ' then s:=s+'' else s:=s+ form2.Grid1.Cells[2,i][t]; if temp1=s then begin s:=''; for t:=1 to length(form2.Grid1.Cells[1,i]) if form2.Grid1.Cells[1,i][t]=' ' then s:=s+'' else s:=s+ form2.Grid1.Cells[1,i][t]; if temp2=s then begin k:=1; binhgas(i); end; end; end; if k=0 then ShowMessage('Khong co binh hay thu lai '); end; if temp1='*' then begin for i:=1 to form2.Grid1.Rowcount begin s:=''; for t:=1 to length(form2.Grid1.Cells[1,i]) if form2.Grid1.Cells[1,i][t]=' ' then s:=s+'' else s:=s+ form2.Grid1.Cells[1,i][t]; if temp2=s then begin binhgas(i); k:=1; end; end; if k=0 then ShowMessage('Khong co binh '); end; end; procedure TForm5.CancelClick(Sender: TObject); begin close(); end; end unit Unit6; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls, Menus; type TForm6 = class(TForm) Memo1: TMemo; Edit1: TEdit; MainMenu1: TMainMenu; File1: TMenuItem; Help1: TMenuItem; procedure Memo1Change(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form6: TForm6; implementation {$R *.DFM} procedure TForm6.Memo1Change(Sender: TObject); begin //Memo1.Lines.LoadFromFile(edit1.text); end; procedure TForm6.FormCreate(Sender: TObject); begin //Memo1.Lines.LoadFromFile(edit1.text); end; procedure TForm6.FormActivate(Sender: TObject); begin Memo1.Lines.LoadFromFile(edit1.text); end; end [...]... 74FB 10 6 10 7 10 8 10 9 LCALL DELAY2MS MOV A,03CH ;nap gia tri xuat ra cot 3 LCALL OUT_MT MOV A,#0FBH ;nap gia tri chon ra cot 3 010 F 12 018 7 011 2 12 0873 011 5 E53D 011 7 12 018 2 011 A 74F7 011 C 12 018 7 011 F 12 0873 012 2 E53E 012 4 12 018 2 012 7 E5EF 012 9 12 018 7 012 C 12 0873 012 F E53F 013 1 12 018 2 013 4 74FE 013 6 12 018 C 013 9 12 0873 013 C E540 013 E 12 018 2 014 1 74FD 014 3 12 018 C 014 6 12 0873 014 9 E5 41 014 B 12 018 2 014 E 74FB... 01B7 B40A09 01BA 75 310 4 01BD 12 046F 01C0 02046C 01C3 B 410 09 01C6 75 310 5 01C9 12 046F 01CC 02046C 01CF B 411 09 01D2 75 310 6 01D5 12 046F 01D8 02046C 01DB B 412 09 01DE 75 310 7 01E1 12 046F 01E4 02046C 01E7 B 418 09 01EA 75 310 8 01ED 12 046F 01F0 02046C 01F3 B 419 09 ; -17 5 TTGM0: PUSH ACC 17 6 CJNE A,#0,TTGM1 17 7 SO0: MOV 31H, #1 178 LCALL NHAPSO 17 9 JMP EXITGM 18 0 TTGM1: CJNE A,#8,TTGM2 18 1... 015 0 12 018 C 015 3 12 0873 015 6 E542 015 8 12 018 2 015 B 74F7 015 D 12 018 C 016 0 12 0873 016 3 E543 016 5 12 018 2 016 8 74EF 11 0 LCALL C_MT1 11 1 LCALL DELAY2MS 11 2 MOV A,3DH ;nap gia tri xuat ra cot 4 11 3 LCALL OUT_MT 11 4 MOV A,#0F7H ;nap gia tri chon ra cot 4 11 5 LCALL C_MT1 11 6 LCALL DELAY2MS 11 7 MOV A,3EH ;nap gia tri xuat ra cot 5 11 8 LCALL OUT_MT 11 9 MOV A,0EFH ;nap gia tri chon ra cot 5 12 0 LCALL C_MT1 12 1... @DPTR,A 018 6 22 16 5 RET 16 6 ; - 018 7 906000 16 7 C_MT1: MOV DPTR,#6000H 018 A F0 16 8 MOVX @DPTR,A 018 B 22 16 9 RET 17 0 ; 018 C 904000 17 1 C_MT2: MOV DPTR,#4000H 018 F F0 17 2 MOVX @DPTR,A 019 0 22 17 3 RET 17 4 019 1 C0E0 019 3 B40009 019 6 75 310 1 019 9 12 046F 019 C 02046C 019 F B40809 01A2 75 310 2 01A5 12 046F 01A8 02046C 01AB B40909 01AE 75 310 3 01B1 12 046F 01B4 02046C... B40209 020E 75 310 0 0 211 12 046F 0 214 02046C 0 217 B4 010 9 021A 75 310 B 021D 12 046F 0220 02046C 0223 B40 718 0226 20D50C 0229 7530 01 022C 12 0 717 022F 12 0494 0232 02046C 230 0235 12 0494 0238 12 07DF 023B 02046C 023E B41B06 02 41 1206E1 0244 02046C 0247 B40406 LINE SOURCE 216 TTGM10: CJNE A,#2,TTGM 11 217 SPACE: MOV 31H,#0 218 LCALL NHAPSO 219 JMP EXITGM 220 TTGM 11: CJNE A, #1, TTGM12 2 21 GACH: MOV 31H, #11 222 LCALL... 1 00F0 12 018 2 98 LCALL OUT_MT 00F3 74FE 99 MOV A,#0FEH ;nap gia tri chon ra cot 1 00F5 12 018 7 10 0 LCALL C_MT1 00F8 12 0873 10 1 LCALL DELAY2MS 00FB E53B 10 2 MOV A,03BH ;nap gia tri xuat ra cot 2 00FD 12 018 2 10 3 LCALL OUT_MT 010 0 74FD 10 4 MOV A,#0FDH ;nap gia tri chon ra cot 2 010 2 12 018 7 10 5 LCALL C_MT1 MCS- 51 MACRO ASSEMBLER VD 01/ 11/ :2 PAGE 3 LOC OBJ LINE SOURCE 010 5 12 0873 010 8 E53C 010 A 12 018 2 010 D... 12 05E9 03D6 12 08 31 03D9 02046C 03DC B4221B 03DF 20D50C 03E2 75300F 03E5 12 0 717 03E8 12 0608 03EB 02046C 394 03EE 752F00 03F1 12 0608 03F4 12 08 31 03F7 02046C 03FA B42 318 03FD 20D50C 0400 753 010 0403 12 0 717 0406 12 0627 0409 02046C 405 040C 12 0627 040F 12 08 31 0 412 02046C 0 415 B4241B 0 418 20D50C 411 041B 753 011 041E 12 0 717 04 21 120684 0424 02046C 416 0427 752F00 042A 12 0684 384 MOV 2FH,#0 385 LCALL MTL_PR... 003F 12 017 8 0042 12 017 3 0045 74FE 0047 12 017 D 004A 12 0873 004D E533 004F B40003 0052 020064 0055 14 0056 12 017 8 0059 12 017 3 005C 74FD 005E 12 017 D 00 61 120873 0064 E534 0066 B40003 0069 02007B 006C 14 006D 12 017 8 0070 12 017 3 0073 74FB 0075 12 017 D 0078 12 0873 16 S_LED: MOV A,2FH 17 CJNE A, #1, LED1 18 DEC A 19 LCALL BCDTO7SEG 20 LCALL OUTLED 21 MOV A,#0FEH 22 LCALL C_LED 23 LCALL DELAY2MS 24 LED1: MOV A,32H... 18 1 SO1: MOV 31H,#2 18 2 LCALL NHAPSO 18 3 JMP EXITGM 18 4 TTGM2: CJNE A,#9,TTGM3 18 5 SO2: MOV 31H,#3 18 6 LCALL NHAPSO 18 7 JMP EXITGM 18 8 TTGM3: CJNE A, #10 ,TTGM4 18 9 SO3: MOV 31H,#4 19 0 LCALL NHAPSO 19 1 JMP EXITGM 19 2 TTGM4: CJNE A, #16 ,TTGM5 19 3 SO4: MOV 31H,#5 19 4 LCALL NHAPSO 19 5 JMP EXITGM 19 6 TTGM5: CJNE A, #17 ,TTGM6 19 7 SO5: MOV 31H,#6 19 8 LCALL NHAPSO 19 9 JMP EXITGM 200 TTGM6: CJNE A, #18 ,TTGM7 2 01. .. 017 6 F0 15 1 MOVX @DPTR,A 017 7 22 15 2 RET 15 3 ; -15 4 BCDTO7SEG: 017 8 9008D0 15 5 MOV DPTR,#LED7SEG_TABLE 017 B 93 15 6 MOVC A,@A+DPTR 017 C 22 15 7 RET 15 8 ; 017 D 900000 15 9 C_LED: MOV DPTR,#0000H 018 0 F0 16 0 MOVX @DPTR,A MCS- 51 MACRO ASSEMBLER VD 01/ 11/ :2 PAGE 4 LOC OBJ 018 1 22 LINE SOURCE 16 1 RET 16 2 OUT_MT: 018 2 908000 16 3 MOV DPTR,#8000H 018 5 F0 16 4 ... 12 018 2 012 7 E5EF 012 9 12 018 7 012 C 12 0873 012 F E53F 013 1 12 018 2 013 4 74FE 013 6 12 018 C 013 9 12 0873 013 C E540 013 E 12 018 2 014 1 74FD 014 3 12 018 C 014 6 12 0873 014 9 E5 41 014 B 12 018 2 014 E 74FB 015 0 12 018 C... 12 046F 01C0 02046C 01C3 B 410 09 01C6 75 310 5 01C9 12 046F 01CC 02046C 01CF B 411 09 01D2 75 310 6 01D5 12 046F 01D8 02046C 01DB B 412 09 01DE 75 310 7 01E1 12 046F 01E4 02046C 01E7 B 418 09 01EA 75 310 8 01ED 12 046F... RET 17 4 019 1 C0E0 019 3 B40009 019 6 75 310 1 019 9 12 046F 019 C 02046C 019 F B40809 01A2 75 310 2 01A5 12 046F 01A8 02046C 01AB B40909 01AE 75 310 3 01B1 12 046F 01B4 02046C 01B7 B40A09 01BA 75 310 4 01BD 12 046F

Ngày đăng: 16/11/2015, 11:10

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan