ky thuat vi dieu khien ----- thiet ke he thong voi vi dieu khien

245
12/21/2012 kỹ thuật vi điều khiển 1 Môn KỸ THUẬT VI ĐIỀU KHIỂN GV: LÊ TRỌNG LUÂN 0937351983 Khoa Điện Điện Tử Trường Đại Học Kinh Tế Kỹ Thuật Công Nghiệp

Upload: minh-linh

Post on 10-May-2015

2.486 views

Category:

Technology


14 download

TRANSCRIPT

Page 1: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

12/21/2012 kỹ thuật vi điều khiển 1

MônKỸ THUẬT VI ĐIỀU KHIỂN

GV: LÊ TRỌNG LUÂN0937351983

Khoa Điện – Điện TửTrường Đại Học Kinh Tế Kỹ Thuật Công Nghiệp

Page 2: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

212/21/2012 kỹ thuật vi điều khiển

KỸ THUẬT VI ĐIỀU KHIỂNNỘI DUNG CHƯƠNG TRÌNH

Chương 1: Introduction to 89S52Chương 2: AT89S52 Assembly ProgrammingChương 3:Data Structures and Subroutine CallsChương 4: Operation Modes and Memory ExpansionChương 5: Interrupts and ResetsChương 6: Parallel I/O PortsChương 7: Timer/Counter FunctionsChương 8: Serial Communication InterfaceChương 9: LCD,ADC and SENSOR InterfaceChương 10: Step motor and DAC Interface

Page 3: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

312/21/2012 kỹ thuật vi điều khiển

KỸ THUẬT VI ĐIỀU KHIỂN

Chương 1: Introduction to 89S52

Page 4: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

412/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52Máy tính là gi?SoftwareHardwareCấu trúc chung của máy tính như sau

Microcontroller AT89S52

Controlunit

Arithmeticlogicunit

Registers

common bus

memory

programstorage

datastorage

output

unit

input

unit

Figure 1.1 Computer organization

Page 5: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

512/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52The processor (bộ xử lý)

- Registers: bộ nhớ trong của Processcor- Arithmetic logic unit (ALU) - Control unit (CU)

PC- thanh ghi bộ đếm chương trình sẽ luôn lưu giữ địa chỉ của lệnh tiếp theo sẽ được thực hiện.The Microprocessor (bộ vi xử lý)

A processor implemented on a very large scale integration (VLSI) chip.

Peripheral chips are needed to construct a productThe Microcontroller (bộ vi điều khiển)

The processor and peripheral functions implemented on one VLSI chip

Microcontroller AT89S52

Page 6: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

612/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52Features of the AT89S52 microcontroller

8K Bytes of In-System Programmable (ISP) Flash Memory– Endurance: 1000 Write/Erase Cycles4.0V to 5.5V Operating RangeFully Static Operation: 0 Hz to 33 MHzThree-level Program Memory Lock256 x 8-bit Internal RAM32 Programmable I/O LinesThree 16-bit Timer/CountersEight Interrupt SourcesFull Duplex UART Serial ChannelLow-power Idle and Power-down ModesInterrupt Recovery from Power-down ModeWatchdog TimerDual Data PointerPower-off FlagFast Programming TimeFlexible ISP Programming (Byte and Page Mode)

Microcontroller AT89S52

Page 7: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

712/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52Microcontroller AT89S52

H 1.2 Block diagram

Page 8: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

812/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52Ví dụ ứng dụng của vi điều khiển

Microcontroller AT89S52

ThiÕt bÞ néi thÊt gia ®ình Văn phßng « t«

Đå ®iÖn trong nhàM¸y ®µm tho¹iM¸y ®iÖn tho¹iC¸c hÖ thèng an toµnC¸c bé më cöa ga-ra xeM¸y tr¶ lêiM¸y FaxM¸y tÝnh, TiviTruyÒn h×nh c¸pM¸y quy camerađiÒu khiÓn tõ xaTrß ch¬i ®iÖn töC¸c nh¹c cô ®iÖn töM¸y kh©uđiÒu khiÓn ¸nh s¸ngM¸y nh¾n tinM¸y ch¬i Footballđå ch¬iC¸c dông cô tËp thÓ hình

điÖn tho¹iM¸y tÝnhC¸c hÖ thèng an

toµnM¸y FaxLß vi sãngM¸y sao chôpM¸y in lazerM¸y in mµuM¸y nh¾n tin

M¸y tÝnh hµnh tr×nhĐiÒu khiÓn ®éng c¬Tói ®Öm khÝThiÕt bÞ ABSĐo lêngHÖ thèng bảo mËtĐiều khiÓn truyÒn tinGi¶i trÝĐiÒu hoµ nhiÖt ®éMë cöa kh«ng cÇn chìa

kho¸

Page 9: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

912/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52Semiconductor memory

Random-access memory (RAM)Read-only memory (ROM):

Random-access memoryDynamic random-access memory (DRAM)Static random-access memory (SRAM)

Read-only memoryMask-programmed read-only memory (MROM)Programmable read-only memory (PROM)

Microcontroller AT89S52

Page 10: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

1012/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52Erasable programmable ROM (EPROM)Electrically erasable programmable ROM (EEPROM)Flash memory

Microcontroller AT89S52

Page 11: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

1112/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52Software:

Chương trình chạy trên máy tính gọi là phần mềm.Một chương trình là tập hợp của nhiều lệnh

Machine instruction :Là tập hợp các số nhị phân mà processor hiểu được.Nó rất khó đối với những người mới bắt đầu.

Assembly language:Một lệnh Assembly là mô tả của lệnh mã máy tương ứng.Chương trình Assembly phải được dịch trước khi thực hiện.

Microcontroller AT89S52

Page 12: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

1212/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52High-level language

Cần có chương trình dịch từ ngôn ngữ cấp cao về ngôn ngữ máy.

Source codeMột chương trình được viết bằng ngôn ngữ cấp cao hoặc assembly

Object codeKết quả của một chương trình dịch ra dạng assembler

Microcontroller AT89S52

Page 13: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

1312/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52The AT89S52 Registers

Microcontroller AT89S52

7 Accumulator A 0 7 Accumulator B 0

7 0 7 0

7 0 7 0

7 0 7 0

7 DPH 0 7 DPL 0

15 Program counter 0

C A Z S1 S0 O - P

A:B

TMOD:TCON

THx:TLx x=0; 1; 2

T2MOD:T2CON

DPTR

PC

PSWParityNonOverLựa chọ băng thanh ghiRS1:RS0ZeroCờ nhớ phụCờ nhớ

7 0 R0-R7

7 0

7 0

IP

SP

Page 14: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

1412/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52Khi RESET

Microcontroller AT89S52

Page 15: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

1512/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52Memory Addressing

Bộ nhớ bao gồm các ô nhớ. Mỗi ô nhớ có địa chỉ xác định1 vị trị nhớ có 2 thành phần : address và contents

Data transfer between CPU and memory

Microcontroller AT89S52

address contents

CPU memory

address bus lines

data bus lines

Page 16: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

1612/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52AT89S52 addressing modes

Chú ý:

Chế độ địa chỉ tức thờiMOV A, # 25H ; N¹p gi¸ trÞ 25H vµo thanh ghi AMOV R4, #62 ; N¹p gi¸ trÞ 62 thËp ph©n vµo R4MOV B, #40H ; N¹p gi¸ trÞ 40 H vµo thanh ghi BMOV DPTR, #4521H ; N¹p 4512H vµo con trá d÷ liÖu DPTR

Microcontroller AT89S52

BASE Prefix

BinaryDecimaHexaChar#@

BD or nothingH‘xxx’Trực tiếpĐịa chỉ gián tiếp

Page 17: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

1712/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52Chế độ địa chỉ thanh ghi

MOV A, RO ; Sao néi dung thanh ghi RO vµo thanh ghi AMOV R2, A ; Sao néi dung thanh ghi A vµo thanh ghi R2ADD A; R5 ; Céng néi dung thanh ghi R5 vµo

Chế độ địa chỉ trực tiếp1. C¸c ng¨n nhí tõ 00 ®Õn 1FH ®îc g¸n cho c¸c b¨ng thanh ghi vµ ng¨n xÕp.2. C¸c ng¨n nhí tõ 20H ®Õn 2FH ®îc dµnh cho kh«ng gian ®¸nh ®Þa chØ theo bit

®Ó lu c¸c d÷ liÖu 1 bit.3. C¸c ng¨n nhí tõ 30H ®Õn 7FH lµ kh«ng gian ®Ó lu d÷ liÖu cã kÝch thíc 1byte.

MOV R0, 40H ; Lu néi dung cña ng¨n nhí 40H cña RAM vµo R0MOV 56H, A ; Lu néi dung thanh ghi A vµo ng¨n nhí 56H cña RAMMOV R4, 7FH ; ChuyÓn n«i dung ng¨nnhí 7FH cña RAM vµo R4

Microcontroller AT89S52

Page 18: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

1812/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52Chế độ địa chỉ gián tiếp thanh ghi

Ví dụ: H·y viÕt ch¬ng tr×nh ®Ó sao chÐp mét khèi 10 byte d÷ liÖu tõ vÞ trÝ ng¨n nhí RAM b¾t ®Çu tõ 35H vµo c¸c vÞ trÝ ng¨n nhí RAM b¾t ®Çu tõ 60H

Giải:

MOV R0, # 35H ; Con trá nguånMOV R1, #60H ; Con trá ®ÝchMOV R3, #10 ; Bé ®ÕmBACK: MOV A, @R0 ; LÊy 1byte tõ nguånMOV @R1, A ; Sao chÐp nã ®Õn ®ÝchINC R0 ; T¨ng con trá nguånINC R1 ; T¨ng con trá ®ÝchDJNZ R3, BACK ; LÆp l¹i cho ®Õn khi sao chÐp hÕt 10 byte

Lưu ý: Chỉ thanh ghi R0, R1, DPTR dùng được trong chế độ này

Microcontroller AT89S52

Page 19: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

1912/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S52Chế độ địa chỉ theo chỉ số

Ví dụ: H·y viÕt mét ch¬ng tr×nh ®Ó lÊy x gi¸ trÞ cèng P1 vµ göi gi¸ trÞ x2 tíi cæng P2 liªn tôc.

Lêi gi¶i:ORG 000MOV DPTR, #300 H ; N¹p ®Þa chØ b¶ng XSQR-TABLE MOV A, #0FFH ; N¹p A gi¸ trÞ FFHMOV P1, A ; §Æt cæng P1 lµ ®Çu vµo BACK: MOV A, P1 ; LÊy gi¸ trÞ X tõ P1MOVC A, @A + DPTR ; LÊy gi¸ trÞ X tõ b¶ng XSDQ-TABLEMOV P2, A ; XuÊt nã ra cæng P2SJMP BACK ; LÆp l¹iORG 300HXSQR - TABLE:

DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 END

Microcontroller AT89S52

Page 20: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

2012/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S5289S52 Instructions

Microcontroller AT89S52

Page 21: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

2112/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S5289S52

INSTRUCTIONS

Microcontroller AT89S52

Page 22: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

2212/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S5289S52

INSTRUCTIONS

Microcontroller AT89S52

Page 23: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

2312/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S5289S52 Instructions

Microcontroller AT89S52

Page 24: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

2412/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S5289S52

INSTRUCTIONS

Microcontroller AT89S52

Page 25: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

2512/21/2012 kỹ thuật vi điều khiển

Chương 1: Introduction to 89S5289S52

INSTRUCTIONS

Microcontroller AT89S52

Page 26: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

2612/21/2012 kỹ thuật vi điều khiển

KỸ THUẬT VI ĐIỀU KHIỂN

Chương 2AT89S52 Assembly

Programming

Page 27: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

2712/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly ProgrammingROMBộ nhớ ROM dùng để lưu chương trình do người viết chương trình viết ra.Trong quá trình hoạt động nội dung ROM là cố định, không thể thay đổi, nội dung ROM chỉ thay đổi khi ROM ở chế độ xóa hoặc nạp chương trình (do các mạch điện riêng biệt thực hiện).

Bộ nhớ ROM được tích hợp trong chip Vi điều khiển với dung lượng tùy vào chủng loại cần dùng, chẳng hạn đối với 89S52 là 8KByte, với 89S53 là 12KByte.

Bộ nhớ bên trong Vi điều khiển 89Sxx là bộ nhớ Flash ROM cho phép xóa bộ nhớ ROM bằng điện và nạp vào chương trình mới cũng bằng điện và có thể nạp xóa nhiều lần

Bộ nhớ ROM được định địa chỉ theo từng Byte, bắt đầu từ địa chỉ 0000H, khi viết chương trình cần chú ý đến địa chỉ lớn nhất trên ROM, chương trình được lưu sẽ bị mất khi địa chỉ lưu vượt qua vùng này. Ví dụ: AT89S52 có 8KByte bộ nhớ ROM nội, địa chỉ lớn nhất là 1FFFH, nếu chương trình viết ra có dung lượng lớn hơn 8KByte các byte trong các địa chỉ lớn hơn 1FFFH sẽ bị mất.

Ngoài ra Vi điều khiển còn có khả năng mở rộng bộ nhớ ROM với việc giao tiếp với bộ nhớ ROM bên ngoài lên đến 64KByte(địa chỉ từ 0000H đến FFFFH).

Microcontroller AT89S52

Page 28: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

2812/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

RAM

Microcontroller AT89S52

Page 29: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

2912/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

RAM

Microcontroller AT89S52

Page 30: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

3012/21/2012 kỹ thuật vi điều khiển

Page 31: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

3112/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly ProgrammingRAMBộ nhớ RAM dùng làm môi trường xử lý thông tin, lưu trữ các kết quả trung gian và kết quả cuối cùng của các phép toán, xử lí thông tin. Nó cũng dùng để tổ chức các vùng đệm dữ liệu, trong các thao tác thu phát, chuyển đổi dữ liệu.

RAM nội trong Vi điều khiển được tổ chức như sau: Các vị trí trên RAM được định địa chỉ theo từng

Byte bằng các số thập lục phân (số Hex) Các bank thanh ghi có địa chỉ 00H đến 1FH

210 vị trí được định địa chỉ bit các vị trí RAM bình thường Các thanh ghi có chức năng đặc biệt có địa chỉ từ

80H đến FFH. Các byte RAM 8 bit của vi điều khiển được gọi là "ô nhớ", nếu các ô nhớ có chức năng đặc biệt thường được gọi là "thanh ghi", nếu là bit thì được gọi là "bit nhớ".

Microcontroller AT89S52

Page 32: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

3212/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly ProgrammingRAMCác bank thanh ghi

Các bank thanh ghi có địa chỉ byte từ 00H đến 1FH, có 8 thanh ghi trong mỗi bank, các thanh ghi được đặt tên từ R0-R7, các thanh ghi này được đặt mặc định trong bank 1. Có 4 bank thanh ghi và tại mỗi thời điểm chỉ có một bank thanh ghi được truy xuất với các thanh ghi từ R0 đến R7, để thay đổi việc truy xuất các thanh ghi trên các bank thanh ghi, người dùng phải thay đổi giá trị các bit chọn bank trong thanh ghi trạng thái PSW bằng các câu lệnh trong chương trình.

Các lệnh dùng các thanh ghi từ R0 đến R7 mất khoảng không gian lưu trữ ít hơn và thời gian thực hiện nhanh hơn so với các lệnh dùng các ô nhớ RAM khác, ngoài ra các thanh ghi này còn có thêm một số chức năng đặc biệt khác, vì lí do này các dữ liệu sử dụng thường thường được người viết chương trình đưa vào lưu trong các thanh ghi này.

Ngoài ra, có thể truy xuất thanh ghi trên các bank thanh ghi như với các ô nhớ bình thường khác. Ví dụ: nguời dùng có thể truy xuất đến thanh ghi R7 bằng ô nhớ 07H.

Microcontroller AT89S52

Page 33: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

3312/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

RAMVùng RAM truy xuất từng bit

Trên RAM nội có 210 ô nhớ bit được định địa chỉ và có thể truy xuất đến từng bit, các bit nhớ này cũng được định địa chỉ bằng các số thập lục phân- số Hex. Trong đó có 128 bit nằm trong các ô nhớ có địa chỉ byte từ 20H đến 2FH, các bit nhớ còn lại chứa trong nhóm thanh ghi có chức năng đặc biệt.

Mặc dù các bit nhớ và ô nhớ (byte) cùng được định bằng số Hex, tuy nhiên chúng sẽ được nhận dạng là địa chỉ bit hay địa chỉ byte thông qua các câu lệnh tương ứng dành cho các bit nhớ hoặc các ô nhớ này.

Ví dụ: mov 05H,#10111111B ;>>> lệnh này thiết lập

giá trị cho ô nhớ có địa chỉ là 05HJB 05H,nhan01 ;>>> lệnh này liên quan

đến trạng thái của bit nhớ có địa chỉ 05H

Microcontroller AT89S52

Page 34: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

3412/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

RAM+ Vùng RAM bình thường

Vùng RAM này có địa chỉ byte từ 30H đến 7FH, dùng để lưu trữ dữ liệu, được truy xuất theo từng byte.+ Các thanh ghi có chức năng đặc biệt

