Upload
minh-linh
View
2.486
Download
14
Embed Size (px)
Citation preview
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
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
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
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
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
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
712/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S52Microcontroller AT89S52
H 1.2 Block diagram
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¸
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
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
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
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
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
1412/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S52Khi RESET
Microcontroller AT89S52
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
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
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
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
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
2012/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S5289S52 Instructions
Microcontroller AT89S52
2112/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S5289S52
INSTRUCTIONS
Microcontroller AT89S52
2212/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S5289S52
INSTRUCTIONS
Microcontroller AT89S52
2312/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S5289S52 Instructions
Microcontroller AT89S52
2412/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S5289S52
INSTRUCTIONS
Microcontroller AT89S52
2512/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S5289S52
INSTRUCTIONS
Microcontroller AT89S52
2612/21/2012 kỹ thuật vi điều khiển
KỸ THUẬT VI ĐIỀU KHIỂN
Chương 2AT89S52 Assembly
Programming
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
2812/21/2012 kỹ thuật vi điều khiển
Chương 2: AT89S52 Assembly Programming
RAM
Microcontroller AT89S52
2912/21/2012 kỹ thuật vi điều khiển
Chương 2: AT89S52 Assembly Programming
RAM
Microcontroller AT89S52
3012/21/2012 kỹ thuật vi điều khiển
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
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
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
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
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
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ẻ
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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)
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
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:
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
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)
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
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
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
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
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
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.
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
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
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
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
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
10412/21/2012 kỹ thuật vi điều khiển
Chương 5: Interrupts and ResetsMicrocontroller AT89S52
BẢNG VECTOR NGẮT
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
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
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
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
10912/21/2012 kỹ thuật vi điều khiển
Chương 6: Parallel I/O Ports
Sơ đồ chân
Microcontroller AT89S52
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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.
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
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
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
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
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
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.
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
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.
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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)
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.
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
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
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
17712/21/2012 kỹ thuật vi điều khiển
Chương 8: Serial Communication InterfaceMicrocontroller AT89S52
17812/21/2012 kỹ thuật vi điều khiển
Chương 8: Serial Communication Interface
Internal Baud Rate Generator (BRG)
Microcontroller AT89S52
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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ự đó
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
23912/21/2012 kỹ thuật vi điều khiển
Chương 10: Step motor and DAC INTERFACE
Power interface
Microcontroller AT89S52
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
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
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
24312/21/2012 kỹ thuật vi điều khiển
Chương 10: Step motor and DAC INTERFACE Microcontroller AT89S52
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ơ?
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