Điện - Điện tử - Giới thiệu về vi điều khiển AT89C51

pdf 68 trang vanle 10760
Bạn đang xem 20 trang mẫu của tài liệu "Điện - Điện tử - Giới thiệu về vi điều khiển AT89C51", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfdien_dien_tu_gioi_thieu_ve_vi_dieu_khien_at89c51.pdf

Nội dung text: Điện - Điện tử - Giới thiệu về vi điều khiển AT89C51

  1. GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51
  2. CHƯƠNG I: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 I. MÔ TẢ: AT9C51 là một hệ vi tính 8 bit đơn chíp CMOS có hiệu suất cao,công suất nguồn tiêu thụ thấp và có 4Kbyte bộ nhớ ROM Flash xoá được lập trình được. Chip này được sản xuất dựa vào công nghệ bộ nhớ không mất nội dung có độ tích hợp cao của Atmel. Chip AT89C51 cũng tương thích với tập lệnh và các chân ra của chuẩn công nghiệp MCS-51. Flash trên chip này cho phép bộ nhớ chương trình được lập trình lại trên hệ thống hoặc bằng bộ lập trình bộ nhớ không mất nội dung qui ước. Bằng cách kết hợp một CPU linh hoạt 8 bit với Flash trên một chip đơn thể, Atmel 89C51 là một hệ vi tính 8 bit đơn chip mạnh cho ta một giải pháp có hiệu quả về chi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có các đặc trưng sau: 4Kbyte Flash, 128 byte Ram, 32 đường xuất nhập, hai bộ định thời / đếm 16 bit, một cấu trúc ngắt 2 mức ưu tiên và 5 nguyên nhân ngắt, một port nối tiếp song công, mạch dao động và tạo xung clock trên chip. Ngoài ra AT8951 được thiết kế với logic tĩnh cho hoạt đông có tần số giảm xuống 0 và hỗ trợ hai chế độ tiết kiệm năng lượng được lựa chọn bằng phần mềm. Chế độ nghĩ dừng CPU trong khi vẫn cho phép RAM, các bộ định thời / đếm, port nối tiếp và hệ thống ngắt tiếp tục hoạt động. Chế độ nguồn giảm duy trì nội dung của RAM nhưng không cho mạch dao động cung cấp xung clock nhằm vô hiệu hoá các hoạt động khác của chip cho đến khi có reset cứng tiếp theo. Các đặc điểm của 8951 được tóm tắt như sau:  4 KB bộ nhớ có thể lập trình lại nhanh, có khả năng tới 1000 chu kỳ ghi xoá  Tần số hoạt động từ: 0Hz đến 24 MHz 1
  3.  3 mức khóa bộ nhớ lập trình  2 bộ Timer/counter 16 Bit  128 Byte RAM nội.  4 Port xuất /nhập I/O 8 bit.  Giao tiếp nối tiếp.  64 KB vùng nhớ mã ngoài  64 KB vùng nhớ dữ liệu ngoại.  Xử lý Boolean (hoạt động trên bit đơn).  210 vị trí nhớ có thể định vị bit.  4 s cho hoạt động nhân hoặc chia. II. CAÙC CAÁU HÌNH CHAÂN RA: 1/ SÔ ÑOÀ KHOÁI CUÛA AT89C51: 2
  4. 2/ SƠ LƯỢC CÁC CHÂN CỦA AT89C51 *MÔ TẢ CÁC CHÂN: -VCC: chân cung cấp điện. -GND: chân nối đất. -Port 0: gồm 8 chân 32-39 (P0.0 P0,7) Port 0 là port có 2 chức năng. Trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO. Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu. -Port1: chân 1-8 (P1.0 P1.7) Port 1 là port IO. Có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần. Port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài. -Port 2: chân 21-28 (P2.0 .P2.7) 3
  5. Port 2 là port có tác dụng kép. Được dùng như các đường xuất nhập hoặc byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng. -Port 3: chân 10-17 (P3.0 P3.7) Port 3 là port xuất nhập 8 bit 2 chiều có các điện trở kéo lên bên trong. Các chân của port này có nhiều chức năng, các công dụng chuyển đổi có lien hệ với các đặc tính đặc biệt của 8951 -RST: Ngõ vào reset. Mức cao trên chân này trong 2 chu kỳ máy trong khi bộ dao động đang hoạt động sẽ reset AT89C51. -ALE/ PROG Xung của ngõ ra cho phép chốt địa chỉ ALE (address latch enable) cho phép chốt byte thấp của địa chỉ trong thời gian truy xuất bộ nhớ ngoài. Chân này cũng được dùng làm ngõ vào xung lập trình ( PROG ) trong thời gian lập trình Flash. Khi hoạt động bình thường, xung của ngõ ra ALE luôn luôn có tần số bằng 1/6 tần số của mạch dao động trên chip, có thể được sử dụng cho các mục đích định thời từ bên ngoài và tạo xung clock. Tuy nhiên cần lưu ý là một xung ALE sẽ bị bỏ qua trong mỗi chu kỳ truy xuất bộ nhớ dữ liệu ngoài. Khi cần, hoạt động cho phép chốt byte thấp của địa chỉ sẽ được vô hiệu hoá bằng cách set bit 0 của thanh ghi chức năng đặc biệt có địa chỉ byte là 8EH. Khi bit này được set, ALE chỉ tích cực tring thời gian thực thi lệnh MOVX hoặc MOVC. Ngược lại chân này sẽ được kéo lên mức cao. Việc set bit không cho phép hoạt động chốt byte thấp của địa chỉ sẽ không có tác dụng nếu bộ vi điều khiển đang chế độ thực thi chương trình ngoài. - PSEN : Chân cho phép bộ nhớ chương trình PSEN (program store enable) điều khiển truy xuất bộ nhớ chuơng trình ngoài. Khi AT89C51 đang thực thi chương trình trong bộ nhớ chương trình ngoài, PSEN tích cực 2 lần cho mỗi chu kỳ máy, 4
  6. ngoại trừ trường hợp 2 tác động của PSEN bị bỏ qua cho mỗi truy xuất bộ nhớ dữ liệu ngoài. - EA / Vpp: Chân cho phép truy xuất bộ nhớ ngoài EA (external access enable) phải được nối với GND để cho phép chip vi điều khiển tìm nạp lệnh từ các vị trí nhớ của bộ nhớ chương trình ngoài, bắt đầu từ địa chỉ 0000H cho đến FFFFH. Tuy nhiên cần lưu ý là nếu có bit khoá 1(clock bit 1) được lập trình, EA sẽ được chốt bên trong khi reset. EA nên nối với Vcc để thực thi chương trình trong chip. Chân EA / Vpp còn nhận điện áp cho phép lập trình Vpp trong thời gian lập trình cho Flash, điện áp này cấp cho các bộ phận có yêu cầu điện áp 12V. -XTAL 1: Ngõ vào đến mạch khuyếch đại đảo dao động và ngõ vào đến mạch tạo xung clock bên trong chip. -XTAL 2: Ngõ ra từ mạch khuyết đại đảo của mạch dao động. Hình: Mạch dao động III. CẤU TRÚC RAM NỘI CỦA 8951: Bản đồ bộ nhớ Data trên Chip như sau: 5
  7. Đ ịa chỉ Địa chỉ byte byte Địa chỉ bit Địa chỉ bit 7F FF F0 F7 F6 F5 F4 F3 F2 F1 F0 B RAM đa dụng E0 E7 E6 E5 E4 E E2 E1 E0 ACC 3 D0 D7 D6 D5 D4 D D2 D1 D0 PSW 3 30 B8 - - - BC B B B9 B8 IP B A 2F 7F 7E 7D 7C 7B 7A 79 78 2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P.3 2D 6F 6E 6D 6C 6B 6A 69 68 2C 67 66 65 64 63 62 61 60 A8 AF AC A A A9 A8 IE B A 2B 5F 5E 5D 5C 5B 5A 59 58 2A 57 56 55 54 53 52 51 50 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2 29 4F 4E 4D 4C 4B 4A 49 48 28 47 46 45 44 43 42 41 40 99 không được địa chỉ hoá bit SBUF 27 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9C 9B 9A 99 98 SCON 26 37 36 35 34 33 32 31 30 25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1 24 27 26 25 24 23 22 21 20 23 1F 1E 1D 1C 1B 1A 19 18 8D không được địa chỉ hoá bit TH1 6
  8. 22 17 16 15 14 13 12 11 10 8C không được địa chỉ hoá bit TH0 21 0F 0E 0D 0C 0B 0A 09 08 8B không được địa chỉ hoá bit TL1 20 07 06 05 04 03 02 01 00 8A không được địa chỉ hoá bit TL0 1F Bank 3 89 không được địa chỉ hoá bit TMO D 18 88 8F 8E 8D 8C 8B 8A 89 88 TCO N 17 Bank 2 87 không được địa chỉ hoá bit PCON 10 0F Bank 1 83 không được địa chỉ hoá bit DPH 08 82 không được địa chỉ hoá bit DPL 07 Bank thanh ghi 0 81 không được địa chỉ hoá bit SP 00 (mặc định cho R0 -R7) 88 87 86 85 84 83 82 81 80 P0 RAM CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT - AT8951 có 128 byte RAM nội có địa chỉ từ 00H đến FFH 1/ Vùng bank thanh ghi: -Bao gồm 32 byte bắt đầu từ 00H 1FH được chia thành 4 bank, mỗi bank bao gồm 8 thanh ghi: + Bank 0: từ 00H 07H + Bank 1: từ 08H 0FH + Bank 2: từ 10H 17H + Bank 3: từ 18H 1FH - Mỗi bank gồm 8 thanh ghi từ R0 R7. Bank 0: R0=00H; R1=01H Bank 1: R0=08H; R1=09H - Tại một thời điểm chương trình chỉ có thể hoạt động với 1 bank thanh ghi mặc định là bank 0. 2/ Vùng RAM định vị bit: 7
  9. - Gồm 16 byte có địa chỉ từ 20H 2FH trong vùng này ta có thể tác động tới từng bit. Có nghĩa la có thể set bit đó lên 1 hoặc clear bit đó về 0. - Có 128 bit trong vùng RAM định vị bit có địa chỉ từ 00H 7FH. 3/ Vùng RAM đa dụng: Có địa chỉ từ 30H 7FH(80 byte) có thể sử dụng làm bất cứ công việc gì trong chương trình. 4/ Vùng các thanh ghi đặc biệt: Có dịa chỉ từ 80H FFH. - Thanh ghi tích luỹ A (ACC: Accumulartor) là thanh ghi trung gian thường được sử dụng để chứa lưu giá trị trong các lệnh chương trình có địa chỉ là E0H. Vd: Mov A, #3FH Lấy 3FH đưa vào A. Mov A, 3FH Lấy nội dung của 3FH đưa vào A. - Thanh ghi B: có địa chỉ là F)H là thanh ghi được dùng kết hợp với thanh ghi A trong các phép toán. Vd: Mul AB Nhân thanh ghi A và B với nhau, đươc kết quả đưa vào A. Div AB Chia A với B, kết quả đưa vào A, số dư đưa vào B. - Thanh ghi PSW (Program status word): Là thanh ghi chứa trạng thái của chương trình. 8
  10. Từ trạng thái chương trình ở địa chỉ D0H được tóm tắt như sau: BIT SYMBOL ADDRESS DESCRIPTION PSW.7 CY D7H Cary Flag PSW.6 AC D6H Auxiliary Cary Flag PSW.5 F0 D5H Flag 0 PSW4 RS1 D4H Register Bank Select 1 PSW.3 RS0 D3H Register Bank Select 0 00=Bank 0; address 00H07H 01=Bank 1; address 08H0FH 10=Bank 2; address 10H17H 11=Bank 3; address 18H1FH PSW.2 OV D2H Overlow Flag PSW.1 - D1H Reserved PSW.0 P DOH Even Parity Flag  CY: là cờ nhớ, CY sẽ set lên 1 khi thực hiện phép cộng có xảy ra nhớ, hoăc khi thực hiện phép trừ có xảy ra mượn.  AC (Auxiliary carrier) là cờ nhớ phụ khi cộng các số BCD. Cờ nhớ phụ sẽ set lên 1 nếu kết quả của 4 bit thấp nằm trong khoảng từ 0AH đến 0FH.  F0: là cờ nhớ dành cho người sử dụng.  RS1, RS0: quyết định dãy thanh ghi tích cực. Chúng được xoá sau khi reset hệ thống và được thay đối bởi phần mềm khi cần thiết. 9
  11. RS1 RS0 BANK 0 0 0 0 1 1 1 0 2 1 1 3 Dựa vào bảng trên ta có thể chọn thanh ghi bank nào muốn chọn.  OV (Over flow): sẽ set lên 1 khi thực hiên phép toán với số có dấu có xáy ra tràn.  P (Parity): là bit kiểm tra chẳn lẽ, bit P sẽ bằng 0 hoặc 1 theo dạng parity chẵn với nội dung của thanh ghi A - Con trỏ Ngăn xếp SP (Stack Pointer): + Con trỏ ngăn xếp là một thanh ghi 8 bit ở địa chỉ 81H. Nó chứa địa chỉ của của byte dữ liệu hiện hành trên đỉnh ngăn xếp. Các lệnh trên ngăn xếp bao gồm các lệnh cất dữ liệu vào ngăn xếp (PUSH) và lấy dữ liệu ra khỏi ngăn xếp (POP). Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trước khi ghi dữ liệu và lệnh lấy ra khỏi ngăn xếp sẽ làm giảm SP. Ngăn xếp của 8031/8051 được giữ trong RAM nội và giới hạn các địa chỉ có thể truy xuất bằng địa chỉ gián tiếp, chúng là 128 byte đầu của 8951. + Để khởi động SP với ngăn xếp bắt đầu tại địa chỉ 60H, các lệnh sau đây được dùng: MOV SP, #5F 10
  12. + Với lệnh trên thì ngăn xếp của 8951 chỉ có 32 byte vì địa chỉ cao nhất của RAM trên chip là 7FH. Sỡ dĩ giá trị 5FH được nạp vào SP vì SP tăng lên 60H trước khi cất byte dữ liệu. - Thanh ghi con trỏ dữ liệu Data Pointer (DPTR): Là thanh ghi 16 bit kết hợp của 2 thanh ghi 8 bit là DPH và DPL DPH DPL Thanh ghi DPTR thường được dùng để lưu các địa chỉ 16 bit, thông thường là các địa chỉ khi truy xuất bộ nhớ ngoài. - Các thanh ghi xuất nhập Port: Các Port của 8951 bao gồm Port0 ở địa chỉ 80H, Port1 ở địa chỉ 90H, Port2 ở địa chỉ A0H, và Port3 ở địa chỉ B0H. Tất cả các Port này đều có thể truy xuất từng bit nên rất thuận tiện trong khả năng giao tiếp. 8951 chứa một Port nối tiếp cho việc trao đổi thông tin với các thiết bị nối tiếp như máy tính, modem hoặc giao tiếp nối tiếp với các IC khác. Một thanh ghi đệm dử liệu nối tiếp (SBUF) ở địa chỉ 99H sẽdữ cảhai dữ liệu truyền và dữ liệu nhập. Khi truyền dữ liệu ghi lên SBUF, khi nhận dữ liệu thì đọc SBUF. Các mode vận khác nhau được lập trình qua thanh ghi điều khiển Port nối tiếp (SCON) được địa chỉ hóa từng bit ở địa chỉ 98H. - Thanh ghi điều khiển nguồn PCON (Power control Register): Thanh ghi PCON không có bit định vị. Nó ở địa chỉ 87H chứa nhiều bit điều khiển. Thanh ghi PCON được tóm tắt như sau:  Bit 7 (SMOD): Bit có tốc độ Baud ở mode 1, 2, 3 ở Port nối tiếp khi set.  Bit 6, 5, 4: Không có địa chỉ.  Bit 3 (GF1): Bit cờ đa năng 1. 11
  13.  Bit 2 (GF0): Bit cờ đa năng 2.  Bit 1 (PD): Set để khởi động mode Power Down và thoát để reset.  Bit 0 (IDL): Set để khởi động mode Idle và thoát khi ngắt mạch hoặc reset. Các bit điều khiển Power Down và Idle có tác dụng chính trong tất cả các IC họ MSC-51 nhưng chỉ được thi hành trong sự biên dịch của CMOS. IV. BỘ NHỚ NGOÀI - 8951 có khả năng mở rông bộ nhớ lên đến 64K byte bộ nhớ chương trình và 64k byte bộ nhớ dữ liệu ngoài. Do đó có thể dùng thêm RAM và ROM nếu cần. - Khi dùng bộ nhớ ngoài, Port0 không còn chức năng I/O nữa. Nó được kết hợp giữa bus địa chỉ (A0-A7) và bus dữ liệu (D0-D7) với tín hiệu ALE để chốt byte của bus địa chỉ chỉ khi bắt đầu mỗi chu kỳ bộ nhớ. Port được cho là byte cao của bus địa chỉ.  Truy xuất bộ nhớ mã ngoài (Acessing External Code Memory): - Bộ nhớ chương trình bên ngoài là bộ nhớ ROM được cho phép của tín hiệu PSEN\. Sự kết nối phần cứng của bộ nhớ EPROM như sau: Port 0 D0  D7 EA A0  A7 74HC373 ALE 8951 O D Port 2 G A8 EPROM  A15 PSEN OE Hình : Accessing External Code Memory (Truy xuất bộ nhớ mã ngoài) 12
  14. - Trong một chu kỳ máy tiêu biểu, tín hiệu ALE tích cực 2 lần. Lần thứ nhất cho phép 74HC373 mở cổng chốt địa chỉ byte thấp, khi ALE xuống 0 thì byte thấp và byte cao của bộ đếm chương trình đều có nhưng EPROM chưa xuất vì PSEN\ chưa tích cực, khi tín hiệu lên một trở lại thì Port 0 đã có dữ liệu là Opcode. ALE tích cực lần thứ hai được giải thích tương tự và byte 2 được đọc từ bộ nhớ chương trình. Nếu lệnh đang hiện hành là lệnh 1 byte thì CPU chỉ đọc Opcode, còn byte thứ hai bỏ đi.  Truy xuất bộ nhớ dữ liệu ngoài (Accessing External Data Memory): - Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được đọc hoặc ghi khi được cho phép của tín hiệu RD\ và WR. Hai tín hiệu này nằm ở chân P3.7 (RD) và P3.6 (WR). Lệnh MOVX được dùng để truy xuất bộ nhớ dữ liệu ngoài và dùng một bộ đệm dữ liệu 16 bit (DPTR), R0 hoặc R1 như là một thanh ghi địa chỉ. - Các RAM có thể giao tiếp với 8951 tương tự cách thức như EPROM ngoại trừ chân RD\ của 8951 nối với chân OE\ (Output Enable) của RAM và chân WR\ của 8951 nối với chânWE \của RAM. Sự nối các bus địa chỉ và dữ liệu tương tự như cách nối của EPROM. Port 0 D0  D7 RAM EA\ A0  A7 74HC373 ALE O D 8951 G Port 2 A8  A15 RD\ OE\ WR\ WE\ 13
  15.  Sự giải mã địa chỉ (Address Decoding): - Sự giải mã địa chỉ là một yêu cầu tất yếu để chọn EPROM, RAM, 8279, Sự giải mã địa chỉ đối với 8951 để chọn các vùng nhớ ngoài như các vi điều khiển. Nếu các con EPROM hoặc RAM 8K được dùng thì các bus địa chỉ phải được giải mã để chọn các IC nhớ nằm trong phạm vi giới hạn 8K: 0000H1FFFH, 2000H3FFFH, - Một cách cụ thể, IC giải mã 74HC138 được dùng với những ngõ ra của nó được nối với những ngõ vào chọn Chip CS (Chip Select) trên những IC nhớ EPROM, RAM, Hình sau đây cho phép kết nối nhiều EPROM và RAM. Hình : Address Decoding (Giải mã địa chỉ) -Vậy một chương trình có thể được tải vào RAM bằng cách xem nó như bộ nhớ dữ liệu và thi hành chương trình băng cách xem nó như bộ nhớ chương trình. 14
  16. V. CÁC LỆNH ĐIỀU KHIỂN: 8951 chia ra 2 nhóm lệnh chính:  Các lệnh số học.  Lệnh logic.  Dịch chuyển dữ liệu.  Luân lý.  Rẽ nhánh chương trình. Từng kiểu lệnh được mô tả như sau: 1 Các lệnh số học (Arithmetic Instrustion): ADD A, ADD A, Rn : (A)  (A) + (Rn) ADD A, direct : (A)  (A) + (direct) ADD A, @ Ri : (A)  (A) + ((Ri)) ADD A, # data : (A)  (A) + # data ADDC A, Rn : (A)  (A) + (C) + (Rn) ADDC A, direct : (A)  (A) + (C) + (direct) ADDC A, @ Ri : (A)  (A) + (C) + ((Ri)) ADDC A, # data : (A)  (A) + (C) + # data SUBB A, SUBB A, Rn : (A)  (A) - (C) - (Rn) SUBB A, direct : (A)  (A) - (C) - (direct) SUBB A, @ Ri : (A)  (A) - (C) - ((Ri)) 15
  17. SUBB A, # data : (A)  (A) - (C) - # data INC INC A : (A)  (A) + 1 INC direct : (direct)  (direct) + 1 INC Ri : ((Ri))  ((Ri)) + 1 INC Rn : (Rn)  (Rn) + 1 INC DPTR : (DPTR)  (DPTR) + 1 DEC DEC A : (A)  (A) - 1 DEC direct : (direct)  (direct) - 1 DEC @Ri : ((Ri))  ((Ri)) - 1 DEC Rn : (Rn)  (Rn) - 1 MULL AB : (A)  LOW [(A) x (B)] ; có ảnh hưởng cờ OV : (B)  HIGH [(A) x (B)] ; cờ Cary được xóa. DIV AB : (A)  Integer Result of [(A)/(B)]; cờ OV : (B)  Remainder of [(A)/(B)]; cờ Carry xóa DA A : Điều chỉnh thanh ghi A thành số BCD đúng trong phép cộng BCD (thường DA A đi kèm với ADD, ADDC)  Nếu [(A3-A0)>9] v [(AC)=1]  (A3A0)  (A3A0) + 6. 16
  18.  Nếu [(A7-A4)>9] v [(C)=1]  (A7A4)  (A7A4) + 6. 2 Các hoạt động logic (Logic Operation) : Các hoạt động logic được tóm tắt như sau : ANL ANL A, Rn : (A)  (A) AND (Rn). ANL A, direct : (A)  (A) AND (direct). ANL A,@ Ri : (A)  (A) AND ((Ri)). ANL A, # data : (A)  (A) AND (# data). ANL direct, A : (direct)  (direct) AND (A). ANL direct, # data : (direct)  (direct) AND # data. ORL ORL A, Rn : (A)  (A) OR (Rn). ORL A, direct : (A)  (A) OR (direct). ORL A,@ Ri : (A)  (A) OR ((Ri)). ORL A, # data : (A)  (A) OR # data. ORL direct, A : (direct)  (direct) OR (A). ORL direct, # data : (direct)  (direct) OR # data. XRL XRL A, Rn : (A)  (A) (Rn). XRL A, direct : (A)  (A) (direct). XRL A,@ Ri : (A)  (A) ((Ri)). XRL A, # data : (A)  (A) # data. 17
  19. XRL direct, A : (direct)  (direct) (A). XRL direct, # data : (direct)  (direct) # data. y = a b = ab + ab CLR A : (A)  0 CLR C : (C)  0 CLR Bit : (Bit)  0 RL A : Quay vòng thanh ghi A qua trái 1 bit RLC A : Quay vòng thanh ghi A qua trái 1 bit có cờ Carry RR A : Quay vòng thanh ghi A qua phải 1 bit RRC A : Quay vòng thanh ghi A qua phải 1 bit có cờ Carry SWAP A : Đổi chổ 4 bit thấp v 4 bit cao của A cho nhau (A3A0)(A7A4). 3 Các lệnh rẽ nhánh : Sau đây là sự tóm tắt từng hoạt động của lệnh nhảy. JC rel : Nhảy đến “rel” nếu cờ Carry C = 1. JNC rel : Nhảy đến “rel” nếu cờ Carry C = 0. JB bit, rel : Nhảy đến “rel” nếu (bit) = 1. JNB bit, rel : Nhảy đến “rel” nếu (bit) = 0. JBC bit, rel : Nhảy đến “rel” nếu bit = 1 v xĩa bit. ACALL addr11 : Lệnh gọi tuyệt đối trong page 2K. LCALL addr16 : Lệnh gọi di chương trình con trong 64K. 18
  20. RET : Kết thúc chương trình con trở về chương trình chính. RETI : Kết thúc thủ tục phục vụ ngắt quay về chương trình chính hoạt động tương tự như RET. AJMP Addr11 : Nhảy tuyệt đối không điều kiện trong 2K. LJMP Addr16 : Nhảy đi không điều kiện trong 64K Hoạt động tương tự lệnh LCALL. SJMP rel : Nhảy ngắn không điều kiện trong (-128127) byte JMP @ A + DPTR:Nhảy không điều kiện đến địa chỉ (A) + (DPTR) (PC)  (A) + (DPTR) JZ rel : Nhảy đến A = 0. Thực hành lệnh kế nếu A 0. JNZ rel : Nhảy đến A 0. Thực hành lệnh kế nếu A = 0. CJNE A, direct, rel : So sánh và nhảy đến A direct (A) (direct)  C = 0 (A) = (direct). Thực hành lệnh kế tiếp CJNE A, # data, rel : Tương tự lệnh CJNE A, direct, rel. CJNE Rn, # data, rel : Tương tự lệnh CJNE A, direct, rel. CJNE @ Ri, # data, rel : Tương tự lệnh CJNE A, direct, rel. DJNE Rn, rel : Giảm Rn nhảy nếu Rn 0. DJNZ direct, rel : Tương tự lệnh DJNZ Rn, rel. 4 Các lệnh dịch chuyển dữ liệu : Tất cả các lệnh dịch chuyển đểu khôg ảnh hưởng đến cờ. Hoạt động của từng lệnh được tóm tắt như sau : 19
  21. MOV A,Rn : (A)  (Rn) MOV A, direct : (A)  (direct) MOV A, @ Ri : (A)  ((Ri)) MOV A, # data : (A)  # data MOV Rn, A : (Rn)  (A) MOV Rn, direct : (Rn)  (direct) MOV Rn, # data : (Rn)  # data MOV direct, A : (direct)  (A) MOV direct, Rn : (direct)  (Rn) MOV direct, direct : (direct)  (direct) MOV direct, @ Ri : (direct)  ((Ri)) MOV direct, # data : (direct)  data MOV @ Ri, A : ((Ri))  (A) MOV @ Ri, direct : ((Ri))  (direct) MOV @ Ri, # data : ((Ri))  # data MOV DPTR, # data16 : (DPTR)  # data16 MOV A, @ A + DPTR : (A)  (A) + (DPTR) MOV @ A + PC : (PC)  (PC) + 1 (A)  (A) + (PC) MOVX A, @ Ri : (A)  ((Ri)) MOVX A, @ DPTR : (A)  ((DPTR)) MOVX @ Ri, A : ((Ri))  (A) 20
  22. MOVX @ DPTR, A : ((DPTR))  (A) PUSH direct : Cất dữ liệu vô Stack POP direct : Lấy từ Stack ra direct XCH A, Rn : Đổi chổ nội dung của A với Rn (A)  (Rn) XCH A, direct : (A)  (direct) XCH A, @ Ri : (A)  ((Ri)) XCHD A, @ Ri : Đổi chổ 4 bit thấp của (A) với ((Ri)) (A3A0)  ((Ri3Ri0)) 5 Các lệnh luận lý (Boolean Instruction) : Hoạt động của các lệnh luận lý được tóm tắt như sau : CLR C : Xóa cờ Carry xuống 0. Có ảnh hưởng cờ Carry. CLR BIT : Xóa bit xuống 0. Không ảnh hưởng cờ Carry SET C : Set cờ Carry ln 1. Có ảnh hưởng cờ Carry. SET BIT : Set bit lên 1. Không ảnh hưởng cờ Carry. CPL C : Đảo bit cờ Carry. Có ảnh hưởng cờ Carry. CPL BIT : Đảo bit. Không ảnh hưởng cờ Carry. ANL C, BIT : (C)  (C) AND (BIT): Có ảnh hưởng cờ Carry. ANL C, /BIT : (C)  (C) AND NOT (BIT): không ảnh hưởng cờ Carry ORL C, BIT : (C)  (C) OR (BIT): Tác động cờ Carry. ORL C, /BIT : (C)  (C) OR NOT (BIT): Tác động cờ Carry. MOV C, BIT : (C)  (BIT): Cờ Carry bị tác động. 21
  23. MOV BIT, C : (BIT)  (C): Không ảnh hưởng cờ Carry. VI. BỘ ĐỊNH THỜI (TIMER) 1/ Khái niệm: AT89C51 có 2 bộ timer: - Timer 0: là một bộ đếm lên tuần tự 16 bit, giá trị đếm chứa trong 2 thanh ghi TH0, TL0. - Timer 1: là một bộ đếm tuần tự 16 bit chứa trong TH1 và TL1. 2/ Các thanh ghi của bộ Timer: - Thanh ghi TMOD (Time mode) là thanh ghi 8 bit. Bit Name Timer Description 7 GATE 1 Khi GATE = 1, Timer chỉ làm việc khi INT1=1 6 C/T 1 Bit cho đếm sự kiện hay ghi giờ C/T = 1 : Đếm sự kiện C/T = 0 : Ghi giờ đều đặn 5 M1 1 Bit chọn mode của Timer 1 4 M0 1 Bit chọn mode của Timer 1 3 GATE 0 Bit cổng của Timer 0 2 C/T 0 Bit chọn Counter/Timer của Timer 0 1 M1 0 Bit chọn mode của Timer 0 0 M0 0 Bit chọn mode của Timer 0 Hai bit M0 và M1 của TMOD để chọn mode cho Timer 0 hoặc Timer 1. 22
  24. M1 M0 MODE DESCRIPTION 0 0 0 Mode Timer 13 bit (mode 8048) 0 1 1 Mode Timer 16 bit 1 0 2 Mode tự động nạp 8 bit 1 1 3 Mode Timer tách ra : Timer 0 : TL0 là Timer 8 bit được điều khiển bởi các bit của Timer 0. TH0 tương tự nhưng được điều khiển bởi các bit của mode Timer 1. Timer 1 : Được ngừng lại. - Thanh ghi TCON (Timer control) Thanh ghi điều khiển bao gồm các bit trạng thái và các bit điều khiển bởi Timer 0 và Timer 1. Thanh ghi TCON có bit định vị. Hoạt động của từng bit được tóm tắt như sau: Bit Symbol Bit Address Description TCON.7 TF1 8FH Cờ tràn Timer 1 được set bởi phần cứng ở sự tràn, được xóabởi phần mềm hoặc bởi phần cứng khi các vectơxử lý đến thủ tục phục vụ ngắt ISR TCON.6 TR1 8EH Bit điều khiển chạy Timer 1 được set hoặc xóa bởi phần mềm để chạy hoặc 23
  25. ngưng chạy Timer. TCON.5 TF0 8DH Cờ tràn Timer 0(hoạt động tương tự TF1) TCON.4 TR0 8CH Bit điều khiển chạy Timer 0 (giống TR1) TCON.3 IE1 8BH Cờ kiểu ngắt 1 ngoài. Khi cạnh xuống xuất hiện trên INT1 thì IE1 được xóa bởi phần mềm hoặc phần cứng khi CPU định hướng đến thủ tục phục vụ ngắt ngoài. TCON.2 IT1 8AH Cờ kiểu ngắt 1 ngoài được set hoặc xóa bằng phấn mềm bởi cạnh kích hoạt bởi sự ngắt ngoài. TCON.1 IE0 89H Cờ cạnh ngắt 0 ngoài TCON IT0 88H Cờ kiểu ngắt 0 ngoài. 3/ Các chế độ hoạt động của Timer: - Mode 0: gồm 8 bit của thanh ghi THx, 5 bit của thanh ghi TLx. (Rất ít được sử dụng) Timer Clock TLx (5 bit) THx (8 bit) TFx Over flow - Mode 1: bộ Timer là bộ đếm gồm 16 bit. Gồm 8 bit của thanh ghi THx và 8 bit của thanh ghi TLx. Đếm giá trị từ 0 đền 216-1=65535 24
  26. Với mode 1 bộ timer không tự động nạp lại giá trị đếm sau mỗi lần tràn. Do đó sau mỗi lần tràn ta phải nạp lại giá trị đặt cho timer. - Mode 2: là chế độ tự động nạp lại. Bộ timer là bộ đếm 8 bit chứa trong thanh ghi THx. Thanh ghi THx không thực hiện nhiệm vụ đếm, mà chỉ nạp lại giá trị cho thanh ghi TLx sau mỗi lần tràn. - Mode 3: +Mode 3 là mode Timer tách ra và là sự khác biệt cho mỗi Timer. +Timer 0 ở mode 3 được chia là 2 timer 8 bit. TL0 và TH0 hoạt động như những Timer riêng lẻ với sự tràn sẽ set các bit TL0 và TF1 tương ứng. +Timer 1 bị dừng lại ở mode 3, nhưng có thể được khởi động bởi việc ngắt nó vào một trong các mode khác. Chỉ có nhược điểm là cờ tràn TF1 của Timer 1 không bị ảnh hưởng bởi các sự tràn của Timer 1 bởi vì TF1 được nối với TH0. +Mode 3 cung cấp 1 Timer ngoại 8 bit là Timer thứ ba của 8951. Khi vào Timer 0 ở mode 3, Timer có thể hoạt động hoặc tắt bởi sự ngắt nó ra ngoài và vào trong mode của chính nó hoặc có thể được dùng bởi Port nối tiếp như là một máy phát tốc độ Baud, hoặc nó có thể dùng trong hướng nào đó mà không sử dụng Interrupt. 25
  27. CHƯƠNG II : TÌM HIỂU ĐỘNG CƠ BƯỚC I. KHÁI QUÁT: Động cơ bước cho phép xác định vị trí mà không cần dùng mạch hối tiếp. Động cơ bước khác động cơ bình thường ở chổ, trục giữa của chúng không quay tự do, mà quay theo từng bước khi các cuộn dây của chúng được cấp nguồn theo thứ tự thích hợp.  Bước của động cơ (giá trị của góc giữa hai vị trí ổn định kề nhau của Roto) càng nhỏ thì độ chính xác trong điều khiển càng cao. Bước của động cơ phụ thuộc vào số cuộn dây phần ứng, số cực của Stato, số răng của Roto và phương pháp điều khiển bước đủ hoặc điều khiển nữa bước. Tùy theo yêu cầu về độ chính xác và kết cấu của động cơ, mà bước của động cơ thay đổi trong giới hạn từ 1800 - 0,180. Trong đó: động cơ bước nam châm vĩnh cửu dạng cực móng và có từ trở thay đổi từ 60 - 450, động cơ bước có từ trở thay đổi có góc bước nằm trong giới hạn từ: 1,80- 300, và động cơ bước hỗn hợp có góc bước thay đổi trong khoảng 0,360 - 150. Các giá trị góc của các loại động cơ kể trên được tính trong chế độ điều khiển bước đủ.  Chiều quay của động cơ bước không phụ thuộc vào chiều dòng điện chạy trong các cuộn dây phần ứng, mà phụ thuộc vào thứ tự cuộn dây phần ứng được cấp xung điều khiển. Nhiệm vụ này do bộ chuyển phát thực hiện.  Số cuộn dây phần ứng (hay cò gọi là cuộn dây pha) của động cơ bước được chế tạo từ 2 - 5 cuộn dây pha (hay còn gọi là bối dây) và được đặt đối diện nhau trong các rãnh ở Stato. Đối với cuộn dây phải có hai cuộn dây thì chỉ dùng cho điều khiển lưỡng cực (cuộn dây có cực tính thay đổi), với 4 cuộn dây có thể dùng cho cả hai chế độ điều khiển lưỡng cực và điều khiển đơn cực. II. PHÂN LOẠI ĐỘNG CƠ BƯỚC: Động cơ bước được phân thành các loại như sau: 26
  28. 1) Động cơ bước nam châm vĩnh cữu:  Cấu trúc: Các cuộn dây quấn trên stator, roto là nam châm vĩnh cữu, giống động cơ AC đồng bộ.  Phân loại: đơn cực và lưỡng cực - Đơn cực:là động cơ có chiều dòng điện qua mỗi cuộn dây không đổi. - Lưỡng cực là động cơ có chiều dòng điện qua mỗi cuộn dây thay đổi. 2) Động cơ bước có từ trở biến thiên:  Cấu trúc: Roto làm bằng sắt nhẹ, số cực của roto ít hơn số cực của stato, mỗi cuộn dây được quấn trên 2 cục của stato đối diện nhau. Hay còn gọi là động cơ phản kháng. Kiểu động cơ này có góc nằm trong giới hạn từ 1,80  300 trong chế độ điều khiển bước đủ, mômen hãm từ 1 50 Ncm, tần số khởi động lớn nhất là 1 Khz, và tần số làm việc lớn nhất trong điều kiện 27
  29. không tải là 20 Khz. Stato được chế tạo thành dạng răng với bước cực s, roto của động cơ cũng được chế tạo thành dạng răng có bước cực r. 3) Động cơ bước loại hỗn hợp: Hay còn gọi là động cơ bước cảm ứng, có góc bước thay đổi trong khoảng 0,36 - 150 trong chế độ bước đủ, mômen hãm từ 3 - 1000 Ncm, tần số khởi động lớn nhất là 40 khz. Trong các loại động cơ bước kể trên thì động cơ bước hổn hợp được sử dụng nhiều hơn cả. Vì loại động cơ này kết hợp các ưu điểm của hai loại động cơ trên đó là: Động cơ nam châm vĩnh Cửu với dạng cực móng, và động cơ có từ trở thay đổi. Cấu tạo của động cơ bước thay đổi hổn hợp là sự kết hợp giữa động cơ bước nam châm vĩnh cữu và động cơ bước có từ trở thay đổi. Phần Stato được cấu tạo hoàn toàn giống Stator của động cơ bước có từ trở thay đổi. Trên các cực của Stato được đặt các cuộn dây pha, mỗi cuộn dây pha được quấn thành 4 cuộn dây hoặc được quấn thành 2 cuộn dây đặt xen kẻ nhau để hình thành lên các cực N và S đồng thời đối diện với mỗi cực của bối dây là răng của Roto và cũng được đặt xen kẽ giữa hai vành răng số 3 của Roto.  Động cơ hổn hợp cũng được chế tạo với 2, 4 và 5 pha, động cơ 2 và 4 pha thường cho góc bước từ s = 0,90 - 150 cò động cơ 5 pha thường có có góc bước từ s = 0,180 - 0,270 .  Bước răng của Roto được xác định bằng biểu thức sau: 2 3600 r Zr Zr Trong đó: Zr là số răng của Roto 28
  30.  Góc bước của động cơ là tỷ số giữa bước răng r và số pha m của động cơ khi cuộn dây được điều khiển lưỡng cực : r s m  Động cơ hổn hợp có tần số bước và độ phân giải cao, có mômen quay và mômen hãm lớn.  Trong chế tạo động cơ bước ngoài ba loại chính kể trên, để có góc bước thay rất nhỏ người ta còn chế tạo động cơ bước từ trở thay đổi có nhiều tầng, kết cấu của loại này được trình bày ở hình .  Loại động cơ này thường được chế tạo 2, 3, 4 tầng trình bầy kết cấu của động cơ bước từ trở thay đổi có ba tầng. Trong mỗi tầng số răng của Stato và Roto giống nhau. Vị trí răng của 3 Stato được đặt giống nhau và được cố định trên trục Roto, nhưng vị trí răng của 3 Stato được đặt lệch nhau 1/3 bước răng.  Góc lệch giữa hai tầng kề nhau được xác định bằng biểu thức sau: r 360 0  m Zrm Nếu Roto có Zr = 12 răng thì góc lệch nhau giữa hai tầng kề nhau là 100  Khi có một xung dòng điện điều khiển đặt vào tầng 1 thì răng của Roto và Stato đối đỉnh nhau (vì từ thông chỉ khép kín tại vị trí có từ trở nhỏ nhất). Lúc này răng của Roto và Stato ở tầng 2 lệch nhau 1 góc là 100, còn răng của Roto và Stato ở tầng 3 lệch nhau là 200. Cắt xung dòng điện điều khiển vào tầng 1 và các xung dòng điện điều khiển vào tầng thì Roto của tầng 2 0 quay một góc 10 để đỉnh răng của Roto trùng với đỉnh răng của stato ở tầng 2, lúc này răng của Roto và Stato của tầng 3 lệch nhau một góc là 100 so với tầng 2. Quá trình điều khiển tiếp tục cho tới khi trở lại tầng 1. Cuối cùng ta có quá trình điều khiển theo trình tự 1-2-3-1 III. PHƯƠNG PHÁP ĐIỀU KHIỂN ĐỦ BƯỚC VÀ NỬA BƯỚC: 1. Phương pháp điều khiển nguyên bước: 29
  31. Thể hiện trình tự điều khiển bước đủ của dộng cơ bước nam châm vĩnh cửu được từ hóa với các cực từ xen kẽ. Nguyên lý làm việc của động cơ bước là dựa trên sự tác động tương hổ giữa từ trường của Stato và Roto, hình thành mômen điện từ làm quay Roto đi một góc nhất định. Bảng làm việc của chế độ nguyên bước: Nếu ta điều khiển động cơ theo như bảng trên, chuyển mạch tuần tự từ bước 1 đến bước 4. Động cơ sẽ làm việc ở chế độ nguyên bước như sau Dạng điều khiển này được gọi là điều khiển bước đủ hay còn gọi là điều khiển đối xứng. 30
  32. 2. Phương pháp điều khiển nửa bước: Thể hiện trình tự điều khiển nửa bước, quá trình điều khiển nửa bước tương tự như quá trình điều khiển bước đủ, nhưng trình tự chuyển mạch các cuộn dây điều khiển như bảng sau: Với việc điều khiển nửa bước, mỗi bước của động cơ quay được nhỏ hơn ở chế độ nguyên bước. Như ta thấy, với cung 1 loại động cơ, nếu họat động ở chế độ nguyên bước, thì chỉ cần 4 bước để thực hiện 1 vong quay, còn ở chế độ nữa bước là 8. Xét về yêu cầu đảm bảo độ chính xác trong điều khiển, thì phương pháp điều khiển nửa bước dễ dàng đáp ứng hơn, nhưng bộ chuyển phát xung điều khiển phức tạp hơn nhiều so với phương pháp điều khiển bước đủ. 31
  33. IV. NGUYÊN LÝ HOẠT ĐỘNG CỦA ĐỘNG CƠ BƯỚC 1. Động cơ nam châm vĩnh cửu: Nguyên lý làm việc của động cơ này là dựa vào tác động của một trường điện từ trên một mômen điện từ, tức là tác động giữa một trường điện từ và một hoặc 32
  34. nhiều nam châm vĩnh cửu. Roto của động cơ tạo thành một hoặc nhiều cặp từ và mômen điện từ của nam châm được dặt thẳng hàng trên từ trường quay do các cuộn dây tạo nên. Xét cấu trúc của động cơ bước nam châm vĩnh cửu như: Động cơ có hai cuộn dây lắp ở hai cực của Stato, và một nam châm vĩnh cửu ở Roto. Khi kích thích một cuộn dây của Stato (đồng thời ngắt điện cuộn kia) sẽ tạo nên hai cực Bắc (North) và Nam (South) của nam châm. Roto sẽ thẳng đứng với hướng từ trường Nếu ta cho dòng điện vào cuộn dây W1 thì vị trí 1 và 3 của Stato tương ứng sẽ là cực Nam và cực Bắc. Giả sử trục của nam châm vĩnh cửu của Roto đang lệch với trục 1-3 một góc  dưới tác dụng của lực hút do các cực trái dấu của nam châm sẽ sinh ra một lực quay Roto về vị trí 1, vị trí này gọi là vị trí cân bằng. Sau đó cho dòng điện I2 vào cuộn dây W2 (lúc này dòng điện ở cuộn W1 bị ngắt), thanh nam châm sẽ quay nhanh đến vị trí 2 một góc 900 nếu việc cấp điện liên tục và tuần tự vào cuộn dây W1, W2, W1, W2, . Và đảo chiều dòng điện sau mỗi bước, thanh nam châm sẽ quay thành những vòng tròn, từ một phần tư vòng tròn đến một phần tư vòng tròn khác. Các cuộn dây của Stato gọi là các pha. Động cơ bước có thể có nhiều pha: 2, 3, 4, 5 pha, nó được cấp điện cuộn này sang cuộn khác với việc đảo chiều dòng điện sau mỗi bước quay. Chiều các động cơ phụ thuộc vào thứ tự cung cấp điện cho các cuộn dây và hướng của từ trường. 2. Động cơ bước từ trở thay đổi: Nguyên lý làm việc của động cơ bước từ trở thay đổi dựa trên cơ sở định luật cảm ứng điện từ, tức là dựa trên sự tác động giữa một trường điện từ và một Roto có từ trở thay đổi theo góc quay. Roto động cơ điện được chế tạo bằng vật liệu dẫn từ, trên bề mặt Roto thường có nhiều răng. Mỗi răng của Roto hoặc của Stato gọi là một cực. Trên hai cực đối diện được mắc nối tiếp hai cuộn dây (ví dụ như cuộn dây AA') tạo thành 33
  35. một phần của động cơ. Như vậy động cơ như hình vẽ có ba pha A, B, C, từ trở thay đổi theo góc quay của răng. Khi các răng của Roto đứng thẳng hàng với các cực của Stato, từ trở ở đó sẽ nhỏ nhất. Nếu ta cho dòng điện chạy vào cuộn dây BB' nó sẽ tạo nên từ trường kéo cực gần nó nhất của roto và làm Roto quay một góc 300 theo chiều ngược chiều kim đồng hồ. Nếu dòng điện được đưa vào cuộn dây CC', Roto lại tiếp tục quay một góc 300 nữa Các cuộn dây AA', BB', CC' gọi là các pha. Hướng quay của động cơ không phụ thuộc vào chiều của dòng điện mà phụ thuộc vào thứ tự cấp điện cho cuộn dây. Nhiệm vụ này do các mạch logic trong bộ chuyển phát thực hiện. Với cách thay đổi thứ tự hoặc thay đổi cách kích thích các cuộn dây ta cũng làm thay đổi các vị trí góc quay. Động cơ bước có từ trở thay đổi có chuyển động êm, số bước lớn và tần số làm việc cũng khá lớn (từ 2 đến 5 Khz). Một số công thức tính cho động cơ bước từ trở thay đổi: Nr : Số răng roto Ns : Số răng stato Np : Số pha Pr : Góc độ răng roto s : Góc bước Rs : Giá trị bước X = Ns/Np : số răng stato cho một pha - Góc độ răng giữa hai răng kề nhau được xác định như sau : 3600 360 0 Pr ; Ps Nr Pr - Góc bước được xác định bởi biểu thức : 360 0 s (độ / bước) Nr.Np - Giá trị bước 34
  36. 360 Rs s - Nếu tần số xung là f thì tốc độ Roto là: 69 f 60 f s  (vòng / phút) Rs Np.Nr 6 - Số răng Roto cho một pha: Nr X Np 1 3. Động cơ hổn hợp: Động cơ hổn hợp là sự kết hợp nguyên tắt làm việc của động cơ có bước nam châm vĩnh cửu và động cơ bước có từ trở thay đổi nhằm có được đặt tính tốt nhất của hai loại kể trên là momen lớn và số bước lớn. Động cơ gồm hai nửa Roto (1) và (2). Nửa(1) có nhiều răng trên Roto, nửa (2) là nam châm vĩnh cửu. Do đó có sự kết hợp giữa hai phần nên tạo ra sự kích thích roto mạnh hơn. Động cơ loại này có số bước đạt đến 400 bước, nhưng giá thành đắt. 4. Động cơ nhiều Stato: Động cơ gồm nhiều stato trên cùng một trục. Nếu ta dịch chuyển stato đi một góc đồng thời giữ Roto thẳng hàng hoặc ngược lại có bước rất nhỏ. Khi cung cấp điện cho stato một cách liên tục, ta sẽ có một động cơ (quay liên tục), đặc tính của nó không tốt bằng động cơ có từ trở thay đội. V. ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC: 35
  37. Điều khiển động cơ bước do một thiết bị điện tử gọi là bộ chuyển phát thực hiện. nó bao gồm các chức năng sau đây: Tạo các xung với các tần số khác nhau. Chuyển đổi các phần cho phù hợp với thứ tự kích. Làm giảm dao động cơ học. Bộ điều khiển đưa ra các tín hiệu điều khiển đến mạch công suất của động cơ. Bộ điều khiển đưa ra tín hiệu quay thuận, quay ngược, hay đứng yên Bộ điều khiển ở đậy ta sử dụng vi điều khiển 8951. Dưới đây là mạch công suất của động cơ: Ta có thể sử dung transistor hay motfet, để điều khiển động cơ. Khi T dẫn, dòng điện từ nguồn chạy thẳng xuống đất, không có dòng điện qua cuôn dây, khi T không dẫn, dòng điện chạy qua cuôn dây của động cơ bước. Tương tự ta kích tuần tự các cuôn dây còn lại, động cơ sẽ quay, động cơ sẽ quay ngược lại nếu ta kích theo thứ tự ngược lại. Ở vị trí khóa của động cơ bước, ta cho dòng diện chạy qua tất cả các cuộn dây của động cơ. Lúc đó động cơ sẽ không chuyển động, va bị khóa cứng ở vị trí đó. 36
  38.  Ứng dụng: Do mạch điều khiển đơn giản, không phức tạp như cac loại động cơ khác, lại chính xác. Nên động cơ bước được sử dụng nhiều trong cac ứng dụng công nghiệp như: máy in, đồng hồ v.v .  Một số động cơ thường gặp 37
  39. CHƯƠNG III : TÌM HIỂU VỀ ANTENA I.CHỨC NĂNG ANTENA : Anten là bộ phận đầu tiên trong hệ thống. Có nhiều loại khác nhau, việc lựa chọn Anten cho đúng với kênh sóng, bố trí lắp đặt cho đúng kỹ thuật, dùng dây cáp truyền sóng đúng tổng trở. Những yếu tố này quyết định khả năng nhận sóng điện của Anten. Anten có 2 loại là UHF và VHF :  VHF : very high fequency có dải tần thu được từ 30 – 300 MHZ.  UHF: ultra high fequency có dải tần thu được từ 300MHZ – 32GHz Nhiệm vụ của Anten:  Thu tín hiệu cao tần RF được gửi từ đài phát.  Đáp ứng được băng thông giữa hình và tiếng.  Đáp ứng được độ lợi cho biên độ tín hiệu lớn nhất là tín hiệu truyền hình màu ở nơi xa đài phát. II.CẤU TẠO ANTEN YAGI: Anten thông dụng và tiện lợi nhất hiện nay là Anten YAGI. Yagi là tên một nhà bác học người Nhật đã sáng chế ra loại Anten này. Cùng góp công với YAGI còn có UDA cũng là người Nhật, nên cóp tài liệu gọi là Anten UDA_YAGI. Anten có 3 thành phần chính: a. Chấn tử thu sóng Thường dùng ngẫu cực có hình vòng cung dẹt. Dây Anten được mắc ở hai bên đọan hở ra của vòng cung dẹt. Chấn tử thu sóng là bộ phận chính của Anten. b. Chấn tử hướng sóng: Gồm 1 hay nhiều ống nhôm có chiều dài ngắn hơn chấn tử thu sóng được đặt ở phía trước hướng về đài truyền hình. Những chấn tử hướng 38
  40. sóng có chiều dài càng ngắn thì đặt trước mũi Anten, cón những chấn tử dài hơn thì càng gần chấn tử thu sóng hơn. c. Chấn tử phản sóng: Có chiều dài lớn hơn cả, gồm 1 hay nhiều nhánh tạo thành dàn đặt ngay sau chấn tử thu sóng. Chấn tử phản sóng có nhiệm vụ phản dội vào chấn tử thu sóng làm tăng hệ số khuyếch đại. 39
  41. CHƯƠNG IV: TIẾN TRÌNH THƯC HIỆN I. MẠCH KÍCH CÔNG SUẤT: Để điều khiển động cơ bước ta sử dụng mạch sau: Ta sử dụng 1 transistor loại pnp (TIP 127), và 4 Motfet IRF540. Để động cơ bước họat động cần dòng ic = 1.6A ic 1.6 ib 1.6mA 1000 1000 9 0.7 Ta chọn R1 5k 1.6 Vậy ta chọn R1 và R2 là 10k Linh kiện Motfet, là loại linh kiện đóng ngắt nhanh và tổn hao do đóng ngắt thấp. Điều khiển kích đóng ngắt bằng xung điện áp ở mạch cổng. Do đó khi có điện áp đặt vào 2 cực G và S thì Motfet dẫn. ngược lại, khi VGS=0 thì Motfet ngắt. II. MẠCH HIỂN THỊ RA LED 7 ĐOẠN : 40
  42. Đây là mạch hiển thị số ra Led 7 đoạn. Do động cơ bước chỉ quay từ 0 đến 3600, nên ta chỉ sử dụng 3 Led 7 đoạn. Ở mạch này ta sử dung IC giải mã BCD 7447. Ở đấu vào của 7447 ta đưa vào số đếm (thập phân, hay số hex), IC 7447 sẽ cho ra mã số tương ứng đến Led 7 đoạn. Gọi i là dòng điện chạy qua Led, ta chọn i = 10mA Ta sử dung transistor A1015 để điều khiển đóng ngắt Led. Vcc 0.2 5 0.2 4.8 i R5 480 . Ta chon R5= 330 R5 R5 10mA ic 10 ib 0.1.mA  100 Led 7 đoạn có 7 led nhỏ, vậy ib=0.7mA Vcc 0.7 5 0.7 Rb 6k .ta chọn Rb=1k ib 0.7 III. SƠ ĐỒ MẠCH ĐIỀU KHIỂN: 41
  43. VCC VCC VCC 1 Q2 1 Q3 1 Q4 3 R2 L2 3 R3 L3 3 R4 L4 LED1 2 1k 2 1k 2 1k LED7SEG LED2 LED3 3 A1015 LED7SEG A1015 LED7SEG A1015 C1 CM 3 3 x1 8 CM CM CM 8 8 VCC 33p Y1 CM CM C2 11.059 R10 x2 R5 4K7 A 1 14 B0 33p B 2 13 B1 C 3 12 B2 A B C D E F GDP D 4 11 B3 A B C D E F GDP A B C D E F GDP E 5 10 B4 7 6 4 2 1 9 105 F 6 9 B5 2 VCC 7 6 4 2 1 9 105 7 6 4 2 1 9 105 G 7 8 B6 SW2 A B C D E F G A B C D E F G A B C D E F 330 CONG TAC HANH TRINH 1 U1 40 U2 39 21 7 13 B0 38 P0.0/AD0 P2.0/A8 22 1 1 A 12 B1 37 P0.1/AD1 VCC P2.1/A9 23 2 2 B 11 B2 36 P0.2/AD2 P2.2/A10 24 6 4 C 10 B3 35 P0.3/AD3 P2.3/A11 25 L1 4 8 D 9 B4 34 P0.4/AD4 P2.4/A12 26 L2 VCC 5 BI/RBO E 15 B5 JP2 33 P0.5/AD5 P2.5/A13 27 L3 3 RBI F 14 B6 32 P0.6/AD6 P2.6/A14 28 L4 LT G 2 P0.7/AD7 P2.7/A15 JP3 74LS47 1 1 10 HEADER 2 2 P1.0 P3.0/RXD 11 1 3 P1.1 P3.1/TXD 12 2 JP4 4 P1.2 P3.2/INTO 13 3 2 D4 P1.3 P3.3/INT1 4 5 14 U3 3 6 P1.4 P3.4/TO 15 5 JP5 LM7806C/TO VCC 2 7 P1.5 P3.5/T1 16 6 4 - + 1 1 3 1 8 P1.6 P3.6/WR 17 7 2 IN OUT x1 19 P1.7 P3.7/RD 8 1 C4 C5 HEADER 3 x2 18 XTAL1 29 ban phim diode bridge 2200uf 10uf VCC XTAL2 PSEN HEADER 2 GND 31 30 3 EA/VPP ALE/PROG 2 R6 9 SW1 C3 RST 100 10uf 1 2 AT89C51 JP6 D5 reset 2 1 + C6 DIODE 2000UF R7 ACQUY 6V 10K IV. BÁO CÁO KẾT QUẢ ĐẠT ĐƯỢC: Sau khi hoàn thành Anten xoay có nhớ sử dụng động cơ bước, đã đạt được những kết quả sau: Khác với các Anten xoay và lưu vị trí trên thi trường, sử dụng động cơ DC. Anten này có thể xoay đến bất kỳ vị trí nào, chỉ cần đặt 1 lúc nhiều vị trí cần đến, sau đó cho động cơ chạy. Động cơ sẽ dừng đúng từng vị trí mà đã đặt trước đó. Tiện lợi khi sử dụng động cơ bước là mạch điều khiển đơn giản và không cần mạch hồi tiếp như động cơ servo, mà cũng có thể đến đúng vị trí ta cần. Để Anten đứng yên khi không sử dụng, ta sử dung bình Acquy, để cấp nguồn điện giữ cho động cơ đứng yên. Đồng thời sử dụng nguồn điện này để nuôi vi điều khiển. Để nhớ các vị trí ta đặt.  Hướng dẫn sử dụng Anten: Khi có nguồn cấp cho Anten, Anten sẽ xoay đến đến khi đụng vào công tắc hành trình, động cơ sẽ dừng lại, ta đặt vị trí đó là 00. Nút Run: cho phép Anten xoay. 42
  44. Nút Stop: Anten dừng lại. Nút Set: nhấn vào nút set, sau đó dặt vị trí cho Anten. Nút Save: khi đặt xong vị trí đầu tiên, nhấn save để lưu lại vị trí đó. Nút Change: thay đổi chiều quay cho Anten. Nút Clr: để xóa số khi nhấn sai. V. CHƯƠNG TRÌNH: #include LED1 BIT P2.5 LED2 BIT P2.6 LED3 BIT P2.7 TRAM EQU 3CH CHUC EQU 3BH DONVI EQU 3AH TRAM1 EQU 51H CHUC1 EQU 52H DONVI1 EQU 53H SO1 EQU 35H SO2 EQU 36H SO3 EQU 37H HANG_TRAM EQU 3DH HANG_CHUC EQU 3EH HANG_DONVI EQU 3FH SOBUOC EQU 39H;LUU SO BUOC DONG CO BUOC DUOC STEP BIT P1.3; PORT CHO PHEP DONG CO CHAY MOC BIT P0.3;CONG TAC HANH TRINH,XAC DINH DIEM GOC BAN DAU STOP BIT 20H.0 CHIEUQUAY BIT 20H.1 43
  45. SAVE BIT 20H.5 DEM BIT 20H.3 DAT BIT 20H.2 ORG 0 MAIN: MOV TMOD,#00000001B MOV TRAM1,#0 MOV CHUC1,#0 MOV DONVI1,#0 MOV SO1,#00H MOV SO2,#00H MOV SO3,#00H MOV SOBUOC,#00H MOV HANG_DONVI,#00H MOV HANG_TRAM,#00H MOV HANG_CHUC,#00H MOV DONVI,#00H MOV CHUC,#00H MOV TRAM,#00H MOV 34H,#00H MOV 39H,#0FFH MOV 41H,#0 MOV 42H,#00H MOV 43H,#0FFH MOV 44H,#0FFH MOV 45H,#0FFH MOV 46H,#0FFH MOV 47H,#0FFH MOV 48H,#0FFH MOV 49H,#0FFH 44
  46. MOV 4AH,#0FFH MOV 4BH,#0FFH MOV 4CH,#0FFH MOV 5CH,#0 MOV 5DH,#0 MOV 20H,#0 MOV 22H,#0 MOV R5,#0 MOV R6,#10 MOV 11H,#0 ; LOOP: ACALL QUETPHIM ACALL HIENTHI ACALL HIENTHI1 ACALL KIEMTRAPHIM ACALL DOISANGDO ACALL QUAY1 SJMP LOOP ; KIEMTRAPHIM:;KIEM TRA PHIM NAO DUOC NHAN MOV A,10H ;0 NHO 10H =1:PHIM DA DUOC NHAN CJNE A,#1,SUTDOWN ;NEU KHONG CO PHIM NAO DUOC NHAN THI THOAT KHOI CHUONG TRINH MOV 10H,#0 MOV A,32H CJNE A,#0AH,TIEP1 ;NEU PHIM= 0AH,THI CHO BIT STOP=1 SETB STOP ;DONG CO DUNG LAI 45
  47. TIEP1: CJNE A,#0BH,TIEP2 ;NEU PHIM=0BH,THI CHO BIT STOP=0 MOV SO1,#0 ;DONG CO CHAY MOV SO2,#0 MOV SO3,#0 CLR STOP CLR 22H.0 MOV P1,38H TIEP2: CJNE A,#0CH,TIEP3 ;NEU PHIM=0CH,THI GOI CHUONG TRINH LUU_VI_TRI ACALL LUU_VI_TRI MOV SO1,#0 MOV SO2,#0 MOV SO3,#0 TIEP3: CJNE A,#0DH,TIEP4 ;NEU PHIM=0DH,THI DAO BIT CHIEUQUAY SETB STOP ;CHIEU QUAY DONG CO SE THAY DOI JNB MOC,SUTDOWN CPL CHIEUQUAY CLR 22H.0 CLR STOP TIEP4: CJNE A,#0EH,TIEP5 ;NEU PHIM=0EH,BIT DAT=1 SETB STOP ;DAT VI TRI CHO DONG CO SETB DAT SETB 22H.0 TIEP5: CJNE A,#0FH,TIEP6 ;NEU PHIM=0FH 46
  48. JNB DAT,TIEP6 MOV SO3,SO2 MOV SO2,SO1 MOV SO1,#0 TIEP6: CJNE A,#10,XUONGHANG;CHON NHUNG PHIM <10,DE DAT VI TRI XUONGHANG: JNC SUTDOWN JNB DAT,SUTDOWN INC 42H MOV A,42H CJNE A,#4,NHAPSO MOV SO1,#0 MOV SO2,#0 MOV SO3,#0 MOV 42H,#1 NHAPSO: MOV SO1,SO2 MOV SO2,SO3 MOV SO3,32H ACALL KIEMTRADO ACALL QUYRASOBUOC SUTDOWN: NOP RET ; QUAY1: QUAY: JB STOP,NHAY2 47
  49. JB CHIEUQUAY,NHAY0 INC R5 CJNE R5,#8,NHAY6 MOV R5,#0 SJMP NHAY6 NHAY0: DEC R5 CJNE R5,#0FFH,NHAY6 MOV R5,#7 NHAY6: CLR STEP NHAY1: MOV DPTR,#STEPCODE MOV A,R5 MOVC A,@A+DPTR MOV P1,A ORL A,#08H MOV 38H,A ACALL DOCSOBUOC ACALL DOISANGDO ACALL DELAY SETB DEM JNB 22H.1,NHAY4 JNB MOC,NHAY9 CLR 22H.1 SJMP NHAY9 NHAY4: JNB MOC,NHAY8 NHAY9:ACALL QUETPHIM ACALL KIEMTRAPHIM ACALL SO_SANH 48
  50. SJMP QUAY NHAY8: SETB 22H.1 CPL CHIEUQUAY NHAY2: SETB 20H.4 ACALL LAY_TOA_DO_GOC SETB STOP SETB STEP MOV P1,#11111000B NOP RET ; DOCSOBUOC: JNB 20H.4,OUT1 JNB CHIEUQUAY,GIAM JNB DEM,OUT1 CLR DEM INC DONVI INC 41H MOV A,41H CJNE A,#200,TANGSOBUOC SETB 22H.3 MOV 41H,#0 TANGSOBUOC: MOV A,DONVI CJNE A,#10,OUT1 MOV DONVI,#0 INC CHUC MOV A,CHUC CJNE A,#10,OUT1 MOV CHUC,#0 49
  51. INC TRAM MOV A,TRAM SJMP OUT1 GIAM: JNB DEM,OUT1 CLR DEM DEC DONVI DEC 41H MOV A,41H CJNE A,#0FFH,GIAMSOBUOC CLR 22H.3 MOV 41H,#199 GIAMSOBUOC: MOV A,DONVI CJNE A,#0FFH,OUT1 MOV DONVI,#9 DEC CHUC MOV A,CHUC CJNE A,#0FFH,OUT1 MOV CHUC,#9 DEC TRAM MOV A,TRAM SJMP OUT1 OUT1: NOP RET ; QUYRASOBUOC: MOV A,SO1 MOV B,#10 MUL AB 50
  52. ADD A,SO2 MOV B,#9 DIV AB MOV HANG_TRAM,A MOV A,B MOV B,#10 MUL AB ADD A,SO3 MOV B,#9 DIV AB MOV HANG_CHUC,A MOV A,B MOV B,#10 MUL AB MOV B,#9 DIV AB MOV HANG_DONVI,A MOV A,B CJNE A,#5,LAMTIEP1 LAMTIEP1: JC LAMTIEP2 INC HANG_DONVI ;QUY RA SO BUOC LAMTIEP2: MOV A,HANG_TRAM CJNE A,#2,LAMTIEP3 LAMTIEP3: JNC LAMTIEP4 CLR 22H.2 MOV A,HANG_TRAM MOV B,#100 MUL AB 51
  53. MOV SOBUOC,A MOV A,HANG_CHUC MOV B,#10 MUL AB ADD A,SOBUOC ADD A,HANG_DONVI MOV SOBUOC,A SJMP LAMTIEP5 LAMTIEP4: SETB 22H.2 SUBB A,#2 MOV B,#100 MUL AB MOV SOBUOC,A MOV A,HANG_CHUC MOV B,#10 MUL AB ADD A,SOBUOC ADD A,HANG_DONVI MOV SOBUOC,A LAMTIEP5: NOP RET ; SO_SANH: JNB 20H.4,JUMP12 JB 22H.3,JUMP7 MOV A,43H SUBB A,41H CJNE A,#00H,JUMP3 52
  54. SETB STOP JUMP3: MOV A,44H SUBB A,41H CJNE A,#00H,JUMP4 SETB STOP JUMP4: MOV A,45H SUBB A,41H CJNE A,#00H,JUMP5 SETB STOP JUMP5: MOV A,46H SUBB A,41H CJNE A,#00H,JUMP6 SETB STOP JUMP6: MOV A,47H SUBB A,41H CJNE A,#00H,JUMP12 SETB STOP SJMP JUMP12 JUMP7: MOV A,48H SUBB A,41H CJNE A,#00H,JUMP8 SETB STOP JUMP8: MOV A,49H SUBB A,41H CJNE A,#00H,JUMP9 SETB STOP JUMP9: MOV A,4AH SUBB A,41H CJNE A,#00H,JUMP10 53
  55. SETB STOP JUMP10: MOV A,4BH SUBB A,41H CJNE A,#00H,JUMP11 SETB STOP JUMP11: MOV A,4CH SUBB A,41H CJNE A,#00H,JUMP12 SETB STOP JUMP12: NOP RET ; LUU_VI_TRI:MOV 42H,#0 JB 22H.2,JUMP1 MOV 43H,44H MOV 44H,45H MOV 45H,46H MOV 46H,47H MOV 47H,SOBUOC SJMP JUMP0 JUMP1: MOV 48H,49H MOV 49H,4AH MOV 4AH,4BH MOV 4BH,4CH MOV 4CH,SOBUOC JUMP0: NOP RET 54
  56. ;CHUONG TRINH QUET PHIM QUETPHIM: JNB 20H.4,QUIT PUSH ACC CLR 79H MOV A,P3 ANL A,#0FH CJNE A,#0FH,KETTHUC QUETLAI: MOV 30H,#0 MOV 31H,#0 MOV R7,#01111111B QUET: MOV P3,R7 JNB P3.0,LUUPHIM INC 31H JNB P3.1,LUUPHIM INC 31H JNB P3.2,LUUPHIM INC 31H JNB P3.3,LUUPHIM MOV 31H,#0 INC 30H MOV A,30H XRL A,#4 JZ KETTHUC MOV A,R7 RR A MOV R7,A SJMP QUET LUUPHIM: MOV B,P3 55
  57. MOV R0,#90H ACALL CHONGNAY JNB 78H,QUETLAI MOV A,31H RL A RL A ORL A,30H MOV DPTR,#KEYTAB; CHI DEN BANG DICH MOVC A,@A+DPTR; LAY KY TU DUOC DICH MOV 32H,A mov 10h,#1 SETB 79H KETTHUC: MOV P3,#0FFH POP ACC QUIT: NOP RET CHONGNAY: CLR 78H MOV 33H,#200 KTRALAI1: MOV 34H,#2 KTRALAI: LCALL HIENTHI LCALL HIENTHI1 MOV A,@R0 JZ THOAT0 XRL A,B DJNZ 34H,KTRALAI DJNZ 33H,KTRALAI1 SETB 78H 56
  58. THOAT0: NOP RET ;CHUONG TRINH HIEN THI HIENTHI: JB 22H.0,L3 JNB STOP,L0 MOV A,TRAM1 ORL A,#0F0H MOV P2,A CLR LED3 ACALL DELAY100 SETB LED3 MOV A,CHUC1 ORL A,#0F0H MOV P2,A CLR LED2 ACALL DELAY100 SETB LED2 MOV A,DONVI1 ORL A,#0F0H MOV P2,A CLR LED1 ACALL DELAY100 SETB LED1 SJMP L3 L0: MOV P2,#00H ACALL DELAY100 ACALL DELAY100 MOV P2,#0FH 57
  59. L3: NOP RET ; HIENTHI1: JNB 22H.0,L1 MOV A,SO1 ORL A,#0F0H MOV P2,A CLR LED3 ACALL DELAY100 SETB LED3 MOV A,SO2 ORL A,#0F0H MOV P2,A CLR LED2 ACALL DELAY100 SETB LED2 MOV A,SO3 ORL A,#0F0H MOV P2,A JNB 20H.7,L2 CLR LED1 ACALL DELAY100 SETB LED1 INC 5CH MOV A,5CH CJNE A,#100,L1 MOV 5CH,#0 INC 5DH MOV A,5DH 58
  60. CJNE A,#5,L1 MOV 5DH,#0 CPL 20H.7 SJMP L1 L2: SETB LED1 ACALL DELAY100 INC 5CH MOV A,5CH CJNE A,#100,L1 MOV 5CH,#0 INC 5DH MOV A,5DH CJNE A,#5,L1 MOV 5DH,#0 CPL 20H.7 L1: NOP RET ; ; CHUONG TRINH DOI SANG DO DOISANGDO: MOV A,DONVI MOV B,#9 MUL AB MOV B,#10 DIV AB MOV 50H,A MOV A,B CJNE A,#5,NEXT1 NEXT1: JC NEXT2 59
  61. INC 50H NEXT2: MOV A,CHUC MOV B,#9 MUL AB ADD A,50H MOV B,#10 DIV AB MOV 50H,A MOV DONVI1,B MOV A,TRAM MOV B,#9 MUL AB ADD A,50H MOV B,#10 DIV AB MOV CHUC1,B MOV TRAM1,A RET ; KIEMTRADO: LAMLAI1: MOV A,SO1 CJNE A,#4,LAMTIEP6 LAMTIEP6: JC LAMTIEP7 SUBB A,#3 MOV SO1,A SJMP LAMLAI1 LAMTIEP7: CJNE A,#3,LAMTIEP9 LAMLAI2: MOV A,SO2 CJNE A,#7,LAMTIEP8 60
  62. LAMTIEP8: JC LAMTIEP9 MOV SO1,#0 SUBB A,#6 MOV SO2,A SJMP LAMLAI2 LAMTIEP9: NOP RET ; LAY_TOA_DO_GOC: JB MOC,THOAT_CHUONGTRINH JB 22H.3,THOAT_CHUONGTRINH MOV 41H,#0 MOV DONVI,#0 MOV CHUC,#0 MOV TRAM,#0 THOAT_CHUONGTRINH:NOP RET ; DELAY: LAP: MOV TH0,#HIGH(-10000) MOV TL0,#LOW(-10000) SETB TR0 QUAY_LAI:JB TF0,XOA_CO_TRAN LCALL QUETPHIM LCALL HIENTHI LCALL HIENTHI1 LCALL KIEMTRAPHIM SJMP QUAY_LAI XOA_CO_TRAN: CLR TR0 61
  63. CLR TF0 DJNZ R6,LAP MOV R6,#10 RET STEPCODE: DB 10H,30H,20H,60H,40H,C0H,80H,90H KEYTAB: DB 00H,04H,08H,0CH DB 01H,05H,09H,0DH DB 02H,06H,0AH,0EH DB 03H,07H,0BH,0FH DELAY100: MOV R3,#100 DJNZ R3,$ RET END VI. LƯU ĐỒ GIẢI THUẬT: 1 Chương trình chính: 62
  64. 2 Chương trình KIEMTRAPHIM: 63
  65. 3 Chương trình DOISANGDO: 64
  66. 4 Chương trình QUAY: 65
  67. 5 Chương trình QUETPHIM: 66