Các thanh ghi này được định địa chỉ byte, một số được định thêm địa chỉ bit, có địa chỉ của các thanh ghi này nằm trong khoảng 80H đến FFH. Các thanh ghi đặc biệt này này được dùng để xác lập trạng thái hoạt động cần thiết cho Vi điều khiển.

Microcontroller AT89S52

Page 35: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

3512/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly ProgrammingRAMCác thanh ghi có địa chỉ 80H, 90H, A0H, B0H:Đây là các thanh ghi kiểm tra và điều khiển mức logic của các Port, có thể truy xuất và xác lập các thanh ghi này với địa chỉ byte hoặc tên riêng lần lượt là P0, P1, P2, P3 tương ứng với các Port xuất. Chẳng hạn để tất cả các chân của Port 0 lên mức logic 1, cần làm cho các bit của thanh ghi có địa chỉ 80H lên mức 1.thanh ghi A

Thanh ghi A là thanh ghi quan trọng, dùng để lưu trữ các toán hạng và kết quả của phép tính.

Thanh ghi A có độ dài 8 bits, có địa chỉ là E0H. thanh ghi BThanh ghi B ở địa chỉ F0H, được dùng với thanh ghi A để thực hiện các phép toán số học. Khi thực hiện lệnh chia với thanh ghi A, số dư được lưu trữ ở thanh ghi B. Ngoài ra thanh ghi B còn được dùng như một thanh ghi đệm có nhiều chức năng.Con trỏ ngăn xếp SP: địa chỉ 81HCon trỏ ngăn xếp SP là một thanh ghi có địa chỉ 81H, giá trị của nó được tăng,giảm tự động khi thực hiện các lệnh PUSH, CALL,POP con trỏ SP dùng quản lí và xử lí các nhóm dữ liệu liên tục.Giá trị mặc định của SP là 07H.

Con trỏ dữ liệu DPTR.Con trỏ dữ liệu DPTR là thanh ghi 16 bit duy nhất của Vi điều khiển được tạo thành từ hai thanh ghi DPL (byte thấp-địa chỉ byte 82H) và DPH (byte cao-địa chỉ byte 83H). Hai thanh ghi DPL và DPH có thể truy xuất độc lập bởi người sử dụng. Con trỏ dữ liệu DPTR thường được sử dụng khi truy xuất dữ liệu từ bộ nhớ ROM hoặc bộ nhớ từ bên ngoài.

Microcontroller AT89S52

Page 36: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

3612/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

Thanh ghi trạng thái chương trình PSW (địa chỉ byte D0H)

Microcontroller AT89S52

BIT ĐỊA CHỈ BIT KÍ HIỆU CHỨC NĂNG

PSW.7 D7H C hoặc Cy Cờ nhớ

PSW.6 D6H AC Cờ nhớ phụ

PSW.5 D5H F0 Cờ 0 hay cờ Zero

PSW.4 D4H RS1 Bit lựa chọn dãy thanh ghi

PSW.3 D3H RS0 Bit lựa chọn dãy thanh ghi

PSW.2 D2H 0V Cờ tràn với phép tính liên quan đến số nhị phân có dấu

PSW.1 D1H - Chưa được thiết kế để sử dụng

PSW.0 D0H P Cờ chẵn lẻ

Page 37: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

3712/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

Assembly Program StructureC program

int somefunction (int param) reentrant { ...

return (param); } /* The handler for External interrupt 0, which uses somefunction() */

void external0_int (void) interrupt 0 { ...

somefunction(0); } /* the main program function, which also calls somefunction() */ void main (void) {

while (1==1) { ...

somefunction(); }

}

Microcontroller AT89S52

Page 38: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

3812/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly ProgrammingMicrocontroller AT89S52

Assembly Programorg 000h ; Resetnopljmp Startorg 003h ; Int EX0retiorg 00bh ; Int Timer0retiorg 013h ; Int EX1retiorg 01bh ; Int Timer1retiorg 023h ; Int Communicationreti

stack equ 2fh;=================================

Main Program;=================================

org 4bhStart::; chuong trinh viet o dayJmp Start;=================================; Cac chuong trinh con viet o day;=================================

end.

Page 39: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

3912/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

Fields of a Instruction

Ví dụ:Mov A,R0 ; đưa nội dung R0 vào ALoop_: DJNZ R0,Loop

; Giảm R0 đi 1 và ;nhảy đến nhã loop khi R0<>0

Microcontroller AT89S52

Label operation operand ; comment

Page 40: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

4012/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

Assembler Directives -- a sampleENDORG#DEFINE

#define <label> <expression>EQU

<label> EQU <expression> [<comment>]

Microcontroller AT89S52

Page 41: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

4112/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

Flowchart

Microcontroller AT89S52

Symbols of Flowchart

Terminal

Process

Input oroutput

Decision

Subroutine

A

B

Ayes

no On-pageconnector

Off-page connector

Page 42: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

4212/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

Hợp dịch và chạy một chương trình hợp ngữ

Microcontroller AT89S52

EDITORPRAGRAM

ASSEMBLERPRAGRAM

LINKERPRAGRAM

OHPRAGRAM

myfile.asm

myfile.lstmyfile.obj

other obj file

myfile.abs

myfile.hex

Page 43: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

4312/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

Ví dụ 1: Viết chương trình tính 1+2+…+20. kết quả cất vào 45H

Microcontroller AT89S52

Start

i = 0sum = 0

i = i + 1

sum = sum + i

i = 20 ?

Stop

no

yes

Giải:

Mov A,#0

Mov R0,#0

Again:

INC R0

ADD A,R0

CJNE R0,#20,Again

Mov 45H,A

Page 44: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

4412/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

Ví dụ 2: Viết chương trình tìm ra số lớn nhất trong số 20 số(sô 8 bit) nằm ở đoạn 45h đến 58h. Kết quả cất vào ô nhớ 60h

Microcontroller AT89S52

Start

array max array [45]i 45

array max < array [i] ?

i = 58h?

Stop

i i + 1 array max array [i]yes

no

no

yes

Page 45: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

4512/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

GiảiN equ 20 ; array count

org 000Mov R3,45h ; R3=array[0]=array maxMov R0,#46h ; R0=46h

Loop_:Mov A,@R0 CJNE A,R3,Next ;

Next:JC chkend ; nhảy nếu A<R3Mov R3,A ;

chkend:CJNE R0,#57h,next1

Next1:Jnc exitInc R0; jmp loop_ ;

Exit: Mov 60h,R3 ; save the array maxend

Microcontroller AT89S52

Cần lưu ý lệnh CJNE; DES>SRC Cy=0, DES<SRC Cy=1

Page 46: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

4612/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

Ví dụ 3: Viết chương trình tính tổng các số lẻ 8bit nằm ở địa chỉ 45h đến 58h, sau đó lưu kết quả byte cao ở 61h và byte thấp ở 60h

Microcontroller AT89S52

Start

sum 0ptr 45

bit 0 of mem[ptr] = 0?

sum sum + [mem[ptr]]

no

ptr = 58h?ptr ptr + 1

Stop

no

yes

Page 47: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

4712/21/2012 kỹ thuật vi điều khiển

Chương 2: AT89S52 Assembly Programming

Giải:Org 100hMov R3,#0 ; byte thấp =0Mov R4,#0 ; byte cao = 0Mov R5,#45h ; Sum:Mov A,@R5JNB ACC.0,nextADD A,R3Mov R3,AMov A,R4ADDC A,#0Mov R4,ANext:CJNE R5,58h,exitINC R5Jmp sumExit:Mov 61h, R4Mov 60h, R3end

Microcontroller AT89S52

Page 48: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

4812/21/2012 kỹ thuật vi điều khiển

KỸ THUẬT VI ĐIỀU KHIỂN

Chương 3: Data Structures and

Subroutine Calls

(chương trình con)

Microcontroller AT89S52

Page 49: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

4912/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

Stack

Microcontroller AT89S52

SPlow address

high address

top element

bottom

.

.

.

Sp là thanh ghi 8bit. Truy cập các ô nhớ từ 08h-FFh

Nguyên tắc LIFO (Last In First Out)

Vào bằng lệnh PUSH => SP=SP+1

Ra bằng lệnh POP => SP=SP-1

Page 50: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

5012/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine CallsVí dụ 3.1 H·y biÓu diÔn ng¨n xÕp vµ con trá ng¨n xÕp ®èi víi ®o¹n ch¬ng tr×nh sau ®©y. Gi¶ thiÕt vïng ng¨n xÕp lµ mÆc ®Þnh.

MOV R6, #25H

MOV R1, #12H

MOV R4, #0F3H

PUSH 6

PUSH 1

PUSH 4

Microcontroller AT89S52

Sau PUSH 6 Sau PUSP 1 Sau PUSH 4

0B 0B 0B 0B

0A 0A 0A 0A F3

09 09 09 12 09 12

08 08 25 08 25 08 25

B¾t ®Çu SP = 07 SP = 08 SP = 09 SP = 0A

Page 51: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

5112/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

Ví dụ 3.2: Kh¶o s¸t ng¨n xÕp vµ h·y tr×nh bµy néi dung cña c¸c thanh ghi vµ SP sau khi thùc hiÖn ®o¹n ch¬ng tr×nh sau ®©y:

POP 3 ; LÊy ng¨n xÕp trë l¹i R3

POP 5 ; LÊy ng¨n xÕp trë l¹i R5

POP 2 ; LÊy ng¨n xÕp trë l¹i R2

Microcontroller AT89S52

Sau POP3 Sau POP 5 Sau POP 2

0B 54 0B 0B 0B

0A F9 0A F9 0A 0A

09 76 09 76 09 76 09

08 6C 08 6C 08 6C 08 6C

B¾t ®Çu SP = 0B SP = 0A SP = 09 SP = 08

Page 52: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

5212/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

Giới hạn trên của ngăn xếp:- Ngăn xếp giới hạn trong khoảng 08h-1FhVà từ 30H đến 7Fh- Từ 20H-2FH dùng dự phòng cho bộ nhớ

đánh địa chỉ được theo bit- Chuyển địa chỉ sang 30h – 7Fh bằng cách:

MOV SP, #XX

Microcontroller AT89S52

Page 53: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

5312/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

Phân bố không gian nhớ trong RAM

R0 -R

7

R0 -R

7

R0 -R

7

R0 -R

7

RAM ®¸nh ®Þa chØ theo bit

RAM bảng nhí (Seratch Pad)

Microcontroller AT89S52

00 07 08 0F 10 17 18 1F 20 2F 30 7F

Băng 0 luôn được chọn ngầm đinh

RS1 (PSW.4) RS0 (PSW.3)

Băng0 0 0

Băng1 0 1

Băng2 1 0

Băng3 1 1

Page 54: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

5412/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

Xung đột ngăn xếp và băng thanh ghi 1Xảy ra khi chương trình muốn sử dụng các băng thanh ghi số 1 lúc đó cả băng thanh ghi và ngăn xếp đều sử dụng chung một không gian nhớ RAMLúc đó ta phải thay địa chỉ sử dụng của RAM bằng cách “MOV SP,#xx”

Microcontroller AT89S52

Page 55: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

5512/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

Subroutine- Là đoạn chương trình khi cần có thể gọi từ

chương trình đang thực hiện.- Cấu trúc khai báo:

namesub_:;Cất trạng thái chương trình ; Nội dung chương trình

; Trả lại trạng thái chương trìnhret

Microcontroller AT89S52

Page 56: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

5612/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

Các lệnh gọi SubroutineCALL <namesub_>ACALL <namesub_>LCALL <namesub_>

Call là lệnh gọi xaACall gọi tuyệt đối 2 byteLCall gọi 3 byte

Microcontroller AT89S52

Page 57: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

5712/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

Vai trò của ngăn xếp trong lệnh Call

Microcontroller AT89S52

incoming parameters

return address

saved registers

local variables

SP

Với lệnh RET thao tac giống lệnh POP đối với các đối tượng trên

Page 58: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

5812/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

Ví dụ 3.3 Phân tích đoạn chương trình sau

ORG 0MOV A, #55H ; N¹p Avíi gi¸ trÞ 55H

BACK:MOV P1, A ; XuÊt gi¸ trÞ trong A ra cæng P1ACALL DELAY ; Gi÷ chËmCPL A ; Bï thµnh ghi ASJMP BACK ; TiÕp tôc thùc hiÖn v« h¹n

; -------- §©y lµ ch¬ng tr×nh con gi÷ chËm DELAYDELAY:

MOV R5, #0FFH ; N¹p R5 = 255 (hay FFH) lµm cho bé ®ÕmAGAIN: DJNZ R5, AGAIN ; Dõng ë ®©y cho ®Õn khi R5 = 0

RET ; Trë vÒEND ; KÕt thóc

Microcontroller AT89S52

Page 59: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

5912/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

Cấu trúc sử dụng lệnh gọi call; MAIN program calling subroutines

ORG 0MAIN: LCALL SUBR-1

LCALL SUBR-2LCALL SUBR-3

HERE: SJMP MAIN;----------------- end of MAIN;SUBR-1l ...

...RET

; ----------------- end of subroutinel 1; SUBR-1l ...

...RET

; ----------------- end of subroutinel 2; SUBR-1l ...

...RET

; ----------------- end of subroutinel 3END ; end of the asm file

Microcontroller AT89S52

Page 60: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

6012/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

Ví dụ 3.4 H·y ph©n tÝch néi dung cña ng¨n xÕp sau khi thùc hiÖn lÖnh LCALL ®Çu tiªn díi ®©y.001 0000 ORG002 0000 7455 BACK: MOV A, #55H ; N¹p A víi gi¸ trÞ 55H003 0002 F590 MOV P1, A ; Göi 55H tíi cæng P1004 0004 120300 LCALL DELAY ; T¹o trÔ thêi gian005 0007 74AA MOV A, #0AAH ; N¹p A víi gi¸ trÞ AAH006 0009 F590 MOV P1, A ; Göi AAH tíi cæng P1007 000B 120300 LCALL DELAY ; T¹o trÔ thêi gian008 000E 80F0 SJMP BACK ; TiÕp tôc thùc hiÖn009 0010010 0010 ; ..................... §©y lµ ch¬ng tr×nh con gi÷ chËm011 0300 MOV 300H012 0300 DELAY:013 0300 7DFF MOV R5, #FFH ; N¹p R5 = 255014 0302 DDFE AGAIN:DJNZ R5, AGAIN ; Dõng ë ®©y015 0304 22 RET ; Trë vÒ nguån gäi016 0305 END ; KÕt thóc n¹p tin hîp ng÷

Microcontroller AT89S52

Page 61: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

6112/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

Tạo và tính toán thời gian giữ chậmChu kỳ máy

Fmáy=Fthachanh/12Tmáy=1/Fmáy

Fthachjanh=4MHz-30MHzMột lệnh được thực hiện từ 1-4 chu kỳ máyMột chương trình giữ chậm gồm 2 phần : (1) thiết lập bộ đếm và (2) một vòng lặpThời gian trễ chủ yếu ở vòng lặp

Microcontroller AT89S52

Page 62: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

6212/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

Ví dụ 3.5: H·y t×m kÝch thíc cña thêi gian gi÷ chËm trong ch¬ng tr×nh sau, nÕu tÇn sè giao ®éng thach anh lµ 11.0592MHz.

MOV A, #55HAGAIN: MOV P1, A

ACALL DELAYCPL ASJMP AGAIN

; -------- Time delayDELAY: MOV R3, #200HERE : DJNZ R3, HERE

RET

Microcontroller AT89S52

Page 63: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

6312/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

GiảiDELAY: MOV R3, #200 1

HERE : DJNZ R3, HERE 2RET 1

Do vËy tæng thêi gian gi÷ chËm lµ [(200 2) + 1 + 1] 1.085 = 436.17s.

Th«ng thêng ta tÝnh thêi gian gi÷ chËm dùa trªn c¸c lÖnh bªn trong vßng lÆp vµ bá qua c¸c chu kú ®ång hå liªn quan víi c¸c lÖnh ë ngoµi vßng lÆp.

Trong vÝ dô 3.5 gi¸ trÞ lín nhÊt mµ R3 cã thÓ chøa lµ 255, do vËy mét c¸ch t¨ng ®é trÔ lµ sö dông lÖnh NOP (kh«ng lµm g×) trong vßng lÆp ®Ó tiªu tèn thêi gian mét c¸ch ®¬n gi¶n.

Microcontroller AT89S52

Page 64: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

6412/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine Calls

Ví dụ 3.6:H·y t×m ®é trÔ thêi gian cho ch¬ng tr×nh con sau. Gi¶ thiÕt tÇn sè dao ®éng th¹ch anh lµ 11.0592MHz.

Sè chu kú m¸yDELAY: MOV R3, #250 1HERE : NOP 1

NOP 1NOP 1NOP 1DJNZ R3, HERE 2RET 1

Lêi gi¶i:Thêi gian trÔ bªn trong vßng lÆp HERE lµ [250 (1 + 1 + 1 + 1 + 1 + 2)]

1.0851s = 1627.5s. Céng thªm hai lÖnh ngoµi vßng lÆp ta cã 1627.5s + 1.085s x2= 1629.67s.

Microcontroller AT89S52

Page 65: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

6512/21/2012 kỹ thuật vi điều khiển

Chương 3: Data Structures and Subroutine CallsVí dụ 3.7: §èi víi mét chu kú m¸y 1.085s h·y tÝnh thêi gian gi÷ chËm trong ch¬ng tr×nh con sau:

DELAY: chu kú m¸yMOV R2, #200 1

AGAIN: MOV R3, #250 1HERE: NOP 1

NOP 1DJNZ R3, HERE 2DJNZ R2, AGAIN 2RET 1

Lêi gi¶i:§èi víi vßng lÆp HERE ta cã (4 250) 1.085s = 1085s.Vßng lÆp AGAIN lÆp vßng lÆp HERE 200 lÇn, do vËy thêi gian trÔ lµ 200

1085s 217000s, nªn ta kh«ng tÝnh tæng phÝ. Tuy nhiªn, c¸c lÖnh “MOVR3, #250” vµ “DJNZ R2, AGAIN” ë ®Çu vµ cuèi vßng lÆp AGAIN céng (3

200 1.085s) = 651s vµo thêi gian trÔ vµ kÕt qu¶ ta cã 217000 + 651 = 217651s = 217.651 miligi©y cho tæng thêi gian trÔ liªn quan ®Õn ch¬ng tr×nh con gi÷ chËm DELAY nãi trªn.

Microcontroller AT89S52

Page 66: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

6612/21/2012 kỹ thuật vi điều khiển

KỸ THUẬT VI ĐIỀU KHIỂN

Chương 4: Operation Modes and Memory

Expansion(Làm việc với bộ nhớ ngoài)

Page 67: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

6712/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory Expansion

Bộ nhớ bán dẫn:RAM

SRAMDRAM

ROMROMPROMEPROMEEPROMFLASH

Microcontroller AT89S52

Page 68: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

6812/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory Expansion

Cấu trúc của bộ nhớ bán dẫn.

Microcontroller AT89S52

A0

A1

A2

.

.

.

AN-1

O0

O1

O2

.

.

.

Om-1

Các đường tín hiệu địa

chỉ

Các đường tín hiệu dữ

liệu

CS OE

WE

Dung lượng IC nhớ là : 2nxm bit

Page 69: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

6912/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory Expansion

Một số bộ nhớ EPROM thông dụng

Microcontroller AT89S52

A0-A10: Tín hiệu địa chỉOE: Cho phép đưa dữ liệu raCS/PGM: Chọn vỏ, điều khiển ghiD0-D7: Dữ liệu đầu raVpp: Điện áp ghi

EPROM 2716

Page 70: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

7012/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory ExpansionMicrocontroller AT89S52

STT Tên IC Chi tiết1 2704 512x82 2808 1Kx83 2716 2Kx84 2732 4Kx85 2764 8Kx86 27128 16Kx87 27256 32Kx88 27512 64Kx89 271024 128Kx8

Một số EPROM họ 27xxx

Page 71: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

7112/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory Expansion

Ví dụ 4.1 Cần sử dụng bao nhiêu IC để xây dựng bộ nhớ EPROM 512KB cho bộ VĐK có 16 chân địa chỉ 16 chân dữ liệu.

a. 1K × 2 Epromb. 4K × 4 Epromc. 8K × 8 Epromd. 16K × 8 Eprom

Trả lời:cần 512KB=512Kx8=256Kx16a. Số IC=(256/1) x (16/2)= 2048b. Số IC=(256/4) x (16/4)= 256c. Số IC=(256/8) x (16/8)= 64d. Số IC=(256/16) x (16/8)= 32

Microcontroller AT89S52

Page 72: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

7212/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory ExpansionMicrocontroller AT89S52

Sơ đồ chânCó 16 chân địa chỉ

A0-A15Có 8 chân dữ liệu

D0-D7Chân điều khiển ghi

WRChân điều khiển đọc

RDChân chon chế độ

ALE/PROG

Page 73: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

7312/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory Expansion

Khả năng mở rộng bộ nhớ ROM của 89S52MemoryMax= 216x8=64KBKhông gian nhớ này được chia thành các block. Mỗi block là 8KBSố Block=64/8=8 block

Microcontroller AT89S52

Block.no Address range Block.no Address range

0123

0000h-1FFFh2000h-3FFFh4000h-5FFFh6000h-7FFFh

4567

8000h-9FFFhA000h-BFFFhC000h-DFFFhE000h-FFFFh

Page 74: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

7412/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory Expansion

TTL Decoder Chips

- 74138: a 3-to-8 decoder- 74139: dual 2-to-4 decoder

Microcontroller AT89S52

E1E2

E3

A2

A1A0

O0O1O2O3O4O5O6O7

74138

1Y01Y11Y21Y32Y02Y12Y22Y3

E1A1A0

E2B1B0

74139

Page 75: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

7512/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory Expansion

Ví dụ 4.2 Xây dựng mạch giải mã để chọn các bộ nhớ sau:SRAM1: 2000-3FFFROM1: 4000-5FFFE2PROM: 6000-7FFFSRAM2: A000-BFFFROM2: C000-DFFF

Giải:

Microcontroller AT89S52

The highest three address bitsfor each component are:

SRAM1: 001ROM1: 010E2PROM: 011SRAM2: 101ROM2: 110

The decoder circuit is:

E1E2

E3

A2A1A0

O0O1O2O3O4O5O6O7

SRAM1_CSROM1_CSE2PROM_CS

SRAM2_CSROM2_CS

E

A15A14A13

Page 76: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

7612/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory Expansion

Giản đồ thời gian ghi đọc

Microcontroller AT89S52

Page 77: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

7712/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory Expansion

Giản đồ thời gian ghi đọc

Microcontroller AT89S52

Page 78: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

7812/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory Expansion

Giản đồ thời gian ghi đọc

Microcontroller AT89S52

Page 79: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

7912/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory Expansion

Giản đồ thời gian ghi đọc

Microcontroller AT89S52

Page 80: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

8012/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory Expansion

Bộ nhơ RAM HM6264A

Microcontroller AT89S52

NCA12

A7A6A5A4A3A2A1A0

I/O1I/O2I/O3VSS

VCC

WECS2A8A9A11OEA10CS1I/O8I/O7I/O6I/O5I/O4

123456789

1011121314

2827262524232221201918171615

Page 81: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

8112/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory ExpansionMicrocontroller AT89S52

The HM6264A Timing Diagrams

There are four access times:

- Address access time (tAA)- CS1 access time (tCO1)- CS2 access time (tCO2)- OE access time (tOE)

tRC

tAA

tCO1

tCO2

tOE

tOHZ

tHZ1

tHZ2

Address

CS1

CS2

OE

Data

Figure HM6264A Read Cycle Timing Diagram

tOH

tLZ2

tLZ1

tOLZ

Page 82: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

8212/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory ExpansionMicrocontroller AT89S52

tWC

tAW

tCW

tCW

tWP

tDH

tWR

tHZ2

Address

CS1

CS2

WE

Din

Figure HM6264A Write Cycle Timing Diagram

tOW

tAS

- Write data must be valid for tDW before WE goes highand remain valid for at least tDH after WE goes high

- the pulse width of WE must be at least tWP

tDW

Page 83: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

8312/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory Expansion

Ví dụ 4.3 Xây dựng bộ nhớ EPROM 32KB cho bộ vi điều khiển AT89S52 sử dụng IC 2732 và mạch giải mã 74138. cho đoạn địa chỉ bắt đầu từ 4000h.Giải:IC2732= 4kx8 => số IC sử dụng = (32/4)x(8/8)= 8 IC xếp thành (32/4) hàng và (8/8) cộtĐịa chỉ các hàng:Hàng 1: 100 Hàng 5: 000Hàng 2: 101 Hàng 6: 001Hàng 3: 110 Hàng 7: 010Hàng 4: 111 Hàng 8: 011

Như vậy cần dùng 2 con 74138

Microcontroller AT89S52

Page 84: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

8412/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory ExpansionMicrocontroller AT89S52

2732

2732

2732

O2O1

O3

O4O5O6O7

O0

E1E2

E1E2

E3

E3

LE

D7-D0

O7-O0

OE74F373

A11-A0

D0-D7

A12

A13A14

A0A1

A2

A1A0

A2

A15

ALE

AD0-AD7

A8-A11

WRWD

AT89S52

74138

74138

PSEN

Page 85: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

8512/21/2012 kỹ thuật vi điều khiển

Chương 4: Operation Modes and Memory Expansion

Một số lệnh làm việc với bộ nhớ ngoàiMOVX A,@RiMOVX A,@dptrMOVX @Ri,AMOVX @dptr,A

Microcontroller AT89S52

Page 86: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

8612/21/2012 kỹ thuật vi điều khiển

KỸ THUẬT VI ĐIỀU KHIỂN

Chương 5:Interrupts and Resets

(ngắt và reset)

Page 87: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

8712/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and ResetsBasics of Interrupts

What is an interrupt?Ng¾t(interrupt) lµ sù x¶y a cña 1 sù kiÖn, 1®iÒu kiÖn nµo ®ã lµm cho

ch¬ng tr×nh hiÖn hµnh bÞ t¹m ngng ®ª thùc thi 1 nhiÖm vô kh¸c.C¸c ng¾t ®ãng vai trß rÊt quang träng trong viÖc thiÕt kÕ vµ thùc hiÖn c¸c øng dông cña bé vi ®iÒu khiÓn. Nã cho phÐp hÖ thèng ®¸p øng 1 sù kiÖn theo c¸ch kh«ng ®ång bé vµ xö lý sù kiÖn trong khi 1 ch¬ng tr×nh kh¸c ®ang ®îc thùc thi.Functions of InterruptsHàm ngắt là hàm được CPU thực hiện khi sảy ra ngắt.Interrupt MaskabilityKhi sảy ra một ngắt mà CPU có thể bỏ qua gọi là ngắt che được. Bỏ mặt nạ ngắt.Một số ngắt CPU không thể bỏ qua được gọi là ngắt không che được.

Microcontroller AT89S52

Page 88: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

8812/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and ResetsCơ chế ngắt:

Microcontroller AT89S52

ISR: tr×nh phôc vô ng¾t(interrupt service rountine)

Page 89: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

8912/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and Resets

Khi ngắt sảy raNã kÕt thóc lÖnh ®ang thùc hiÖn vµ lu ®Þa chØ cña lÖnh kÕ tiÕp (PC) vµo ng¨n xÕp.Nã còng lu t×nh tr¹ng hiÖn t¹i cña tÊt c¶ c¸c ng¾t vµo bªn trong (nghÜa lµ kh«ng lu vµo ng¨n xÕp).Nã nh¶y ®Õn mét vÞ trÝ cè ®Þnh trong bé nhí ®îc gäi lµ b¶ng vÐc t¬ ng¾t níi lu gi÷ ®Þa chØ cña mét tr×nh phôc vô ng¾t.Bé vi ®iÒu khiÓn nhËn ®Þa chØ ISR tõ b¶ng vÐc t¬ ng¾t vµ nh¶y tíi ®ã. Nã b¾t ®Çu thùc hiÖn tr×nh phôc vô ng¾t cho ®Õn lÖnh cuèi cïng cña ISR lµ RETI (trë vÒ tõ ng¾t).Khi thùc hiÖn lÖnh RETI bé vi ®iÒu khiÓn quay trë vÒ n¬i nã ®· bÞ ng¾t. Tríc hÕt nã nhËn ®Þa chØ cña bé ®Õm ch¬ng tr×nh PC tõ ng¨n xÕp b»ng c¸ch kÐo hai byte trªn ®Ønh cña ng¨n xÕp vµo PC. Sau ®ã b¾t ®Çu thùc hiÖn c¸c lÖnh tõ ®Þa chØ ®ã.

Microcontroller AT89S52

Page 90: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

9012/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and ResetsMicrocontroller AT89S52

Thanh ghi cho phép và cấm ngắt:

Page 91: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

9112/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and Resets

Ví dụ 5.1 H·y chØ ra nh÷ng lÖnh ®Ó a) cho phÐp ng¾t nèi tiÕp ng¾t Timer0 vµ ng¾t phÇn cøng ngoµi 1 (EX1) vµb) cÊm (che) ng¾t Timer0 sau ®ãc) tr×nh bµy c¸ch cÊm tÊt c¶ mäi ng¾t chØ b»ng mét lÖnh duy nhÊt.

Lêi gi¶i:a) MOV IE, #10010110B ; Cho phÐp ng¾t nèi tiÕp, cho phÐp ng¾t Timer0 vµ cho phÐp ng¾t phÇn cøng ngoµi.V× IE lµ thanh ghi cã thÓ ®¸nh ®Þa chØ theo bÝt nªn ta cã thÓ sö dông c¸c lÖnh sau ®©y ®Ó truy cËp ®Õn c¸c bÝt riªng rÏ cña thanh ghi:

SETB IE.7 ; EA = 1, Cho phÐp tÊt c¶ mäi ng¾tSETB IE.4 ; Cho phÐp ng¾t nèi tiÕpSETB IE.1 ; Cho phÐp ng¾t Timer1SETB IE.2 ; Cho phÐp ng¾t phÇn cøng ngoµi 1

(tÊt c¶ nh÷ng lÖnh nµy t¬ng ®¬ng víi lÖnh “MOV IE, #10010110B” trªn ®©y).b) CLR IE.1 ; Xo¸ (che) ng¾t Timer0c) CLR IE.7 ; CÊm tÊt c¶ mäi ng¾t.

Microcontroller AT89S52

Page 92: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

9212/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and ResetsSử lý ưu tiên ngắt: Khi sảy ra nhiều ngắt đồng thời

Microcontroller AT89S52

Møc u tiªn cao xuèng thÊp

Ng¾t ngoµi 0 INT0

Ng¾t bé ®Þnh thêi 0 TF0

Ng¾t ngoµi 1 INT1

Ng¾t bé ®Þnh thêi 1 TF1

Ng¾t truyÒn th«ng nèi tiÕp (RI + TI)

Page 93: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

9312/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and Resets

Interrupts TimerLập trình bộ timer sử dụng ngắt sẽ được trình bày cụ thể trong chương 7

Microcontroller AT89S52

Page 94: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

9412/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and Resets

Lập trình các ngắt phần cứng bên ngoài

Microcontroller AT89S52

IE0(TCON.1)

INTO

(Pin 3.2)

Level -tringgered

Edge - triggered

0003 ITO 0

1

IE0(TCON.3)

INT1(Pin 3.3)

Level -tringgered

Edge - triggered

0013 IT1 0

1

Page 95: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

9512/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and Resets

Có hai kiêu ngắt tại các chân INTRx

Việc cho phép và cấm ngắt thông qua thanh ghi IE

1. Ngắt theo mứcCác chân thông thường ở mức cao, khi nó được cấp một tín hiệu mức thấp thì nó sẽ sảy ra ngắt

Microcontroller AT89S52

Page 96: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

9612/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and Resets

Ví dụ 5.2:Gi¶ sö ch©n INT1 ®îc nèi ®Õn c«ng t¾c b×nh thêng ë møc cao. Mçi khi nã xuèng thÊp ph¶i bËt mét ®Ìn LED. §Ìn LED ®îc nèi ®Õn ch©n P1.3 vµ b×nh thêng ë chÕ ®é t¾t. Khi nã ®îc bËt lªn nã ph¶i s¸ng vµi phÇn tr¨m gi©y. Chõng nµo c«ng t¾c ®îc Ên xuèng thÊp ®Ìn LED ph¶i s¸ng liªn tôc.

Microcontroller AT89S52

INTI

8051

P1.3to

LED

Vcc

Page 97: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

9712/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and ResetsLời giải:

ORG 0000HLJMP MAIN ; Nh¶y ®Õn b¶ng vÐc t¬ ng¾t

; - - Ch¬ng tr×nh con ISR cho ng¾t cøng INT1 ®Ó bËt ®Ìn LED.ORG 0013H ; Tr×nh phôc vô ng¾t ISR cho INT1SETB P1.3 ; BËt ®Ìn LEDMOV R3, # 255 ;

BACK: DJNZ R3, BACK ; Gi÷ ®Ìn LED s¸ng mét lócCLR P1.3 ; T¾t ®Ìn LEDRETI ; Trë vÒ tõ ISR

; - - B¾t ®Çu ch¬ng tr×nh chÝnh Main.ORG 30H

MAIN: MOV IE, #10000100B ; Cho phÐp ng¾t dµiSJMP HERE ; Chê ë ®©y cho ®Õn khi ®îc ng¾t

END

Microcontroller AT89S52

Page 98: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

9812/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and Resets

Trích mẫu theo mức:

Microcontroller AT89S52

1 chu tr×nh m¸y

1.085s4 chu tr×nh m¸y (4MC)

4 1.085s

®Õn ch©n INT0 hoÆc INT1

Ghi chó: Khi bËt l¹i nguån (RESET) th× c¶ hai ch©n INT0 vµ INT1 ®Òu ë møc thÊp t¹o c¸c ng¾t ngoµi theo møc.

Page 99: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

9912/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and Resets

2. Ngắt theo sườn xuốngThanh ghi TCON. Các bit D0(IT0 hay TCON.0) và D2(IT1 hay TCON.2) để điều khiển ngắt INTRx theo mức hay theo sườn

Microcontroller AT89S52

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

D0D7

Quy định ngắt theo sườn dùng lệnh

SETB TCON.0 hay

SETB TCON.2

Page 100: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

10012/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and Resets

Ví dụ 5.3: Gi¶ thiÕt ch©n P3.3 (INT1) ®îc nèi víi mét m¸y t¹o xung, h·y viÕt mét ch¬ng tr×nh trong ®ã sên xuèng cña xung sÏ göi mét tÝn hiÖu cao ®Õn ch©n P1.3 ®ang ®îc nèi tíi ®Ìn LED (hoÆc mét cßi b¸o). Hay nãi c¸ch kh¸c, ®Ìn LED ®îc bËt vµ t¾t cïng tÇn sè víi c¸c xung ®îc cÊp tíi ch©n INT1. §©y lµ phiªn b¶n ng¾t theo sên xung cña vÝ dô 5.2 ®· tr×nh bµy ë trªn.

Microcontroller AT89S52

Page 101: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

10112/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and ResetsLêi gi¶i:

ORG 0000HLJMP MAIN

; - - Tr×nh phôc vô ng¾t ISR dµnh cho ng¾t INT1 ®Ó bËt ®Ìn LEDORG 0013H ; Nh¶y ®Õn ®Þa chØ cña tr×nh phôc vô ng¾t INT1SETB P1.3 ; BËt ®Ìn LED (hoÆc cßi)MOV R3, #225

BACK: DJNZ R3, BACK ; gi÷ ®Ìn LED (hoÆc cßi) mét lócCLR P1.3 ; T¾t ®Ìn LED (hoÆc cßi)RETI ; Quay trë vÒ tõ ng¾t

; - - B¾t ®Çu ch¬ng tr×nh chÝnhORG 30H

MAIN:SETB TCON.2 ; ChuyÓn ng¾t INT1 vÒ kiÓu ng¾t theo sên xung

MOV IE, #1000100B ; Cho phÐp ng¾t ngoµi INT1HERE: SJMP HERE ; Dõng ë ®©y cho ®Õn khi bÞ ng¾t

END

Microcontroller AT89S52

Page 102: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

10212/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and Resets

Trích mẫu theo sườn

Microcontroller AT89S52

1.085s

1.085s

1MC

1MC

Page 103: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

10312/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and Resets

Lập trình ngắt truyền thông nối tiếp

Phần này sẽ được trình bày cụ thể trong chương 8

Microcontroller AT89S52

Page 104: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

10412/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and ResetsMicrocontroller AT89S52

BẢNG VECTOR NGẮT

Page 105: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

10512/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and Resets

RESET

Là một nguồn ngắt ngoài tại chân 9Có chức năng đặt lại giá trị các thanh ghi

Microcontroller AT89S52

Register Reset Value

PC 0000

ACC 0000

B 0000

PSW 0000

SP 0000

DPTR 0007

0000

Page 106: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

10612/21/2012 kỹ thuật vi điều khiển

Chương 5: Interrupts and Resets

Hai cách tạo mạch RESET

Microcontroller AT89S52

Vcc Vcc

10F

8.2K

RST

30pF

X2

31

EA/Vpp

19

9

18

+30pF

31

9

EA/VppX1 X1

X2

RST

8.2K

10F

11.0592 MHz

Page 107: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

10712/21/2012 kỹ thuật vi điều khiển

KỸ THUẬT VI ĐIỀU KHIỂN

Chương 6: Parallel I/O Ports

Page 108: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

10812/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O Ports

Các giao tiếp cơ bản

Microcontroller AT89S52

Address bus Addressdecoder

R/W CE

SRAM

CE

ROM

CE

InterfaceChip 1

InterfaceChip 2

CE

From inputdevice

To outputdevice

MicroprocessorData Bus

Page 109: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

10912/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O Ports

Sơ đồ chân

Microcontroller AT89S52

Page 110: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

11012/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O PortsCó 4 port P0, P1, P2 và P3Mỗi Port là một cổng 8bitP0: P0.0 – P0.7P1: P1.0 – P1.7P2: P2.0 – P2.7P3: P3.0 – P3.7Khi Reset các port này đều được định nghĩa là các cổng ra, muốn nó làm cổng vào ta phải lập trình.Muốn đọc/ghi tới 8bit/cổng dùng dạng PxMuốn đọc/ghi tới từng bit ta dùng dạng Px.yX=0-3; y=0-7

Microcontroller AT89S52

Page 111: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

11112/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O Ports

PORT P0 từ chân 32 – 39Được dùng làm đầu vào hoặc ra dữ liệuMuốn cấu hình nó là cổng vào ta dùng lệnh: MOV P0,#0FFHCác chân của cổng P0 thường được nối với điện trở kéo:

Microcontroller AT89S52

Vcc10K

P0.0P0.1P0.2

P0.3P0.4P0.5P0.6P0.7

DS500087518951

Port 0

Page 112: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

11212/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O Ports

P0 được gán cho chức năng AD0-AD7Chân EA (chân 31) nối với GND để xác định VĐK làm việc với ROM ngoàiChân ALE (chân 30) phân định chức năng của P0 là A0-A7 (ALE=1) và D0-D7 (ALE=1)Việc phân định này nhờ mạch chốt 74LS373 (xem thêm chương 4)

Microcontroller AT89S52

Page 113: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

11312/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O Ports

PORT P1 từ chân 1-8Không cần điện trở kéoCấu hình làm cổng vào : Mov P1,#0FFhP1.0 ngõ vào của timer/counter thứ 2P1.1 ngõ nạp lại/thu nhận của timer/counter thứ 2

Microcontroller AT89S52

Page 114: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

11412/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O Ports

PORT P2 từ chân 21 – 28Có 2 chức năngChức năng suất nhập như các cổng khác (ALE=0)Chức năng địa chỉ cao A8-A15 (ALE=1)

Microcontroller AT89S52

Page 115: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

11512/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O PortsPORT P3 từ chân 10-17Chức năng xuất nhập như các cổng khácCác chức năng khác

Microcontroller AT89S52

BÝt cña cèng P3 Chøc năng ch©n sè

P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7

NhËn dữ liệu(RXD)

Ph¸t dữ liÖu (TXD)Ng¾t 0(INT0)Ng¾t 1(INT1)Bé ®Þnh thêi 0 (TO)1 Bé ®Þnh thêi 1(T1)Ghi (WR)Đäc (RD)

1011121314151617

Page 116: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

11612/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O PortsVí dụ 6.1 cÊu hinh P2 lµ cæng vµo b»ng c¸ch ghi mét ®Õn tÊt c¶ c¸c ch©n cña nã vµ sau ®ã d÷ liÖu nhËn ®îc tõ P2 ®îc göi liªn tôc ®Õn P1.

MOV A, 0FFH ; G¸n A gi¸ trÞ FF d¹ng Hex

MOV P2, A T¹o P2 lµ cæng ®Çu vµo b»ng c¸ch

; ghi mét ®Õn c¸c ch©n cña nã

BACK: MOV A, 2 ; NhËn d÷ liÖu tõ P2

MOV P1, A ; Göi nã ®Õn P1

SJMP BACK ; LÆp l¹i

Microcontroller AT89S52

Page 117: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

11712/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O Ports

Một số giao tiếp cơ bản

Microcontroller AT89S52

5 V

74LS138 B

C

X7

X6

X5

X4X3

X2

X1

X0

inhibit

MC14051

P1.7

P1.5

P1.4

P1.3

P1.2

P1.1

89S52

10KW each

X

CBA

P1.0

Page 118: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

11812/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O Ports

Giao tiếp với 16 phím

Microcontroller AT89S52

Page 119: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

11912/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O PortsĐiều khiển led đơn và led 7 đoạn

Microcontroller AT89S52

330W

5V

74HC04

b

c

a

def g

common cathode

common anode

a b c d e f g

a b c d e f g

(a) seven-segment digit

(b) common-cathode seven-segment display

(c) common-anode seven-segment display

Page 120: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

12012/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O PortsVí dụ 6.2

Microcontroller AT89S52

AT89S52

74A

LS24

4

b

c

a

de

f g

abcdefg

100Weach

P2.0P2.1P2.2P2.3P2.4P2.5P2.6

BCDdigit

segmentsg f e d c b a

correspondinghex number

0 0 1 1 1 1 1 1 $3F1 0 0 0 0 1 1 0 $062 1 0 1 1 0 1 1 $5B3 1 0 0 1 1 1 1 $4F4 1 1 0 0 1 1 0 $665 1 1 0 1 1 0 1 $6D6 1 1 1 1 1 0 1 $7D7 0 0 0 0 1 1 1 $078 1 1 1 1 1 1 1 $7F9 1 1 0 1 1 1 1 $6F

Table BCD to seven-segment decoder

Dùng LED cathode chung

Page 121: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

12112/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O PortsGhép với nhiều led 7 đoạn

Microcontroller AT89S52

74ALS244

AT89S52

P3.5

P3.4

P3.0

100W

a

b

g

.

.

a

b...g

a

b

.

.

. g

.

.

.

2N2222

2N2222

2N2222

commoncathode

commoncathode

commoncathode

1KW

1KW

1KW

P2.0 P2.1 P2.6

Imax

= 9

1 m

A

100W

Page 122: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

12212/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O PortsVí dụ 6.3 VD: Hieån thò ‘123’ leân LED 7 ñoaïn.

Microcontroller AT89S52

Page 123: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

12312/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O Ports; a,b,c,d,e,f,g -> Port 2 ; P3.0 -> LED1 ; P3.1 -> LED2 ; P3.1 -> LED3

ORG 0H MOV P3,#0FFh ; t¾t tÊt c¶ c¸c led

BEGIN: MOV P2,#0B0h ; XuÊt ra P2 m· cña sè 3CLR P3.0 ; BËt LED1 ACALL DELAY ; delay SETB P3.0 ; tắt LED1

Microcontroller AT89S52

Page 124: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

12412/21/2012 kỹ thuật vi điều khiển

Chương 6: Parallel I/O PortsMOV P2,#0A4h ; XuÊt ra P2 m· cña sè 2CLR P3.1 ; bËt LED2

ACALL DELAY ; delay SETB P3.1 ; T¾t LED2

MOV P2,#0F9h ; XuÊt ra P2 m· cña sè 1CLR P3.2 ; bËt LED3 ACALL DELAY ; delay SETB P3.2 ; t¾t LED3 SJMP BEGIN

DELAY: MOV R1,#10 MOV R0,#0FFh

LOOP: DJNZ R0,LOOP DJNZ R1,LOOP RET END

Microcontroller AT89S52

Page 125: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

12512/21/2012 kỹ thuật vi điều khiển

KỸ THUẬT VI ĐIỀU KHIỂN

Chương 7: Timer/Counter Functions

Page 126: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

12612/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter Functions

Tổng quan :Sơ đồ khối Timer/Counter trong các hệ VĐK

Microcontroller AT89S52

Page 127: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

12712/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter Functions7.1 LẬP TRÌNH TIMER

Lập trình bằng phương pháp thăm dòLập trình bằng ngắt

Microcontroller AT89S52

Page 128: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

12812/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsCác thanh ghi cơ sở của bộ định thờiThanh ghi bộ Tmer THx TLx

Thanh ghi TMOD của Timer0 và Timer1

Microcontroller AT89S52

D15 D14 D13 D12 D11 D10 D9 D8

THx

D7 D6 D5 D4 D3 D2 D1 D0

TLx

(MSB)

GATE C/T M1 M0

Timer1

GATE C/T M1 M0

Timer0

(MSB)

Page 129: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

12912/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsMicrocontroller AT89S52

M1 M0 ChÕ ®é ChÕ ®é ho¹t ®éng

0 0 0 Bé ®Þnh thêi 13 bÝt gåm 8 bÝt lµ bé ®Þnh thêi/ bé ®Õm 5 bÝt ®Æt tr-íc

0 1 1 Bé ®Þnh thêi 16 bÝt (kh«ng cã ®Æt tríc)

1 0 2 Bé ®Þnh thêi 8 bÝt tù n¹p l¹i

1 1 3 ChÕ ®é bé ®Þnh thêi chia t¸ch

Trong c¸c chÕ ®é trªn th× chÕ ®é 1 vµ 2 lµ ®îc ding réng r·i nhÊt. + Bit C/T ®Ó quy ®Þnh nguån xung cho TimerC/T=0 : Dïng nh bé ®Þnh thêiC/T=1 : Dïng nh bé ®ÕmNguån xung ®ång hå cho bé ®Þnh thêi:

Bé giao ®éng th¹ch anh

12 TÇn sè ®ång hå cña bé ®Þnh thêi

Page 130: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

13012/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsBit Gate quy ®Þnh dõng vµ khëi ®éng bé Timer b»ng phÇn cøng hay phÇn mÒm.

GATE = 0 Khëi ®éng vµ dõng timer b»ng phÇn mÒm

GATE = 1 Khëi ®éng vµ dõng timer b»ng phÇn cøng tõ ngoµi

Thanh ghi TCON của Timer0 và Timer1

Microcontroller AT89S52

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

D0D7

Thanh ghi TCON ®îc ®¸nh ®Þa chØ theo bit. 4 bit cao dïng cho ®iÒu khiÓn Timer/Counter cßn 4 bit thÊp dïng cho ®iÒu khiÓn ng¾t.

Page 131: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

13112/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsThanh ghi T2MOD vaø T2CON cuûa Timer T2

Microcontroller AT89S52

- - - - - - T2OE DCEN

D0D7

C/ CP/TF2 EXF2 RCLK TCLK EXEN2 TR2

7 6 5 4 3 2 1 0

T2OE lµ bit cho phÐp Timer 2 tõ bªn ngoµi.DCEN CÊu h×nh lµ Counter hay Timer (T=0; C=1).

-TF2: Gièng TF0 vµ TF1, nhng kh«ng ®îc set khi RCLK=1 hoÆc TCLK=1-EXF2: Cê bé Timer2 ®îc bËt trong chÕ ®é Capture hoÆc Reload bëi chuyÓn m¹ch trªn T2EX vµ EXEN2 = 1. EXF2 ®îc xãa b»ng phÇn mÒm.-RCLK : =1 Cê timer 2 lµm xung nèi tíi ch©n Rx(P3.0)

=0 Cê timer 1 lµm xung nèi tíi ch©n Rx(P3.0)-TCLK : =1 Cê timer 2 lµm xung nèi tíi ch©n Tx(P3.1)

=0 Cê timer 1 lµm xung nèi tíi ch©n Tx(P3.0)-TR2: Gièng TR0 vµ TR1 cña Timer 0 vµ Timer 1.-C/ CÊu h×nh lµ bé ®Õm thêi gian (0) hoÆc ®Õm sù kiÖn (1).-CP/ Lùa chän chÕ ®é Capture/Reload

Page 132: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

13212/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsLaäp trình cho Timer cheá ñoä 1

Microcontroller AT89S52

XTAL oscillator

12 TH TL TF

TR

Page 133: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

13312/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsC¸c bíc lËp tr×nh ë chÕ ®é Mode 1.§Ó t¹o ra mét ®é trÔ thêi gian dïng chÕ ®é 1 cña bé ®Þnh thêi th×cÇn ph¶i thùc hiÖn c¸c bíc díi ®©y.N¹p gi¸ trÞ TMOD cho thanh ghi b¸o ®é ®Þnh thêi nµo (Timer0 hay Timer1) ®îc sö dông vµ chÕ ®é nµo ®îc chän.N¹p c¸c thanh ghi TL vµ TH víi c¸c gi¸a trÞ ®Õm ban ®Çu.Khëi ®éng bé ®Þnh thêi.Duy tr× hiÓn thÞ cê bé ®Þnh thêi TF b»ng lÖnh “JNB TFx, ®Ých” ®Ó xem nã ®îc bËt kh«ng. Tho¸t vßng lÆp khi TF ®îc lªn cao.Dõng bé ®Þnh thêi.Xo¸ cê TF cho vßng kÕ tiÕp.Quay trë l¹i bíc 2 ®Ó n¹p l¹i TL vµ TH.

Microcontroller AT89S52

Page 134: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

13412/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsVí duï 7.1 Taïo xung 50% treân chaân P1.5MOV TMOD, #01 ; Sö dông Timer0 vµ chÕ ®é 1(16 bÝt)HERE: MOV TL0, #0F2H ; TL0 = F2H, byte thÊp

MOV TH0, #0FFH ; TH0 = FFH, byte caoCPL P1.5 ; Sö dông ch©n P1.5ACALL DELAYSJMP HERE ; N¹p l¹i TH, TL

; delay using timer0.DELAY:

SETB TR0 ; Khëi ®éng bé ®Þnh thêi Timer0AGAIN: JNB TF0, AGAIN ; HiÓn thÞ cê bé ®Þnh thêi

cho ®Õn khi nã vît qua FFFFH.CLR TR0 ; Dõng bé TimerCLR TF0 ; Xo¸ cê bé ®Þnh thêi 0RET

Microcontroller AT89S52

FFF2

TF = 0

FFF3

TF = 0

FFF4

TF = 0

0000

TF = 1

FFFF

TF = 0

Page 135: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

13512/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsVí duï 7.2 Tính thôøi gian treã ñöôïc taïo ra trong chöông trình DELAY ôû ví duï 7.1 bieát XTLAL=11.0592MHzGiaûiBé ®Þnh thêi lµm viÖc víi tÇn sè ®ång hå b»ng 1/12 tÇn sè XTAL, do vËy ta cã lµ tÇn sè cña bé ®Þnh thêi. KÕt qu¶ lµ mçi nhÞp xung ®ång hå cã chu kú . Hay nãi c¸ch kh¸c, bé Timer0 ®Õm t¨ng sau 1,085s ®Ó t¹o ra bé trÔ b»ng sè ®Õm 1,085s.

Sè ®Õm b»ng FFFFH - FFF2H = ODH (13 theo sè thËp ph©n). Tuy nhiªn, ta ph¶i céng 1 vµo 13 v× cÇn thªm mét nhÞp ®ång hå ®Ó nã quay tõ FFFFH vÒ 0 vµ bËt cê TF. Do vËy, ta cã 14 1,085s = 15,19s cho nöa chu kú vµ c¶ chu kú lµ T = 2 15,19s = 30, 38s lµ thêi gian trÔ ®îc t¹o ra bëi bé ®Þnh thêi.

Microcontroller AT89S52

Page 136: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

13612/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsCaùch tính thôøi gian treã :

Tìm giaù trò ñaët ban ñaàu- Chia thêi gian trÔ cÇn thiÕt cho 1.0592s- Thùc hiÖn 65536 - n víi n lµ gi¸ trÞ thËp ph©n nhËn ®îc tõ bíc 1.- ChuyÓn ®æi kÕt qu¶ ë bíc 2 sang sè Hex víi yyxx lµ gi¸ trÞ .hex

ban ®Çu cÇn ph¶i n¹p vµo c¸c thanh ghi bé ®Þnh thêi.- §Æt TL = xx vµ TH = yy.

Microcontroller AT89S52

a) TÝnh theo sè Hex b) TÝnh theo sè thËp ph©n

(FFFF - YYXX + 1). 1,085s trong®ã YYXX lµ c¸c gi¸ trÞ khëi t¹ocña TH, TL t¬ng øng. Lu ý r»ngc¸c gi¸ trÞ YYXX lµ theo sè Hex.

ChuyÓn ®æi c¸c gi¸ trÞ YYXX cña TH, TL vÒ sèthËp ph©n ®Ó nhËn mét sè thËp ph©n NNNNNsau ®ã lÊy (65536 - NNNNN).1,085s.

Page 137: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

13712/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsVí duï 9.3 taïo ñoä treã lôùnH·y kiÓm tra ch¬ng tr×nh sau vµ t×m ®é trÔ thêi gian theo gi©y, kh«ng tÝnh ®Õn tæng phÝ c¸c lÖnh trong vßng lÆp.

MOV TMOD, #10H ; Chän bé Timer1, chÕ ®é 1 (16 bÝt)AGAIN: MOV R3, #200 ; Chän bé ®Õm ®é gi÷

chËm línMOV TL1, #08 ; N¹p byte thÊp TL1 = 08MOV TH1, #08 ; N¹p byte cao TH1 = 01SETB TR1 ; Khëi ®éng Timer1

BACK: JNB TF1, BACK ; gi÷ nguyªn cho ®Õn khi bé ®Þnh thêi quay vÒ 0

CLR TR1 ; Dõng bé ®Þnh thêi.CLR TF1 ; Xo¸ cê bé ®Þnh thêi TF1DJNZ R3, AGAIN ; NÕu R3 kh«ng b»ng

kh«ng th× n¹p l¹i bé ®Þnh thêi.

Microcontroller AT89S52

Yêu cầu Sinh Viên trả lời

Page 138: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

13812/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsLAÄP TRÌNH CHEÁ ÑOÄ 2

Microcontroller AT89S52

XTAL oscillator

12 TL TF

TF goes highwhen FFFF 0

reload

TR TF

Caùc böôùc laäp trình cho cheá ñoä 21. N¹p thanh ghi gi¸ trÞ TMOD ®Ó b¸o bé ®Þnh thêi gian nµo (Timer0 hay Timer1) ®-

îc sö dông vµ chÕ ®é lµm viÖc nµo cña chóng ®îc chon.2. N¹p l¹i c¸c thanh ghi TH víi gi¸ trÞ ®Õm ban ®Çu.3. Khëi ®éng bé ®Þnh thêi.4. Duy tr× hiÓn thÞ cê bé ®Þnh thêi TF sö dông lÖnh “JNB TFx, ®Ých” ®Ó xem nã sÏ ®-

îc bËt cha. Tho¸t vßng lÆp khi TF lªn cao.5. Xo¸ cê TF.6. Quay trë l¹i bíc 4 v× chÕ ®é 2 lµ chÕ ®é tù n¹p l¹i.

Page 139: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

13912/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsVí duï 7.3

H·y t×m tÇn sè cña xung vu«ng ®îc t¹o ra trªn P1.0.Lêi gi¶i:

MOV TMOD, #2H ; Chän Timer0, chÕ ®é 2 (8 bÝt tù n¹p l¹i)AGAIN: MOV TH0, #0 ; N¹p TH0 = 00

MOV R5, #250 ; §Õm cho ®é trÔ línACALL DELAYCPL P1.0SJMP AGAIN

DELAY: SETB TR0 ; Khëi ®éng Timer0BACK: JNB TF1, BACK ; gi÷ nguyªn cho ®Õn khi bé ®Þnh thêi quay vÒ 0

CLR TR0 ; Dõng Timer0.CLR TF0 ; Xo¸ cê TF0 cho vßng sau.DJNZ R5, DELAYRET

T = 2 (250 256 1.085s) = 1.38.88ms vµ f = 72Hz.

Microcontroller AT89S52

Page 140: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

14012/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsLAÄP TRÌNH CHO CHEÁ ÑOÄ 0Hoaøn toaøn gioáng cheá ñoä 1 chæ khaùc ôû choã cheá ñoä 0 laø 13 bit töùc laø töø 0000 ñeán 1FFFH

*******************************************Trong các ví dụ trên đây là thao tác lập trình Timer bằng cách thăm dò. Tức là CPU sẽ chỉ thực hiện lệnh

đich :JNB TFx,đichCho đến khi TFx=1. và CPU sẽ không làm được

việc khác.Để khắc phục nhược điểm này ta phải sử dụng lập

trình bằng ngắt.

Microcontroller AT89S52

Page 141: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

14112/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsLẬP TRÌNH NGẮT TIMER

- Khi thanh ghi IE được cấu hình cho phép ngắt timer thì khi timer về 0 thì cờ TF được bật lúc đó bộ vi điều khiển bị ngắt và nhảy tới bảng vector ngắt để thực hiện ISR.

- Bằng cách này bộ vi điều khiển có thể làm được việc khác cho đến khi nào nó được thông báo bộ định thời đã quay về 0

Microcontroller AT89S52

Page 142: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

14212/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsMô tả ngắt Timer 0 và Timer 1

Microcontroller AT89S52

1 000BH

TF0

Jumps to

Timer 0 Interruptor

1 001BH

TF1

Jumps to

Timer 1 Interruptor

Ví dụ 7.4: H·y viÕt ch¬ng tr×nh nh©n liªn tôc d÷ liÖu 8 bÝt ë cæng P0 vµ göi nã ®Õn cæng P1 trong khi nã cïng lóc t¹o ra mét sãng vu«ng chu kú 200s trªn ch©n P2.1. H·y sö dông bé Timer0 ®Ó t¹o ra sãng vu«ng, tÇn sè cña 8051 lµ XTAL = 11.0592MHz.

Page 143: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

14312/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsLêi gi¶i:

Ta sö dông bé Timer0 ë chÕ ®é 2 (tù ®éng n¹p l¹i) gi¸ trÞ n¹p cho TH0 lµ 100/1.085s = 92.

ORG 0000HLJMP MAINORG 000BH; ISR tạo sóng vuôngCPL P2.1RETI

ORG 0030H ; Ngay sau ®Þa chØ b¶ng vÐc-t¬ ng¾tMAIN: TMOD, #02H ; Chän bé Timer0, chÕ ®é 2 tù n¹p l¹i

MOV P0, #0FFH ; LÊy P0 lµm cæng vµo nhËn d÷ liÖuMOV TH0, # - 92 ; §Æt TH0 = A4H cho – 92MOV IE, #82H ; IE = 1000 0010 cho phÐp Timer0SETB TR0 ; Khëi ®éng bé Timer0

BACK: MOV A, P0 ; NhËn d÷ liÖu vµo tõ cæng P0MOV P1, A ; ChuyÓn d÷ liÖu ®Õn cæng P1SJMP BACK ; TiÕp tôc nhËn vµ chuyÓn d÷ liÖu

; Chõng nµo bÞ ng¾t bëi TF0END

Microcontroller AT89S52

Page 144: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

14412/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsMột số đặc điểmChóng ta ph¶i tr¸nh sö dông kh«ng gian bé nhí dµnh cho b¶ng vÐc t¬ ng¾t. Do vËy, ta ®Æt tÊt c¶ m· khëi t¹o t¹i ®Þa chØ 30H cña bé nhí. LÖnh LJMP lµ lÖnh ®Çu tiªn mµ 8052 thùc hiÖn khi nã ®-îc cÊp nguån. LÖnh LJMP l¸i bé ®iÒu khiÓn tr¸nh khái b¶ng vÐc t¬ ng¾t.Tr×nh phôc vô ISR cña bé Timer0 ®îc ®Æt ë trong bé nhí b¾t ®Çu tù ®Þa chØ 000BH vµ v× nã qu¸ nhá ®ñ cho vµo kh«ng gian nhí dµnh cho ng¾t nµy.Chóng ta cho phÐp ng¾t bé Timer0 víi lÖnh “MOV IE, #1000 0010B” trong ch¬ng tr×nh chÝnh MAIN.Trong khi d÷ liÖu ë cæng P0 ®îc nhËn vµo vµ chuyÓn liªn tôc sang c«ng viÖc P1 th× mçi khi bé Timer0 trë vÒ 0, cê TF0 ®îc bËt lªn vµ bé vi ®iÒu khiÓn tho¸t ra khái vßng lÆp BACK vµ ®i ®Õn ®Þa chØ 000BH ®Ó thùc hiÖn ISR g¾n liÒn víi bé Timer0.Trong tr×nh phôc vô ng¾t ISR cña Timer0 ta thÊy r»ng kh«ng cÇn ®Õn lÖnh “CLR TF0” tríc khi lÖnh RETI. Lý do nµy lµ v× 8052 xo¸ cê TF bªn trong khi nh¶y ®Õn b¶ng vÐc t¬ ng¾t.

Microcontroller AT89S52

Page 145: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

14512/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsVí dụ 7.5

H·y viÕt l¹i ch¬ng tr×nh ë vÝ dô 7.4 ®Ó t¹o sãng vu«ng víi møc cao kÐo dµi 1085s vµ møc thÊp dµi 15s víi gi¶ thiÕt tÇn sè XTAL = 11.0592MHz. H·y sö dông bé ®Þnh thêi Timer1.

Microcontroller AT89S52

1085

15

Page 146: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

14612/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsV× 1085s lµ 1000 1.085s nªn ta cÇn sö dông chÕ ®é 1 cña bé ®Þnh thêi Timer1.; - - Khi khëi t¹o tr¸nh sö dông kh«ng gian dµnh cho b¶ng vÐc t¬ ng¾t.

ORG 0000HLJMP MAIN ; ORG 001BH ; §Þa chØ ng¾t cña Timer1 trong b¶ng vÐc t¬ ng¾tLJMP ISR-T1 ; Nh¶y ®Õn ISR-

; B¾t ®Çu c¸c ch¬ng tr×nh chÝnh MAIN.ORG 0030H ; Sau b¶ng vÐc t¬ ng¾t

MAIN: MOV TMOD, #10H ; Chän Timer1 chÕ ®é 1MOV P0, #0FFH ; MOV TL1, #018H ; §Æt TL1 = 18 byte thÊp cña - 1000MOV TH1, #0FCH ; §Æt TH1 = FC byte cao cña - 1000MOV IE, #88H ; IE = 10001000 cho phÐp ng¾t Timer1SETB TR1 ; Khëi ®éng bé Timer1

Microcontroller AT89S52

Page 147: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

14712/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsBACK: MOV A, P0 ; NhËn d÷ liÖu ®Çu vµo ë cæng P0

MOV P1, A ; ChuyÓn d÷ liÖu ®Õn P1SJMP BACK ; TiÕp tôc nhËn vµ chuyÓn d÷ liÖu

- Tr×nh ISR cña Timer1 ph¶i ®îc n¹p l¹i v× ë chÕ ®é 1ISR-T1: CLR TR1 ; Dõng bé Timer1

CLR P2.1MOV R2, #4 ; 2 chu kú m¸y MC (Machine Cycle)

HERE: DJNZ R2, HERE ; 4 2 MC = 8 MCMOV TL1, #18H ; N¹p l¹i byte thÊp gi¸ trÞ 2 MCMOV TH1, #0FCH ; N¹p l¹i byte cao gi¸ trÞ 2 MCSETB TR1 ; Khëi ®éng Timer1 1 MCSETB P2.1 ; P2.1 = 1 bËt P2.1 trë l¹i caoRETI ; Trë vÒ ch¬ng tr×nh chÝnhEND

Lu ý r»ng phÇn xung møc thÊp ®îc t¹o ra bëi 14 chu kú møc MC vµ mçi MC = 1.085s vµ 14 1.085s = 15.19s.

Microcontroller AT89S52

Page 148: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

14812/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsVí dụ 7.6 Tạo xung vuông f=50Hz trên chân P1.2ORG 0

LJMP MAINORG 000BH ; Ch¬ng tr×nh con phôc vô ng¾t cho Timer0CPL P1.2MOV TL0, # 00MOV TH0, # 0DCHRETIORG 30H

; ------------ main program for initializationMAIN: MOV TMOD, # 00000001B ; Chän Timer0

chÕ ®é 1MOV TL0,#00HMOV TH0, # 0DCHMOV IE, # 82H ; Cho phÐp ng¾t Timer0SETB TR0

HERE: SJMP HEREEND

Microcontroller AT89S52

Page 149: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

14912/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter Functions

7.2 LẬP TRÌNH COUNTERSử dụng bộ timer/counter cho tác vụ đếm khi nguồn tần số không phải là từ thạch anh mà từ sự kiện bên ngoại qua các chân:

Microcontroller AT89S52

Ch©n Ch©n cæng Chøc năng M« t¶

14 P3.4 T0 ĐÇu vµo ngoµi cña bé ®Õm 0

15 P3.5 T1 ĐÇu vµo ngoµi cña bé ®Õm 1

Được điều khiển bằng bit C/T=1 của thanh ghi TCON

Page 150: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

15012/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsNhư vậy lập trình cho Counter cũng giống như timer nhưng bit C/T của TCON bằng 1

Microcontroller AT89S52

TH0 TL0 TF0

TF0 goes highwhen FFFF 0

overflow flag

TR0

Timer exterrnal input Pin 3.4

TH1 TL1 TF1

TF1 goes highwhen FFFF 0

overflow flag

TR1

Timer exterrnal input Pin 3.5

Counter chế độ 1

Page 151: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

15112/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsCounter chế độ 2

Microcontroller AT89S52

TL0 TF0

overflow flag

TR0

Timer0 exterrnal input Pin 3.4

TF0 goes highwhen FF 0

TH0 reload

TL1 TF1

overflow flag

TR1

Timer1 exterrnal input Pin 3.5

TF1 goes highwhen FF 0

TH1 reload

Page 152: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

15212/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsVí dụ 7.7 gi¶ sö r»ng mét xung tÇn sè 1Hz ®îc nèi tíi

ch©n ®Çu vµo P3.4. H·y viÐt ch¬ng tr×nh hiÓn thÞ bé ®Õm 0 trªn mét LCD. H·y ®Æt sè ban ®Çu cña TH0 lµ - 60.

Giải:§Ó hiÓn thÞ sè ®Õm TL trªn mét LCD ta ph¶i thùc hiÖn chuyÓn ®æi gi÷ liÖu 8 bÝt nhÞ ph©n vÒ ASCII.

ACALL LCD-SET UP ; Gäi ch¬ng tr×nh con khëi t¹o LCD

MOV TMOD, #0000110B ; Chän bé ®Õm 0, chÕ ®é 2, bÝt C/T = 1

MOV TH0, # - 60 ; §Õm 60 xungSETB P3.4 ; LÊy ®Çu vµo T0

Microcontroller AT89S52

Page 153: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

15312/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsAGAIN: SETB TR0 ; Sao chÐp sè ®Õm TL0BACK: MOV A, TL0 ; Gäi ch¬ng tr×nh con ®Ó chuyÓn ®æi

trong c¸c thanh ghi R2, R3, R4.ACALL CONV ; Gäi ch¬ng tr×nh con hiÓn thÞ trªn LCDACALL DISLAY ; Thùc hiÖn vßng lÆp nÕu TF = 0JNB TF0, BACK ; Dõng bé ®Õm 0CLR TR0 ; Xo¸ cê TF0 = 0CLR TF0 ; TiÕp tôc thùc hiÖnSJMP AGAIN ; ViÖc chuyÓn ®æi nhÞ ph©n vÒ m· ASCII

khi tr¶ d÷ liÖu ASCII cã trong c¸c thanh ghi R4, R3, R2 (R2 cã LSD) - ch÷ sè nhá nhÊt.CONV: MOV B, #10 ; Chia cho 10

DIV ABMOV R2, B ; Lu gi÷ sè thÊpMOV B, #10 ; Chia cho 10 mét lÇn n÷aDIV ABORL A, #30H ; §æi nã vÒ ASCIIMOV R4, A ; Lu ch÷ sè cã nghÜa lín nhÊt MSDMOV A, B ; ORL A, #30H ; §æi sè thø hai vÒ ASCIIMOV R3, A ; Lu nãMOV A, R2ORL A, #30H ; §æi sè thø ba vÒ ASCIIMOV R2, A ; Lu sè ASCII vµo R2.RET

Microcontroller AT89S52

Page 154: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

15412/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsTrường hợp hợp tương đương trên thanh ghi TCON

Microcontroller AT89S52

Đèi víi Timer0

SETB TR0 = SETB TCON.4

CLR TR0 = CLR TCON.4

SETB TF = SETB TCON.5

CLR TF0 = CLR TCON.5

Đèi víi Timer1

SETB TR1 = SETB TCON.6

CLR TR1 = CLR TCON.6

SETB TF1 = SETB TCON.7

CLR TF1 = CLR TCON.7

Page 155: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

15512/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsBit GATE=1? Trong thanh ghi TMODTrong phần trên ta đã giả thiết GATE=0Khi bít GATE=0 việc khởi động và dừng Timer/Counter bằng các lệnh SETB TRx hoặc CLR TRx.Khi bit GATE=1 việc khởi động và dừng Timer/Counter là từ bên ngoài qua hai chân INT0 (P3.2) cho bộ CT0 và chân INTR1(P3.3) cho bộ CT1

Microcontroller AT89S52

Page 156: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

15612/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsBộ timer/Counter 0

Microcontroller AT89S52

XTALoscillator

12

T0 Pin Pin 3.4

Gate

TR0

Page 157: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

15712/21/2012 kỹ thuật vi điều khiển

Chương 7: Timer/Counter FunctionsBộ timer/Counter 1

Microcontroller AT89S52

XTALoscillator

12

T1 Pin Pin 3.5

Gate

TR1

Page 158: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

15812/21/2012 kỹ thuật vi điều khiển

KỸ THUẬT VI ĐIỀU KHIỂN

Chương 8:Serial Communication

Interface

Page 159: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

15912/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Mô hình truyền dữ liệu

Microcontroller AT89S52

communication link

DTE DCE DTEDCE

computer orterminal

modem modem computer orterminal

Modem “Modulator/ demodulator” (®iÒu chÕ/ gi¶i ®iÒu chÕ).

Truyền dữ liệu nối tiếp dùng để truyền xa

Truyền dừ liệu song song để truyền gần

Page 160: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

16012/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Trong truyền thông nối tiếp có hai phương pháp truyền dự liệu:Truyền đồng bộ: Truyền một khối dữ liệu đồng thời.Truyền dị bộ : Truyền từng byte mộtNh÷ng IC phôc vô nh c¸c bé thu - ph¸t dÞ bé tæng hîp UART (Universal Asynchronous Receiver Transmitter)

C¸c bé thu - ph¸t ®ång - dÞ bé tæng hîp UBART

Microcontroller AT89S52

Page 161: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

16112/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Các chế độ truyền nối tiếp cơ bản

Microcontroller AT89S52

Bé ph¸t Bé thu

Bé ph¸t

Bé thu

Bé thu

Bé ph¸t

Bé ph¸t

Bé thu

Bé thu

Bé ph¸t

B¸n ®¬n c«ng

Song c«ng

§¬n c«ng

Simplex link

Half-duplex link

full-duplex link

Page 162: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

16212/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Phép truyền dị bộ được dùng cho phép truyền hướng ký tự.Phép truyền đồng bộ dùng cho truyền theo khối.Trong truyền dị bộ mỗi ký tự được đặt giữa một bít bắt đầu (start) và một bit kết thúc (stop). Công việc này gọi là đóng gói dữ liệu.Start bit luôn là 0Stop bit luôn là 1

Microcontroller AT89S52

Page 163: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

16312/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Ví dụ 8.1: đóng gói ký tự A

Microcontroller AT89S52

d7

1 1 StartbÝtSpace

StopbÝt Mark

d0Goes out last Goes out

first

Ngày nay một gói dữ liệu thường gồm 10 bit

Ngoài ra có thể thêm 1 bit gọi là bít chẵn lẻ (parity) để đảm bảo tính toàn vẹn của dữ liệu

Page 164: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

16412/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Tốc độ truyền dữ liệu – tốc độ baudCác máy tính trước đây tốc độ từ 100-9600 bpsCác máy tính ngày nay có thể tới 56kbpsTrong truyền nối tiếp dị bộ thì baud tối đa là 100.000 bps

Microcontroller AT89S52

Page 165: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

16512/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Mô hình truyền dữ liệu

Microcontroller AT89S52

Station Station

(a) point-to-point communication link

Slave 1 Slave 2 Slave 3

Master

(b) multi-drop communication link

Page 166: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

16612/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

RS232 – Chuẩn truyền thông nối tiếpRS232 là chuẩn cho phép tương thích giữa các thiết bị truyền thông dữ liệu được sản xuất bởi các hãng khác nhau.Được phát triển bởi hiệp hội công nghiệp điện tử Electronics Industry Association (EIA) vào năm 1960Các phiên bản sau: RS232A(1963); RS232B(1965); RS232C(1969) và RS232D(1987)

Microcontroller AT89S52

Page 167: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

16712/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Chuẩn RS232 quy địnhMức 0 : -25V => -3VMức 1 : 3 V => 25 V

Điều này không phù hợp với các họ vi điều khiển hiện nay

=> Cần kết nối RS232 bất ký đến một bộ VĐK thì ta cần một bộ biến đổi điện áp như MAX232

Microcontroller AT89S52

Page 168: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

16812/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Các chân MAX232Loại 25 chân DP-25

Microcontroller AT89S52

14 25

131

chân Mô tả

1 §Êt c¸ch ly (Protective Cround)

2 D÷ liÖu ®îc truyÒn TxD (Transmitted data)

3 D÷ liÖu ®îc ph©n RxD (Received data)

4 Yªu cÇu göi RTS (Request To Send)

5 Xo¸ ®Ó göi CIS (Clear To Send)

Page 169: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

16912/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication InterfaceMicrocontroller AT89S52

chân mô tả chân Mô tả

6 D÷ liÖu s½n sµng DSR (Data Set Ready) 16 D÷ liÖu ®îc nhËn thø cÊp (Secondary Received data)

7 §Êt cña tÝn hiÖu GND (Signal Cround) 17 NhËn ph©n chia thêi gian phÇn tö tÝn hiÖu (Receiveo Signal Element Timing)

8 T¸ch tÝn hiÖu m¹ng d÷ liÖu DCD (Data Carrier Detect)

18 Cha dïng

9 NhËn ®Ó kiÓm tra d÷ liÖu (Received for data testing)

19 Yªu cÇu ®Ó nhËn thø cÊp (Secondary Request to Send)

10 NhËn ®Ó kiÓm tra d÷ liÖu (Received for data testing)

20 §Çu d÷ liÖu s½n sµng (Data Terminal Ready)

11 Cha dïng 21 Ph¸t hiÖn chÊt lîng tÝn hiÖu (Signal Qualyty Detector)

12 T¸ch tÝn hiÖu m¹ng d÷ liÖu thø cÊp (Secondary data carrier detect)

22 B¸o chu«ng (Ring Indicator)

13 Xo¸ ®Î nhËn d÷ liÖu thø cÊp (Secondary Clear to Send)

23 Chän tèc ®é tÝn hiÖu d÷ liÖu (Data Signal Rate Select)

14 D÷ liÖu ®îc truyÒn thø cÊp (Secondary Transmit Signal Element Timing)

24 TruyÒn ph©n chia thêi gian tÝn hiÖu (Transmit Signal Element Timing)

15 TruyÒn ph©n chia thêi gian phÇn tö tÝn hiÖu (Transmit Signal Element Timing)

25 Cha dïng

Page 170: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

17012/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Các chân MAX232Loại 9 chân DP-9

Microcontroller AT89S52

6 9

51

M« t¶ Sè ch©n

123456789

Da ta carrier detect (DCD)Received data (RxD)Transmitted data (TxD)Data terminal ready (DTR)Signal ground (GND)Data set ready (DSR)Request to send (RTS)Clear to send (CTS)Ring indicator (RL)

Tr¸nh tÝn hiÖu m¹ng dữ liÖuDữ liÖu ®îc nhËnDữ liÖu ®îc göiĐÇu dữ liÖu s½n sµngĐÊt cña tÝn hiÖuDữ liÖu s½n sµngYªu cÇu göiXo¸ ®Ó göiB¸o chu«ng

Page 171: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

17112/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication InterfaceMicrocontroller AT89S52

TxD

RxD

TxD

RxD

DTE DTE

ground

Giao thức bắt tay. Không modem

Page 172: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

17212/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Hai DTE kết nối qua đường điện thoại

Microcontroller AT89S52

TxRx

RINGDCDCTSRTSDSRDTR

GND

TxRxRINGDCDCTSRTSDSRDTRGND

TxRx

RINGDCDCTSRTSDSRDTR

GND

TxRxRINGDCDCTSRTSDSRDTRGND

phone line

Figure Connection over public phone line

Computer(DTE)

Modem(DCE)

Modem(DCE)

Computer(DTE)

Page 173: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

17312/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

GHÉP NỐI AT89S52 với MAX232

Microcontroller AT89S52

P3.1TxD

P3.0RxD

Max232

8051

Vcc

2

6

7

89

11

10

5

411

10

14

13

T1OUTT1IIN

R1IINR1OUT

T2IIN

R2OUT

T2OUT

R2IIN

Rs232 sideTTL side15

16

DB - 9

12

C3+

C4+

2

2 52

3

+C1

+C2

§Ó ý r»ng nèi ghÐp kh«ng modem lµ nèi ghÐp mµ ch©n TxD bªn ph¸t ®îc nèi víi RxD cña bªn thu vµ ngîc l¹i.

Page 174: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

17412/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Sơ đồ sử dụng MAX233 không cần tụ

Microcontroller AT89S52

P3.1TxD

P3.0RxD

Max232

8051

Vcc1314141217

11151610

18

1920

11

10 3

2 5

4 2

2 5

2

3

1

5

4

T1OUT T1IINT1IIN

R1II

N

R1OU

TT2IIN

R2OU

T

T2OUT

R2II

N

Rs233 sideTTL side6 9

7

DB - 9

Page 175: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

17512/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

LẬP TRÌNH TRUYỀN THÔNG NỐI TIẾPYêu cầu:

- Tốc độ baud của 8052 phải bằng tốc độ baud của PC

- dùng chức năng Hyperterminal trong Win XP(start=>accessories=>communications => Hyperterminal) để giao tiếp

- Ví dụ: C¸c tèc ®é Baud cña m¸y tÝnh PC486 vµ Pentium cho trong BIOS.

Microcontroller AT89S52

100 150 300 600 1200 2400 4800 9600 19200

Page 176: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

17612/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Tốc độ baud trong 89S52Khi Reset:

Microcontroller AT89S52

Page 177: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

17712/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication InterfaceMicrocontroller AT89S52

Page 178: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

17812/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Internal Baud Rate Generator (BRG)

Microcontroller AT89S52

Page 179: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

17912/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Thanh ghi điều khiển nối tiếp SCON (98h)

Microcontroller AT89S52

BITFE/SM0 Sè x¸c ®Þnh chÕ ®é lµm viÖc cæng nèi tiÕp

SM1 Sè x¸c ®Þnh chÕ ®é lµm viÖc cæng nèi tiÕp

SM2 Dïng cho truyÒn th«ng gi÷a c¸c bé vi xö lý (SM2 = 0)

REN BËt/xo¸ b»ng phÇn mÒm ®Ó cho phÐp/ kh«ng cho thu

TB8 Kh«ng sö dông réng r·i

RB8 Kh«ng sö dông réng r·

TI Cê ng¾t truyÒn ®Æt b»ng phÇn cøng khi b¾t ®Çu bÝt Stop ë chÕ ®é 1

RI Cê ng¾t thu Xo¸ b»ng phÇn mÒm

Page 180: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

18012/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Thanh ghi SCON được đánh địa chỉ theo bitTrong 4 chế độ ta chỉ quan tâm đến chế độ 1

8bit dữ liệu, start, stop SM1=0, SM0=1

Microcontroller AT89S52

Page 181: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

18112/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Hai bit quan trọng TI và RIKhi truyền dữ liệu trước bit stop nó phải được bật ngay khi kết thúc truyền 8 bit dữ liệu.khi 8052 nhËn ®îc d÷ liÖu nèi tiÕp qua ch©n RxD vµ nã t¸ch c¸c bÝt Start vµ Stop ®Ó lÊy ra 8 bÝt d÷ liÖu ®Ó ®Æt vµo SBUF, sau khi hoµn tÊt nã bËt cê RI ®Ó b¸o r»ng nã ®· nhËn xong mét byte vµ cÇn ph¶i lÊy ®i kÎo nã bÞ mÊt cê RI ®îc bËt khi ®ang t¸ch bÝt Stop.

Microcontroller AT89S52

Page 182: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

18212/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Thanh ghi SBUF (99h) serial buffer register Là thanh ghi 8bit chứa giữ liệu truyền qua chân

TxD và dữ liệu nhận từ chân RxDBRL register (9Ah)

Giá trị mặc định 00hChứa giá trị nạp lại trong chế độ BRG

Các thanh ghi khác tim hiểu trong tài liệu.Nội dung các vấn đề cần quan tâm chỉ cần giới hạn trong các thanh ghi trên

Microcontroller AT89S52

Page 183: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

18312/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication InterfaceCác bước lập trình truyên dữ liệu

1. N¹p thanh ghi TMOD gi¸ trÞ 20H b¸o r»ng sö dông Timer1 ë chÕ ®é 2 ®Ó thiÕt lËp chÕ ®é baud.

2. N¹p thanh ghi TH1 ®Ó thiÕt lËp chÕ ®é baud truyÒn d÷liÖu nèi tiÕp (víi gi¶ thiÕt tÇn sè XTAL = 11.0592MHz).

3. N¹p thanh ghi SCON gi¸ trÞ 50H b¸o chÕ ®é nèi tiÕp 1 ®Ó ®ãng khung 8 bÝt d÷ liÖu, 1 bÝt Start vµ 1 bÝt Stop.

4. BËt TR1 = 1®Ó khëi ®éng Timer1.5. Xo¸ bÝt TI b»ng lÖnh “CLR TI”6. Byte ký tù cÇn ph¶i truyÒn ®îc ghi vµo SBUF.7. BÝt cê TI ®îc hiÓn thÞ b»ng lÖnh “xx: JNB TI, xx” ®Ó

b¸o ký tù ®· ®îc truyÒn hoµn tÊt cha.8. §Ó truyÒn ký tù tiÕp theo quay trë vÒ bíc 5.

Microcontroller AT89S52

Page 184: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

18412/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Ví dụ: 8.1 H·y viÕt ch¬ng tr×nh cho 8051 ®Ó truyÒn nèi tiÕp mét ký tù “A” víi tèc ®é 4800 baud liªn tôc.Lêi gi¶i:

MOV TMOD, #20H ; Chän Timer1, chÕ ®é 2 (tù ®éng n¹p l¹i)MOV TH1, # - 6 ; Chän tèc ®é 4800 baudMOV SCON, #A”; TruyÒn 8 bÝt d÷ liÖu, 1 bÝt Stop cho phÐp thuSETB TR1 ; Khëi ®éng Timer1

AGAIN: MOV SBUF, #”A” ; CÇn truyÒn ký tù “A”HERE: JNB TI, HERE ; Chê ®Õn bÝt cuèi cïng

CLR TI ; Xo¸ bÝt TI cho ký tù kÕ tiÕpSJMP AGAIN ; TiÕp tôc göi l¹i ch÷ A

Microcontroller AT89S52

Page 185: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

18512/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Ví dụ 8.2H·y viÕt ch¬ng tr×nh ®Ó truyÒn ch÷ “YES” nèi tiÕp liªn tôc víi tèc ®é 9600 baud (8 bÝt d÷ liÖu, 1 bÝt Stop).Lêi gi¶i:

MOV TMOD, #20H ; Chän bé Timer1, chÕ ®é 2 MOV TH1, # - 3 ; Chän tèc ®é 9600 baudMOV SCON, #50H ; TruyÒn 8 bÝt d÷ liÖu, 1 bÝt Stop cho phÐp thuSETB TR1 ; Khëi ®éng Timer1

AGAIN: MOV A, # "Y" ; TruyÒn ký tù “Y”ACALL TRANSMOV A, # "E" ; TruyÒn ký tù “E”ACALL TRANSMOV A, # "S" ; TruyÒn ký tù “S”ACALL TRANSSJMP AGAIN ; TiÕp tôc

; Ch¬ng tr×nh con truyÒn d÷ liÖu nèi tiÕp.TRANS: MOV SBUF, A ; N¹p SBUFHERE: JNB TI, HERE ; Chê cho ®Õn khi truyÒn bÝt cuèi cïng

CLR TI ; Chê s½n cho mét byte kÕ tiÕpRET

Microcontroller AT89S52

Page 186: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

18612/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication InterfaceCác bước lập trình nhận dữ liệu

1. N¹p gi¸ trÞ 20H vµo thanh ghi TMOD ®Ó b¸o sö dông bé Timer1, chÕ ®é 2 (8 bÝtm, tù ®éng n¹p l¹i) ®Ó thiÕt lËp tèc ®é baud.

2. N¹p TH1 c¸c gi¸ trÞ ®Ó t¹o ra tèc ®é baud víi gi¶ thiÕt XTAL = 11.0592MHz.

3. N¹p gi¸ trÞ 50H vµo thanh ghi SCON ®Ó b¸o sö dông chÕ ®é truyÒn nèi tiÕp 1 lµ d÷ liÖu ®îc ®ãng gãi bëi 8 bÝt d÷ liÖu, 1 bÝt Start vµ 1 bÝt Stop.

4. BËt TR1 = 1 ®Ó khëi ®éng Timer1.5. Xo¸ cê ng¾t RI b»ng lÖnh “CLR RI”6. BÝt cê RI ®îc hiÓn thÞ b»ng lÖnh “xx: JNB RI, xx” ®Ó xem toµn bé ký

tù ®· ®îc nhËn cha.7. Khi RI ®îc thiÕt lËp th× trong SBUF ®· cã 1 byte. C¸c néi dung cña nã

®îc cÊt lu vµo mét n¬i an toµn.8. §Ó nhËn mét ký tù tiÕp theo quay trë vÒ bíc 5.

Microcontroller AT89S52

Page 187: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

18712/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Ví dụ 8.3 H·y lËp tr×nh cho 8051 ®Ó nhËn c¸c byte d÷ liÖu nèi tiÕp vµ ®Æt chóng vµo cæng P1. §Æt tèc ®é baud lµ 4800, 8 bÝt d÷liÖu vµ 1 bÝt Stopl.Lêi gi¶i:

MOV TMOD, #20H ; Chän bé Timer1, chÕ ®é 2 (tù ®éng n¹p l¹i)MOV TH1, # - 6 ; Chän tèc ®é 4800 baud

MOV SCON, #50H ; Chän khung d÷ liÖu 8 bÝt Stop, bÝt.SETB TR1 ; Khëi ®éng bé Timer1

HERE: JNB R1, HERE ; §îi nhËn toµn bé lý tù vµo hÕtMOV A, SBUF ; Lu cÊt ký tù vµo thanh AMOV P1, A ; Göi ra cæng P.1CLR RI ; S½n sµng nhËn byte kÕ tiÕpSJMP HERE ; TiÕp tôc nh¹n d÷ liÖu

Microcontroller AT89S52

Page 188: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

18812/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication InterfaceVí dụ 4:Gi¶ sö cæng nèi tiÕp cña 8051 ®îc nèi vµo cæng COM cña m¸y tÝnh IBM CP vµ mµ ®ang sö dụng ch¬ng tr×nh Termina. Exe ®Ó göi vµ nhËn d÷ liÖu nèi tiÕp. Cæng P1 vµ P2 cña 8051 ®îc nè tíi c¸c đèn LED vµ c¸c c«ng t¾c chuyÓn m¹ch t¬ng øng. H·y viÕt mét ch¬ng trr×nh cho 8051.

a) Göi th«ng b¸o “We Are Ready” (chóng t«i ®· s½n sµng) tíi m¸y tÝnh PC.

b) NhËn bÊt kú d÷ liÖu g× ®îc PC göi ®Õn vµ chuyÓn ®Õn c¸c ®Ìn LED ®ang nèi ®Õn c¸c ch©n cña cæng P1.

c) NhËn d÷ liÖu trªn c¸c chuyÓn m¹ch ®îc nèi tíi P2 vµ göi nã tíi m¸y tÝnh PC nèi tiÕp.

Ch¬ng tr×nh ph¶i thùc hiÖn mét lÇn a), nhng b) vµ c) ch¹y liªn tôc víi tèc ®é 4800 baud.

Microcontroller AT89S52

Page 189: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

18912/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Lêi gi¶i:ORG 30h

MOV P2, #0FFH ; LÊy cæng P2 lµm cæng vµoMOV TMOD, #20H ; Chän bé Timer1, chÕ ®é 2 (tù ®éng n¹p l¹i)MOV TH1, # 0FAH ; Chän tèc ®é 4800 baudMOV SCON, #50H ; T¹o khung d÷ liÖu 8 bÝt, 1bÝt Stop cho phÐp SETB TR1 ; Khëi ®éng bé Timer1MOV DPTR, #MYDATA ; N¹p con trá ®Õn th«ng b¸o

H - 1: CLR AMOVC A, @A + DPTR ; LÊy ký tùJZ B-1 ; NÕu ký tù cuèi cïng muèn göi ra

ACALL SEND ; NÕu cha th× gäi ch¬ng tr×nh con SENDINC DPTR ; Ch¹y tiÕpSJMP H - 1 ; Quay l¹i vßng lÆp

Microcontroller AT89S52

Page 190: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

19012/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

B - 1: MOV A, P2 ; §äc d÷ liÖu trªn cæng P2ACALL TECV ; TruyÒn nã nèi tiÕpACALL RECV ; NhËn d÷ liÖu nèi tiÕpMOV P1, A ; HiÓn thÞ nã ra c¸c ®Òn LEDSJMP B - 1 ; ë l¹i vßng lÆp v« h¹n

; TruyÒn d÷ liÖu nèi tiÕp ACC cã d÷ liÖuSEND: MOV SBUF, A ; N¹p d÷ liÖuH- 2: JNB TI, H - 2 ; ë l¹i vßng lÆp v« h¹n

CLR TI ; TruyÒn d÷ liÖu nèi tiÕpRET ; NhËn d÷ liÖu

; TruyÒn d÷ liÖu nèi tiÕp ACC cã d÷ liÖuTECV: JNB RI, TECV ; N¹p d÷ liÖu

Microcontroller AT89S52

Page 191: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

19112/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

MOV SBUF,A ; ë l¹i ®©y cho ®Õn khi göi bÝt cuèi cïngCLR TI ; S½n sµng cho ký tù míiRET ; Trë vÒ mêi gäi

; NhËn d÷ liÖu nèi tiÕp trong ACCRECV: JNB RI, RECV ; §îi ë ®©y nhËn ký tù

MOV A, SBUF ; Lu nã vµo trong ACCCLR RI ; S½n sµng nhËn ký tù m· tiÕp theoRET ; Trë vÒ nêi gäi

; Ng¨n xÕp cha th«ng b¸oMYDATA: DB “Chóng t«i ®· s½n sµng” 0

END

Microcontroller AT89S52

P1TxD

RxD

P2

ToPC

COMport

8051

SW

LED

Page 192: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

19212/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Thay đổi tốc độ Baud- Tăng tần số thạch anh- Thay đổi bit SMOD trên thanh ghi PCON

- SMOD mặc định có giá trị 0- Khi SMOD =1 tốc độ baud được tăng lên

gấp đôi.

Microcontroller AT89S52

SM0D GF0 GF0 PD IDL

D7 D0

Page 193: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

19312/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Do PCON không đánh địa chỉ theo bít nên ta phải dùng lệnh sau để dặt SMOD=1

MOV A,PCONSETB ACC.7MOV PCON,A

Microcontroller AT89S52

TH1 (thËp ph©n) TH1 (Hex) Tèc ®é baud

SMOD = 0 SMOD = 1

-3-6

-12-24

FDDAF4E8

9600480024001200

19200960048002400

Page 194: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

19412/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

LẬP TRÌNH TRUYÊN THÔNG NỐI TIẾP BẰNG NGẮT

- Ở trên đã dùng phương pháp thăm dò(polling) đễ giám sát các cờ TI và RI điều đó sẽ rất lãng phí.

- Trong lập trình truyền thông ngắt ta có thể làm việc khác khi tác vụ truyền thông vẫn làm việc.

- Có một ngắt dành cho truyền thông nối tiếp là bit IE.4 (ES)

Microcontroller AT89S52

Page 195: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

19512/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Khi có ngắt thi 8052 nhảy đến địa chỉ ngắt dành cho truyền thông nối tiếp 0023h.Trong ISR chúng ta phải kiểm tra TI và RI để có tác vụ phù hợp

Microcontroller AT89S52

RI

TI0023

H

Page 196: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

19612/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Ví dụ 5:H·y viÕt mét ch¬ng tr×nh sö dông c¸c ng¾t ®Ó thùc hiÖn c¸c c«ng viÖc sau:

a. NhËn d÷ liÖu nèi tiÕp vµ göi nã ®Õn cæng P0.

b. LÊy cæng P1 ®äc vµ truyÒn nèi tiÕp vµ sao ®Õn cæng P2.

c. Sö dông Timer0 t¹o sãng vu«ng tÇn sè 5kHz trªn ch©n P3.4 gi¶t thiÕt tÇn sè XTAL = 11.0592MHz vµ tèc ®é baud 4800.

Microcontroller AT89S52

Page 197: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

19712/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

Lêi gi¶i:ORG 0LJMP MAINORG 000BH ; Tr×nh phôc vô ng¾t dµnh cho

Timer0CPL P3.4 : T¹o xung ë ch©n P3.1RETI ; Trë vÒ tõ ISRORG 23H ; Nh¶y ®Õn ®Þa chØ ng¾t truyÒn nèi tiÕpLJMP SERIAL ; LÊy cæng P1 lµm cæng ®Çu vµoORG 30H

MAIN : MOV P1, # 0FFH ; Chän Timer0 vµ Timer1 chÕ ®é 2 tù n¹p l¹i

MOV TMOD, # 22H ; Chän Timer0 vµ Timer1 chÕ ®é 2 tù n¹p l¹i

MOV TH1, # 0F6H ; Chän tèc ®é baud 4800MOV SCON, # 50H ; Khung d÷ liÖu: 8 bÝt d÷ liÖu, 1

stop, cho phÐp REN

Microcontroller AT89S52

Page 198: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

19812/21/2012 kỹ thuật vi điều khiển

Chương 8: Serial Communication Interface

MOV TH0, # - 92 ; T¹o tÇn sè 5kHzMOV IE, # 10010010B ; Cho phÐp ng¾t nèi tiÕpSETB TR1 ; Khëi ®éng Timer1SETB TR0 ; Khëi ®éng Timer0

BACK: MOV A, P1 ; §äc d÷ liÖu tõ cæng P1MOV SBUF, A ; LÊy mét lÇn b¶n sao d÷ liÖuMOV P2, A ; Ghi nã vµo cæng P2SJMP BACK ; ë l¹i trong vßng lÆp

; ---------------------- Tr×nh phôc vô ng¾t cæng nèi tiÕp.ORG 100H

SERIAL: JB TI, TRANS ; Nh¶y nÕu TI vµoMOV A, SBUF ; NÕu kh«ng tiÕp tôc nhËn d÷ liÖuMOV P0, A ; Göi d÷ liÖu nèi tiÕp ®Õn P0CLR RI ; Xo¸ cê RI v× 8051 kh«ng lµm ®iÒu nµyRETI ; Trë vÒ tõ ISR

TRANS: CLR TI ; Xo¸ cê TI v× 8051 kh«ng xo¸RETI ; Trë vÒ tõ ISR.END

Microcontroller AT89S52

Page 199: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

19912/21/2012 kỹ thuật vi điều khiển

KỸ THUẬT VI ĐIỀU KHIỂN

Chương 9: LCD,ADC and SENSOR

INTERFACE

Page 200: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

20012/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

AT89S52 với LCD

Ưu điểm hiển thị của LCD:- Giá thành ngày càng hạ.- Hiển thị được đầy đủ số và ký tự.- Có khả năng đồ họa- LCD tích hợp mạch làm tươi, do đó CPU sẽ

không phải làm việc này giống như các đèn led.

- Dễ dàng lập trình.

Microcontroller AT89S52

Page 201: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

20112/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

Sơ đồ ghép nối

Microcontroller AT89S52

P2.1

D0

P1.0

P1.0

P2.2

D7

R/W ERSVSS

VEE

VCC

+5v

10KPOT

LCD8052

Page 202: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

20212/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

Vị trí và chức năng các chân

Microcontroller AT89S52

Page 203: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

20312/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACEMicrocontroller AT89S52

M· (Hex) LÖnh ®Õn thanh ghi cña LCD

1 Xo¸ mµn h×nh hiÓn thÞ

2 Trë vÒ ®Çu dßng

4 Giảm con trá (dÞch con trá sang tr¸i)

6 Tăng con trá (dÞch con trá sang ph¶i)

5 DÞch hiÓn thÞ sang ph¶i

7 DÞch hiÓn thÞ sang tr¸i

8 T¾t con trá, t¾t hiÓn thÞ

A T¾t hiÓn thÞ, bËt con trá

C BËt hiÓn thÞ, t¾t con trá

E BËt hiÓn thÞ, nhÊp nh¸y con trá

F T¾t con trá, nhÊp nh¸y con trá

10 DÞch vÞ trÝ con trá sang tr¸i

14 DÞch vÞ trÝ con trá sang ph¶i

18 DÞch toµn bé hiÓn thÞ sang tr¸i

1C DÞch toµn bé hiÓn thÞ sang ph¶i

80 Ðp con trá Vò ®Çu dßng thø nhÊt

C0 Ðp con trá Vò ®Çu dßng thø hai

38 Hai dßng vµ ma trËn 5 7

Bảng mã

lệnh

Page 204: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

20412/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

Khi gửi dữ liệu hoặc mã lệnh đến LCD cần phải chú ý đến:Độ trễ thời gian để LCD xử lý.Giám sát cờ bận ở bit D7 khi RS=0 và R/W=1Khi bit D7=0 ta mới gửi dữ liệu RS=0 và R/W=0Thể hiện trong hai ví dụ sau:

Microcontroller AT89S52

Page 205: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

20512/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

Thời gian xử lý:

Microcontroller AT89S52

Dữ liệu hiển thị là mã ASCII của các ký tự đó

Page 206: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

20612/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACEVí dụ 9.1; KiÓm tra cê bËn tríc khi göi d÷ liÖu, lÖnh ra LCD; §Æt P1 lµ cæng d÷ liÖu; §Æt P2.0 nèi tíi cæng RS; §Æt P2.1 nèi tíi ch©n R/W; §Æt P2.2 nèi tíi ch©n E

ORGMOV A, # 38H ; Khëi t¹o LCD hai dßng víi ma trËn 5 7ACALL COMMAND ; XuÊt lÖnhMOV A, # 0EH ; DÞch con trá sang ph¶iACALL COMMAND ; XuÊt lÖnhMOV A, # 01H ; Xo¸ lÖnh LCDACALL COMMAND ; XuÊt lÖnhMOV A, # 86H ; DÞch con trá sang ph¶i ACALL COMMAND ; §a con trá vÒ dßng 1 lÖnh 6

MOV A, # “N” ; HiÓn thÞ ch÷ NACALL DATA DISPLAYMOV A, # “0” ; HiÓn thÞ ch÷ 0ACALL DATA DISPLAY

HERE: SJMP HERE ; Chê ë ®©yCOMMAND: ACALL READY ; LCD ®· s½n sµng cha?

MOV P1, A ; XuÊt m· lÖnh

Microcontroller AT89S52

Page 207: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

20712/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

CLR P2.0 ; §Æt RS = 0 cho xuÊt lÖnhCLR P2.1 ; §Æt R/W = 0 ®Ó ghi d÷ liÖu tíi LCDSETB P2.2 ; §Æt E = 1 ®èi víi xung cao xuèng

thÊpCLR P2.2 ; §Æt E = 0 chèt d÷ liÖuRET

DATA-DISPLAY::ACALL READY ; LCD ®· s½n sµng cha?MOV P1, A ; XuÊt d÷ liÖuSETB P2.0 ; §Æt RS = 1 cho xuÊt d÷ liÖu

CLR P2.1 ; §Æt R/W = 0 ®Ó ghi d÷ liÖu ra LCDSETB P2.2 ; §Æt E = 1 ®èi víi xung cao xuèng thÊpCLR P2.2 ; §Æt E = 0 chèt d÷ liÖuRET

DELAY: SETB P1.7 ; LÊy P1.7 lµm cæng vµoCLR P2.0 ; §Æt RS = 0 ®Ó truy cËp thanh ghi lÖnhSETB P2.1 ; §Æt R/W = 1 ®äc thanh ghi lÖnh

Microcontroller AT89S52

Page 208: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

20812/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

; §äc thanh ghi lÖnh vµ kiÓm tra cê lÖnh

BACK: CLR P2.2 ; E = 1 ®èi víi xung cao xuèng thÊp

SETB P2.2 ; E = 0 cho xung cao xuèng thÊp?

JB P1.7, BACK ; §îi ë ®©y cho ®Õn khi cê bËn = 0

RET

END

Microcontroller AT89S52

Page 209: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

20912/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

Ví dụ 9.2; gäi ®é thêi gian trÔ tríc khi göi d÷ liÖu/ lÖnh kÕ tiÕp.; ch©n P1.0 ®Õn P1.7 ®îc nèi tíi ch©n d÷ d÷ liÖu D0 - D7 cña LCD.; Ch©n P2.0 ®îc nèi tíi ch©n RS cña LCD.; Ch©n P2.1 ®îc nèi tíi ch©n R/W cña LCD.; Ch©n P2.2 ®îc nèi ®Õn ch©n E cña LCD.

ORGMOV A, # 38H ; Khëi t¹o LCD hai dßng

víi ma trËn 5 7ACALL COMNWRT ; Gäi ch¬ng tr×nh con lÖnhACALL DELAY ; Cho LCD mét ®é trÔ MOV A, # 0EH ; HiÓn thÞ mµn h×nh vµ con tráACALL COMNWRT ; Gäi ch¬ng tr×nh con lªnhACALL DELAY ; CÊp mét ®é trÔ cho LCD

Microcontroller AT89S52

Page 210: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

21012/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

MOV AM # 01 ; Xo¸ LCDACALL COMNWRT ; Gäi ch¬ng tr×nh con lÖnhACALL DELAY ; T¹o ®é trÔ cho LCDMOV A, # 06H ; DÞch con trá sang ph¶iACALL COMNWRT ; Gäi ch¬ng tr×nh con lÖnhACALL DELAY ; T¹o ®é trÔ cho LCD

MOV AM # 48H ; §a con trá vÒ dßng 1 cét 4ACALL COMNWRT ; Gäi ch¬ng tr×nh con lÖnhACALL DELAY ; T¹o ®é trÔ cho LCDMOV A, # “N” ; HiÓn thÞ ch÷ NACALL DATAWRT ; Gäi ch¬ng tr×nh con hiÓn thij DISPLAYACALL DELAY ; T¹o ®é trÔ cho LCD

MOV AM # “0” ; HiÓn thÞ ch÷ 0ACALL DATAWRT ; Gäi DISPLAY

AGAIN: SJMP AGAIN ; Chê ë ®©yCOMNWRT: ; Göi lÖnh ®Õn LCD

MOV P1, A ; Sao chÐp thanh ghi A ®Õn cæng P1CLR P2.0 ; §Æt RS = 0 ®Ó göi lÖnhCLR P2.1 ; §Æt R/W = 0 ®Ó ghi d÷ liÖuSETB P2.2 ; §Æt E = 1 cho xung caoCLR P2.2 ; §Æt E = 0 cho xung cao xuèng thÊp

Microcontroller AT89S52

Page 211: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

21112/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

RETDATAWRT: ; Ghi d÷ liÖu ra LCD

MOV P1, A ; Sao chÐp thanh ghi A ®Õn cæng P1SETB P2.0 ; §Æt RS = 1 ®Ó göi d÷ liÖu

CLR P2.1 ; §Æt R/W = 0 ®Ó ghiSETB P2.2 ; §Æt E = 1 cho xung caoCLR P2.2 ; §Æt E = 0 cho xung cao xuèng thÊpRET

DELAY: MOV R3, # 50 ; §Æt ®é trÔ 50s hoÆc cao h¬n cho CPU nhanh

HERE2: MOV R4, # 255 ; §Æt R4 = 255HERE: DJNZ R4, HERE ; §îi ë ®©y cho ®Õn khi

R4 = 0DJNZ R3, HERE2RETEND

Microcontroller AT89S52

Page 212: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

21212/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

Các địa chỉ con trỏ với một số LCD

Microcontroller AT89S52

16 2 LCD 80C0

81C0

82C2

83C3

84C4

85C5

86C6

ThroughThrough

8FCF

20 1 LCD 80 81 82 83 Through 93

20 2 LCD 80C0

81C0

82C2

83C3

Through 93Through D3

20 4 LCD 80C094D4

81C095D5

82C296D6

83C397D7

Through 93Through D3Through A7Through E7

20 2 LCD 80C0

81C0

82C2

83C3

Through A7Through E7

Note: All data is inhex.

Page 213: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

21312/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

GIAO TIẾP VỚI ADCSử dụng ADC0804

Microcontroller AT89S52

8051 ADC804

P2.5P2.6

P1.0

P1.7P2.7

D0

D7INTR

GND

A GNDVref/2

CLK INCLK R

VCC

Vin(+)Vin(-)

150pF

5V

10k

10kPOT

Page 214: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

21412/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

Chức năng các chân:1. /CS: chon chip. 2. /RD: Cho phép dữ liều ra trên D0-D73. /WR: Bắt đầu chuyển đổi.4. CLKIN: Xung cho 0804 lấy từ ngoài hoặc

kết hợp với CLKR5. CLKR: Kết hợp với CLK in tạo xung: như

mạch trên: f=1/1.1RC Hz6. /INTR: Báo kết thúc chuyển đổi

Microcontroller AT89S52

Page 215: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

21512/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

7. Vcc=+V. Nếu Vref/2 để hở được dùng làm tham chiếu.

8. Vref/2 là điện áp tham chiếu với quan hệ như sau:

Microcontroller AT89S52

Vref/ 2(V) Vin(V) Step Size (mV)

Hë * 0 ®Õn 5 5/256 = 19.53

2.0 0 ®Õn 4 4/255 = 15.62

1.5 0 ®Õn 3 3/256 = 11.71

1.28 0 ®Õn 2.56 2.56/256 = 10

1.0 0 ®Õn 2 2/256 = 7.81

0.5 0 ®Õn 1 1/256 = 3.90

Page 216: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

21612/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

9. Các chân dữ liệu D0-D710. Các chân đất IC và –Vin nối chung

Microcontroller AT89S52

CS

D0 –D7

Data out

Read it

End conversion

Start conversion

Phân chia thời gian đọc ghi

Page 217: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

21712/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

Các bước lập trình với ADC:BËt CS = 0 vµ göi mét xung thÊp lªn cao tíi ch©n /WR ®Ó b¾t ®Çu chuyÓn ®æi.

Duy tr× hiÓn thÞ ch©n /INTR. NÕu /INTR xuèng thÊp th× viÖc chuyÓn ®æi ®îc hoµn tÊt vµ ta cã thÓ sang bíc kÕ tiÕp. NÕu /INTR cao tiÕp tôc th¨m dß cho ®Õn khi nã xuèng thÊp.

Sau khi ch©n /INTR xuèng thÊp, ta bËt CS = 0 vµ göi mét xung cao - xuèng - thÊp ®Õn ch©n /RD ®Ó lÊy d÷ liÖu ra khái chÝp ADC 804.

Microcontroller AT89S52

Page 218: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

21812/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

Ví dụ 9.3H·y thö nèi ghÐp ADC 804 víi 8051 theo s¬ ®å 12.7. ViÕt mét ch¬ng tr×nh ®Ó hiÓn thÞ ch©n INTR vµ lÊy ®Çu vµo t¬ng tù vµo thanh ghi A. Sau ®ã gäi mét ch¬ng tr×nh chuyÓn ®æi m· Hex ra ASCII vµ mét ch¬ng tr×nh hiÓn thÞ d÷ liÖu. Thùc hiÖn ®iÒu nµy liªn tôc.

Microcontroller AT89S52

Page 219: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

21912/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

Lêi gi¶i:; §Æt P2.6 = WR (b¾t ®Çu chuyÓn ®æi cÇn 1 xung thÊp lªn cao); §Æt ch©n P2.7 = 0 khi kÕt thóc chuyÓn ®æi; §Æt P2.5 = RD (xung cao - xuèng - thÊp sÏ ®äc d÷ liÖu tõ ADC); P1.0 – P1.7 cña ADC 804

MOV P1, # 0FFH ; Chän P1 lµ cæng ®Çu vµoBACK: CLR P2.6 ; §Æt WR = 0

SETB P2.6 ; §Æt WR = 1 ®Ó b¾t ®Çu chuyÓn ®æi

HERE: JB P2.7, HERE ; Chê cho P2.7 to ®Ó kÕt thóc chuyÓn ®æi

CLR P2.5 ; KÕt thóc chuyÓn ®æi, cho phÐp ®äc RD

MOV A, P1 ; §äc d÷ liÖu vµo thanh ghi AACALL CONVERSION ; ChuyÓn ®æi sè Hex ra m·

ASCIIACALL DATA-DISPLAY ; HiÓn thÞ d÷ liÖuSETB P2.5 ; §a RD = 1 ®Ó cho lÇn ®äc

sau.SJMP BACK

Microcontroller AT89S52

Page 220: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

22012/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

ADC 0808/0809 8 kênh tương tự

Microcontroller AT89S52

(MSB)

GND Clock Vcc

ADC808/809

Vref(+)

Vref(-)

CCBSC ALEOE

EOCD7

D0IN0

IN7

Page 221: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

22112/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

Trong ADC 808/809 th× Vrer(+) vµ Vref(-) thiÕt lËp ®iÖn ¸p tham chiÕu. NÕu Vref (-1) = Gnd vµ Vref (+) = 5V th× ®é ph©n d¶i lµ 5V/256 = 19,53mV. Do vËy, ®Ó cã ®é ph©n d¶i 10mV ta cÇn ®Æt Vref (+) = 2,56V vµ Vref (-) = Gnd. Tõ h×nh 12.11 ta thÊy cã ch©n ALE. Ta sö dông c¸c ®Þa chØ A, B vµ C ®Ó chän kªnh ®Çu vµo IN0 – IN7 vµ kÝch ho¹t ch©n ALE ®Ó chèt ®Þa chØ. Ch©n SetComplete ®Ó b¾t ®Çu chuyÓn ®æi (Start Conversion). Ch©n EOC ®îc dïng ®Ó kÕt thóc chuyÓn ®æi (End - Of - Conversion) vµ ch©n OE lµ cho phÐp ®äc ®Çu ra (Out put Enable).

Microcontroller AT89S52

Page 222: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

22212/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACEMicrocontroller AT89S52

Chän kªnh t¬ng tù C B A

IN0 0 0 0

IN1 0 0 1

IN2 0 1 0

IN3 0 1 1

IN4 1 0 0

IN5 1 0 1

IN6 1 1 0

IN7 1 1 1

Page 223: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

22312/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

Các bước lập trình với ADC 08091. Chän mét kªnh t¬ng tù b»ng c¸ch t¹o ®Þa chØ A, B vµ C theo

b¶ng 12.10.2.KÝch ho¹t ch©n ALE (cho phÐp chèt ®Þa chØ Address Latch

Enable). Nã cÇn xung thÊp lªn cao ®Ó chèt ®Þa chØ.3. KÝch ho¹t ch©n SCb»ng xung cao xuèng thÊp ®Ó b¾t ®Çu chuyÓn

®æi.4. HiÓn thÞ OEC ®Ó b¸o kÕt thóc chuyÓn ®æi. §Çu ra cao - xuèng -

thÊp b¸o r»ng d÷ liÖu ®· ®îc chuyÓn ®æi vµ cÇn ph¶i ®îc lÊy ®i.

5. KÝch ho¹t OE cho phÐp ®äc d÷ liÖu ra cña ADC. Mét xung cao xuèng thÊp tíi ch©n OE sÏ ®em d÷ liÖu sè ra khái chÝp ADC.Lu ý r»ng trong ADC 808/809 kh«ng cã ®ång hå riªng vµ do vËy ph¶i cÊp xung ®ång bé ngoµi ®Õn ch©n CLK. MÆc dï tèc ®é chuyÓn ®æi phô thuéc vµo tÇn sè ®ång hå ®îc nèi ®Õn CLK nhng nã kh«ng nhanh h¬n 100ms.

Microcontroller AT89S52

Page 224: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

22412/21/2012 kỹ thuật vi điều khiển

Chương 9: LCD,ADC and SENSOR INTERFACE

GHÉP NỐI SENSOR-ADCSử dụng LM35 đo nhiệt độ

Microcontroller AT89S52

Page 225: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

22512/21/2012 kỹ thuật vi điều khiển

KỸ THUẬT VI ĐIỀU KHIỂN

Chương 10: STEP MOTOR and DAC

INTERFACE

Page 226: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

22612/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

PHỐI GHÉP VỚI ĐỘNG CƠ BƯỚCĐiều khiển góc quay và hướng động cơ

Một số khái niệm cơ bản:Số pha: Số cuộn dây StatoGóc bước (step angle)Số bước để quay 1 vòng=360/goc buoc

Microcontroller AT89S52

Gãc bíc Sè bíc/ vßng

0.72 500

1.8 200

2.0 180

2.5 144

5.0 72

7.5 48

15 24

Page 227: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

22712/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Động cơ bước 4 cuộn STATO

Microcontroller AT89S52

S

2A

S2B

1A

N

N 1B

NOS

Page 228: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

22812/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Bố trí cuộn dây Stato

Microcontroller AT89S52

Page 229: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

22912/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Điều khiển từng pha một (dạng sóng)

Microcontroller AT89S52

Page 230: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

23012/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Điều khiển từng pha một (dạng sóng)

Microcontroller AT89S52

Page 231: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

23112/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Điều khiển 2 pha

Microcontroller AT89S52

Page 232: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

23212/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Điều khiển hai pha

Microcontroller AT89S52

Page 233: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

23312/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Điều khiển nửa pha. Half step

Microcontroller AT89S52

Page 234: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

23412/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Điều khiển nửa pha. Half step

Microcontroller AT89S52

Page 235: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

23512/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Khi điều khiển ta có thể bắt đầu với các chuỗi bất kỳ như trong bảng trên. Nhưng khi đã bắt đầu thì phải theo đúng thứ tự các bước.Tốc độ động cơ được đo bằng số bước/s

Microcontroller AT89S52

Page 236: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

23612/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Chuỗi xung 4 bước và số răng trên ROTOChuçi xung 4 bíc bëi v× sau 4 bíc th× hai cuén d©y gièng

nhau sÏ ®îc bËt “ON”.

VËy ®é dÞch chuyÓn cña 4 bíc nµy sÏ lµ bao nhiªu?

Sau mçi khi thùc hiÖn 4 bíc nµy th× r« to chØ dÞch ®îc mét bíc r¨ng.

Do vËy số răng ROTO=số bước/4=90/góc bước

Microcontroller AT89S52

Page 237: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

23712/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

VÝ dô 10.1:

H·y tÝnh sè lÇn cña chuçi 4 bíc trong b¶ng 1 ph¶i cÊp cho mét ®éng c¬ bíc ®Ó t¹o ra mét dÞch chuyÓn 800 nÕu ®éng c¬ gãc bíc lµ 20

Lêi gi¶i:

Mét ®éng c¬ cã gãc bíc lµ 20 th× ph¶i cã nh÷ng ®Æc tÝnh sau: gãc bíc 20, sè bíc/ vßng lµ 180, sè r¨ng cña r« to lµ 45, ®é dÞch chuyÓn sau mçi chuçi 4 bíc lµ 80. VËy ®Ó dÞch chuyÓn 800 th× cÇn 40 chuçi 4 bíc v× 10 4 2 = 80.

Microcontroller AT89S52

Page 238: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

23812/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Mô hình ghép nối VĐK với động cơ bước

Microcontroller AT89S52

Page 239: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

23912/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Power interface

Microcontroller AT89S52

Page 240: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

24012/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Mô hình ghép nối VĐK với động cơ bước

Microcontroller AT89S52

Page 241: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

24112/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Các động cơ có bốn cuộn dây thường có 5 hoặc 6 đầu ra

Microcontroller AT89S52

Coil 1

Coil 2

common

Coil 4

Coil 3

Coil 1

Coil 2

Common 2

Coil 4

common1

Coil 3

Page 242: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

24212/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Cách xác định các cuộn dây:1. Xác định đầu common: dùng đồng hồ đo điện

trở.2. Xác định vị trí các cuộn dây.- Nối dây common với nguồn- Nối mát một trong 4 dây còn lại sau đó nối lần

lượt 1 trong ba dây còn lại để xem phản ứng của động cơ và ghi lại như bảng sau:

Microcontroller AT89S52

Page 243: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

24312/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE Microcontroller AT89S52

Page 244: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

24412/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

Ví dụ10.4: Viết đoạn chương trình điều khiển động cơ bước chạy như sau. 4 đầu của động cơ được 4 bit P1.0-P1.3 của 89S52 điều khiển:Giải:

ORG 000hMOV A,#00110011BBack: P1,A

RL A; quay trái AAcall delaySjmp Back

Delay: mov R1,#100lap1: Mov R2,#255lap2: DJNZ R2,lap2

DJNZ R1,lap1ret

Microcontroller AT89S52

Làm thế nào để tăng tốc độ động cơ?

Page 245: Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

24512/21/2012 kỹ thuật vi điều khiển

Chương 10: Step motor and DAC INTERFACE

GHÉP NỐI VỚi DACBộ chuyển đổi tín hiệu số sang tương tự

Microcontroller AT89S52