SlideShare a Scribd company logo
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
212/21/2012 kỹ thuật vi điều khiển
KỸ THUẬT VI ĐIỀU KHIỂN
NỘI DUNG CHƯƠNG TRÌNH
Chương 1: Introduction to 89S52
Chương 2: AT89S52 Assembly Programming
Chương 3:Data Structures and Subroutine Calls
Chương 4: Operation Modes and Memory Expansion
Chương 5: Interrupts and Resets
Chương 6: Parallel I/O Ports
Chương 7: Timer/Counter Functions
Chương 8: Serial Communication Interface
Chương 9: LCD,ADC and SENSOR Interface
Chươ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 89S52
Máy tính là gi?
Software
Hardware
Cấu trúc chung của máy tính như sau
Microcontroller AT89S52
Control
unit
Arithmetic
logic
unit
Registers
common bus
memory
program
storage
data
storage
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 89S52
The 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 product
The 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 89S52
Features of the AT89S52 microcontroller
8K Bytes of In-System Programmable (ISP) Flash Memory
– Endurance: 1000 Write/Erase Cycles
4.0V to 5.5V Operating Range
Fully Static Operation: 0 Hz to 33 MHz
Three-level Program Memory Lock
256 x 8-bit Internal RAM
32 Programmable I/O Lines
Three 16-bit Timer/Counters
Eight Interrupt Sources
Full Duplex UART Serial Channel
Low-power Idle and Power-down Modes
Interrupt Recovery from Power-down Mode
Watchdog Timer
Dual Data Pointer
Power-off Flag
Fast Programming Time
Flexible ISP Programming (Byte and Page Mode)
Microcontroller AT89S52
712/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S52
Microcontroller AT89S52
H 1.2 Block diagram
812/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S52
Ví 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¹i
M¸y ®iÖn tho¹i
C¸c hÖ thèng an toµn
C¸c bé më cöa ga-ra xe
M¸y tr¶ lêi
M¸y Fax
M¸y tÝnh, Tivi
TruyÒn h×nh c¸p
M¸y quy camera
điÒu khiÓn tõ xa
Trß ch¬i ®iÖn tö
C¸c nh¹c cô ®iÖn tö
M¸y kh©u
điÒu khiÓn ¸nh s¸ng
M¸y nh¾n tin
M¸y ch¬i Football
đå ch¬i
C¸c dông cô tËp thÓ hình
điÖn tho¹i
M¸y tÝnh
C¸c hÖ thèng an
toµn
M¸y Fax
Lß vi sãng
M¸y sao chôp
M¸y in lazer
M¸y in mµu
M¸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êng
HÖ thèng bảo mËt
Điều khiÓn truyÒn tin
Gi¶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 89S52
Semiconductor memory
Random-access memory (RAM)
Read-only memory (ROM):
Random-access memory
Dynamic random-access memory (DRAM)
Static random-access memory (SRAM)
Read-only memory
Mask-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 89S52
Erasable 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 89S52
Software:
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 89S52
High-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 code
Một chương trình được viết bằng ngôn ngữ
cấp cao hoặc assembly
Object code
Kế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 89S52
The 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
PSW
Parity
Non
Over
Lựa chọ băng thanh ghi
RS1:RS0
Zero
Cờ 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 89S52
Khi RESET
Microcontroller AT89S52
1512/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S52
Memory Addressing
Bộ nhớ bao gồm các ô nhớ. Mỗi ô nhớ có
địa chỉ xác định
1 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 89S52
AT89S52 addressing modes
Chú ý:
Chế độ địa chỉ tức thời
MOV A, # 25H ; N¹p gi¸ trÞ 25H vµo thanh ghi A
MOV R4, #62 ; N¹p gi¸ trÞ 62 thËp ph©n vµo R4
MOV B, #40H ; N¹p gi¸ trÞ 40 H vµo thanh ghi B
MOV DPTR, #4521H ; N¹p 4512H vµo con trá d÷ liÖu DPTR
Microcontroller AT89S52
BASE Prefix
Binary
Decima
Hexa
Char
#
@
B
D or nothing
H
‘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 89S52
Chế độ địa chỉ thanh ghi
MOV A, RO ; Sao néi dung thanh ghi RO vµo thanh ghi A
MOV R2, A ; Sao néi dung thanh ghi A vµo thanh ghi R2
ADD A; R5 ; Céng néi dung thanh ghi R5 vµo
Chế độ địa chỉ trực tiếp
1. 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 R0
MOV 56H, A ; Lu néi dung thanh ghi A vµo ng¨n nhí
56H cña RAM
MOV 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 89S52
Chế độ đị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ån
MOV R1, #60H ; Con trá ®Ých
MOV R3, #10 ; Bé ®Õm
BACK: MOV A, @R0 ; LÊy 1byte tõ nguån
MOV @R1, A ; Sao chÐp nã ®Õn ®Ých
INC R0 ; T¨ng con trá nguån
INC R1 ; T¨ng con trá ®Ých
DJNZ 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 89S52
Chế độ đị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 000
MOV DPTR, #300 H ; N¹p ®Þa chØ b¶ng XSQR-TABLE
MOV A, #0FFH ; N¹p A gi¸ trÞ FFH
MOV P1, A ; §Æt cæng P1 lµ ®Çu vµo
BACK: MOV A, P1 ; LÊy gi¸ trÞ X tõ P1
MOVC A, @A + DPTR ; LÊy gi¸ trÞ X tõ b¶ng XSDQ-TABLE
MOV P2, A ; XuÊt nã ra cæng P2
SJMP BACK ; LÆp l¹i
ORG 300H
XSQR - 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 89S52
89S52 Instructions
Microcontroller AT89S52
2112/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S52
89S52
I
N
S
T
R
U
C
T
I
O
N
S
Microcontroller AT89S52
2212/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S52
89S52
I
N
S
T
R
U
C
T
I
O
N
S
Microcontroller AT89S52
2312/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S52
89S52 Instructions
Microcontroller AT89S52
2412/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S52
89S52
I
N
S
T
R
U
C
T
I
O
N
S
Microcontroller AT89S52
2512/21/2012 kỹ thuật vi điều khiển
Chương 1: Introduction to 89S52
89S52
I
N
S
T
R
U
C
T
I
O
N
S
Microcontroller AT89S52
2612/21/2012 kỹ thuật vi điều khiển
KỸ THUẬT VI ĐIỀU KHIỂN
Chương 2
AT89S52 Assembly
Programming
2712/21/2012 kỹ thuật vi điều khiển
Chương 2: AT89S52 Assembly Programming
ROM
Bộ 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 Programming
RAM
Bộ 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 Programming
RAM
Cá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
RAM
Vù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à 05H
JB 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 Programming
RAM
Cá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 B
Thanh 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ỉ 81H
Con 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 Structure
C 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 Programming
Microcontroller AT89S52
Assembly Program
org 000h ; Reset
nop
ljmp Start
org 003h ; Int EX0
reti
org 00bh ; Int Timer0
reti
org 013h ; Int EX1
reti
org 01bh ; Int Timer1
reti
org 023h ; Int
Communication
reti
stack equ 2fh
;=================================
Main Program
;=================================
org 4bh
Start::
; chuong trinh viet o day
Jmp 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 A
Loop_: 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 sample
END
ORG
#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 or
output
Decision
Subroutine
A
B
A
yes
no
On-page
connector
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
EDITOR
PRAGRAM
ASSEMBLER
PRAGRAM
LINKER
PRAGRAM
OH
PRAGRAM
myfile.asm
myfile.lst
myfile.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 = 0
sum = 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ải
N equ 20 ; array count
org 000
Mov R3,45h ; R3=array[0]=array max
Mov R0,#46h ; R0=46h
Loop_:
Mov A,@R0
CJNE A,R3,Next ;
Next:
JC chkend ; nhảy nếu A<R3
Mov R3,A ;
chkend:
CJNE R0,#57h,next1
Next1:
Jnc exit
Inc R0;
jmp loop_ ;
Exit:
Mov 60h,R3 ; save the array max
end
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 0
ptr  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 100h
Mov R3,#0 ; byte thấp =0
Mov R4,#0 ; byte cao = 0
Mov R5,#45h ;
Sum:
Mov A,@R5
JNB ACC.0,next
ADD A,R3
Mov R3,A
Mov A,R4
ADDC A,#0
Mov R4,A
Next:
CJNE R5,58h,exit
INC R5
Jmp sum
Exit:
Mov 61h, R4
Mov 60h, R3
end
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 Calls
Ví 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-1Fh
Và 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-R7
R0-R7
R0-R7
R0-R7
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 1
Xả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ớ RAM
Lú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ình
ret
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 Subroutine
CALL <namesub_>
ACALL <namesub_>
LCALL <namesub_>
Call là lệnh gọi xa
ACall gọi tuyệt đối 2 byte
LCall 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 0
MOV A, #55H ; N¹p Avíi gi¸ trÞ 55H
BACK:
MOV P1, A ; XuÊt gi¸ trÞ trong A ra cæng P1
ACALL DELAY ; Gi÷ chËm
CPL A ; Bï thµnh ghi A
SJMP BACK ; TiÕp tôc thùc hiÖn v« h¹n
; -------- §©y lµ ch¬ng tr×nh con gi÷ chËm DELAY
DELAY:
MOV R5, #0FFH ; N¹p R5 = 255 (hay FFH) lµm cho bé ®Õm
AGAIN: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 0
MAIN: LCALL SUBR-1
LCALL SUBR-2
LCALL 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 3
END ; 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 ORG
002 0000 7455 BACK: MOV A, #55H; N¹p A víi gi¸ trÞ 55H
003 0002 F590 MOV P1, A ; Göi 55H tíi cæng P1
004 0004 120300 LCALL DELAY ; T¹o trÔ thêi gian
005 0007 74AA MOV A, #0AAH ; N¹p A víi gi¸ trÞ AAH
006 0009 F590 MOV P1, A ; Göi AAH tíi cæng P1
007 000B 120300 LCALL DELAY ; T¹o trÔ thêi gian
008 000E 80F0 SJMP BACK ; TiÕp tôc thùc hiÖn
009 0010
010 0010 ; ..................... §©y lµ ch¬ng tr×nh con gi÷ chËm
011 0300 MOV 300H
012 0300 DELAY:
013 0300 7DFF MOV R5, #FFH ; N¹p R5 = 255
014 0302 DDFE AGAIN:DJNZ R5, AGAIN ; Dõng ë ®©y
015 0304 22 RET ; Trë vÒ nguån gäi
016 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ậm
Chu kỳ máy
Fmáy=Fthachanh/12
Tmáy=1/Fmáy
Fthachjanh=4MHz-30MHz
Một lệnh được thực hiện từ 1-4 chu kỳ máy
Mộ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ặp
Thờ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, #55H
AGAIN: MOV P1, A
ACALL DELAY
CPL A
SJMP AGAIN
; -------- Time delay
DELAY: MOV R3, #200
HERE : DJNZR3, HERE
RET
Microcontroller AT89S52
6312/21/2012 kỹ thuật vi điều khiển
Chương 3: Data Structures and Subroutine Calls
Giải
DELAY: MOV R3, #200 1
HERE : DJNZ R3, HERE 2
RET 1
Do vËy tæng thêi gian gi÷ chËm lµ [(200  2) + 1 +
1]  1.085 = 436.17s.
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¸y
DELAY: MOV R3, #250 1
HERE : NOP 1
NOP 1
NOP 1
NOP 1
DJNZ R3, HERE 2
RET 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.0851s = 1627.5s. Céng thªm hai lÖnh ngoµi vßng lÆp ta cã 1627.5s +
1.085s x2= 1629.67s.
Microcontroller AT89S52
6512/21/2012 kỹ thuật vi điều khiển
Chương 3: Data Structures and Subroutine Calls
Ví dụ 3.7: §èi víi mét chu kú m¸y 1.085s h·y tÝnh thêi gian gi÷ chËm trong
ch¬ng tr×nh con sau:
DELAY: chu kú m¸y
MOV R2, #200 1
AGAIN: MOV R3, #250 1
HERE: NOP 1
NOP 1
DJNZ R3, HERE 2
DJNZ R2, AGAIN 2
RET 1
Lêi gi¶i:
§èi víi vßng lÆp HERE ta cã (4  250)  1.085s = 1085s.
Vßng lÆp AGAIN lÆp vßng lÆp HERE 200 lÇn, do vËy thêi gian trÔ lµ 200
 1085s 217000s, nªn ta kh«ng tÝnh tæng phÝ. Tuy nhiªn, c¸c lÖnh “MOV
R3, #250” vµ “DJNZ R2, AGAIN” ë ®Çu vµ cuèi vßng lÆp AGAIN céng (3
 200  1.085s) = 651s vµo thêi gian trÔ vµ kÕt qu¶ ta cã 217000 + 651 =
217651s = 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
SRAM
DRAM
ROM
ROM
PROM
EPROM
EEPROM
FLASH
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 ra
CS/PGM: Chọn vỏ, điều
khiển ghi
D0-D7: Dữ liệu đầu ra
Vpp: Điện áp ghi
EPROM 2716
7012/21/2012 kỹ thuật vi điều khiển
Chương 4: Operation Modes and Memory Expansion
Microcontroller AT89S52
STT Tên IC Chi tiết
1 2704 512x8
2 2808 1Kx8
3 2716 2Kx8
4 2732 4Kx8
5 2764 8Kx8
6 27128 16Kx8
7 27256 32Kx8
8 27512 64Kx8
9 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 Eprom
b. 4K × 4 Eprom
c. 8K × 8 Eprom
d. 16K × 8 Eprom
Trả lời:
cần 512KB=512Kx8=256Kx16
a. Số IC=(256/1) x (16/2)= 2048
b. Số IC=(256/4) x (16/4)= 256
c. Số IC=(256/8) x (16/8)= 64
d. 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 Expansion
Microcontroller AT89S52
Sơ đồ chân
Có 16 chân địa chỉ
A0-A15
Có 8 chân dữ liệu
D0-D7
Chân điều khiển ghi
WR
Chân điều khiển đọc
RD
Châ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 89S52
MemoryMax= 216x8=64KB
Không gian nhớ này được chia thành các block.
Mỗi block là 8KB
Số Block=64/8=8 block
Microcontroller AT89S52
Block.no Address range Block.no Address range
0
1
2
3
0000h-1FFFh
2000h-3FFFh
4000h-5FFFh
6000h-7FFFh
4
5
6
7
8000h-9FFFh
A000h-BFFFh
C000h-DFFFh
E000h-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
E1
E2
E3
A2
A1
A0
O0
O1
O2
O3
O4
O5
O6
O7
74138
1Y0
1Y1
1Y2
1Y3
2Y0
2Y1
2Y2
2Y3
E1
A1
A0
E2
B1
B0
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-3FFF
ROM1: 4000-5FFF
E2PROM: 6000-7FFF
SRAM2: A000-BFFF
ROM2: C000-DFFF
Giải:
Microcontroller AT89S52
The highest three address bits
for each component are:
SRAM1: 001
ROM1: 010
E2
PROM: 011
SRAM2: 101
ROM2: 110
The decoder circuit is:
E1
E2
E3
A2
A1
A0
O0
O1
O2
O3
O4
O5
O6
O7
SRAM1_CS
ROM1_CS
E2
PROM_CS
SRAM2_CS
ROM2_CS
E
A15
A14
A13
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
NC
A12
A7
A6
A5
A4
A3
A2
A1
A0
I/O1
I/O2
I/O3
VSS
VCC
WE
CS2
A8
A9
A11
OE
A10
CS1
I/O8
I/O7
I/O6
I/O5
I/O4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
28
27
26
25
24
23
22
21
20
19
18
17
16
15
8112/21/2012 kỹ thuật vi điều khiển
Chương 4: Operation Modes and Memory Expansion
Microcontroller AT89S52
The HM6264ATiming 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 HM6264ARead 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 Expansion
Microcontroller AT89S52
tWC
tAW
tCW
tCW
tWP
tDH
tWR
tHZ2
Address
CS1
CS2
WE
Din
Figure HM6264AWrite Cycle Timing Diagram
tOW
tAS
- Write data must be valid for tDW before WE goes high
and 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: 000
Hàng 2: 101 Hàng 6: 001
Hàng 3: 110 Hàng 7: 010
Hà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 Expansion
Microcontroller AT89S52
2732
2732
2732
O2
O1
O3
O4
O5
O6
O7
O0
E1
E2
E1
E2
E3
E3
LE
D7-D0
O7-O0
OE
74F373
A11-A0
D0-D7
A12
A13
A14
A0
A1
A2
A1
A0
A2
A15
ALE
AD0-AD7
A8-A11
WR
WD
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ài
MOVX A,@Ri
MOVX A,@dptr
MOVX @Ri,A
MOVX @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 Resets
Basics 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 Interrupts
Hàm ngắt là hàm được CPU thực hiện khi sảy ra ngắt.
Interrupt Maskability
Khi 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 Resets
Cơ 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 ra
Nã 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 Resets
Microcontroller 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¾t
SETB IE.4 ; Cho phÐp ng¾t nèi tiÕp
SETB IE.1 ; Cho phÐp ng¾t Timer1
SETB 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 Timer0
c) 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 Resets
Sử 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 Timer
Lậ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
0003ITO
0
1
IE0
(TCON.3)
INT1
(Pin 3.3)
Level -
tringgered
Edge - triggered
0013IT1
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ức
Cá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.3
to
LED
Vcc
9712/21/2012 kỹ thuật vi điều khiển
Chương 5: Interrupts and Resets
Lời giải:
ORG0000H
LJMP 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 INT1
SETB P1.3 ; BËt ®Ìn LED
MOV R3, # 255 ;
BACK: DJNZ R3, BACK ; Gi÷ ®Ìn LED s¸ng mét lóc
CLR P1.3 ; T¾t ®Ìn LED
RETI ; 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µi
SJMP 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.085s
4 chu tr×nh m¸y (4MC)
4  1.085s
®Õ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ống
Thanh 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 Resets
Lêi gi¶i:
ORG 0000H
LJMP MAIN
; - - Tr×nh phôc vô ng¾t ISR dµnh cho ng¾t INT1 ®Ó bËt ®Ìn LED
ORG 0013H ; Nh¶y ®Õn ®Þa chØ cña tr×nh phôc vô ng¾t INT1
SETB 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óc
CLR 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Ýnh
ORG 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 INT1
HERE: 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.085s
1.085s
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 Resets
Microcontroller 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 9
Có 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
10F
8.2K
RST
30pF
X2
31
EA/Vpp
19
9
18
+
30pF
31
9
EA/Vpp
X1 X1
X2
RST
8.2K
10F
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 Address
decoder
R/W CE
SRAM
CE
ROM
CE
Interface
Chip 1
Interface
Chip 2
CE
From input
device
To output
device
Microprocessor
Data 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 Ports
Có 4 port P0, P1, P2 và P3
Mỗi Port là một cổng 8bit
P0: P0.0 – P0.7
P1: P1.0 – P1.7
P2: P2.0 – P2.7
P3: P3.0 – P3.7
Khi 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 Px
Muốn đọc/ghi tới từng bit ta dùng dạng Px.y
X=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ệu
Muốn cấu hình nó là cổng vào ta dùng lệnh:
MOV P0,#0FFH
Các chân của cổng P0 thường được nối với
điện trở kéo:
Microcontroller AT89S52
Vcc
10K
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
DS5000
8751
8951
Po
rt
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-AD7
Chân EA (chân 31) nối với GND để xác
định VĐK làm việc với ROM ngoài
Châ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-8
Không cần điện trở kéo
Cấu hình làm cổng vào : Mov P1,#0FFh
P1.0 ngõ vào của timer/counter thứ 2
P1.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 – 28
Có 2 chức năng
Chứ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 Ports
PORT P3 từ chân 10-17
Chức năng xuất nhập như các cổng khác
Các chức năng khác
Microcontroller AT89S52
BÝt cña cèng P3 Chøc năng ch©n sè
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.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)
10
11
12
13
14
15
16
17
11612/21/2012 kỹ thuật vi điều khiển
Chương 6: Parallel I/O Ports
Ví 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
X4
X3
X2
X1
X0
inhibit
MC14051
P1.7
P1.5
P1.4
P1.3
P1.2
P1.1
89S52
10KW each
X
C
B
A
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
d
e
f 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 Ports
Ví dụ 6.2
Microcontroller AT89S52
AT89S52
74ALS244
b
c
a
d
e
f g
a
b
c
d
e
f
g
100W
each
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
BCD
digit
segments
g f e d c b a
corresponding
hex number
0 0 1 1 1 1 1 1 $3F
1 0 0 0 0 1 1 0 $06
2 1 0 1 1 0 1 1 $5B
3 1 0 0 1 1 1 1 $4F
4 1 1 0 0 1 1 0 $66
5 1 1 0 1 1 0 1 $6D
6 1 1 1 1 1 0 1 $7D
7 0 0 0 0 1 1 1 $07
8 1 1 1 1 1 1 1 $7F
9 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 Ports
Ghé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
common
cathode
common
cathode
common
cathode
1KW
1KW
1KW
P2.0 P2.1 P2.6
Imax=91mA
100W
12212/21/2012 kỹ thuật vi điều khiển
Chương 6: Parallel I/O Ports
Ví 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è 3
CLR 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 Ports
MOV P2,#0A4h ; XuÊt ra P2 m· cña sè 2
CLR 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è 1
CLR 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 Functions
7.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 Functions
Các thanh ghi cơ sở của bộ định thời
Thanh 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 Functions
Microcontroller 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 Timer
C/T=0 : Dïng nh bé ®Þnh thêi
C/T=1 : Dïng nh bé ®Õm
Nguå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 Functions
Bit 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 Functions
Thanh 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 Functions
Laä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 Functions
C¸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 Functions
Ví duï 7.1 Taïo xung 50% treân chaân P1.5
MOV 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 cao
CPL P1.5 ; Sö dông ch©n P1.5
ACALL DELAY
SJMP HERE ; N¹p l¹i TH, TL
; delay using timer0.
DELAY:
SETB TR0 ; Khëi ®éng bé ®Þnh thêi Timer0
AGAIN: JNB TF0, AGAIN ; HiÓn thÞ cê bé ®Þnh thêi
cho ®Õn khi nã vît qua FFFFH.
CLR TR0 ; Dõng bé Timer
CLR TF0 ; Xo¸ cê bé ®Þnh thêi 0
RET
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 Functions
Ví 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.0592MHz
Giaûi
Bé ®Þ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,085s ®Ó t¹o ra
bé trÔ b»ng sè ®Õm 1,085s.
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,085s = 15,19s cho
nöa chu kú vµ c¶ chu kú lµ T = 2  15,19s = 30, 38s
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 Functions
Caù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.0592s
- 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,085s trong
®ã YYXX lµ c¸c gi¸ trÞ khëi t¹o
cña TH, TL t¬ng øng. Lu ý r»ng
c¸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 NNNNN
sau ®ã lÊy (65536 - NNNNN).1,085s.
13712/21/2012 kỹ thuật vi điều khiển
Chương 7: Timer/Counter Functions
Ví duï 9.3 taïo ñoä treã lôùn
H·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ín
MOV TL1, #08 ; N¹p byte thÊp TL1 = 08
MOV TH1, #08 ; N¹p byte cao TH1 = 01
SETB 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 TF1
DJNZ 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 Functions
LAÄP TRÌNH CHEÁ ÑOÄ 2
Microcontroller AT89S52
XTAL
oscillator
12 TL TF
TF goes high
when FFFF 0
reload
TR TF
Caùc böôùc laäp trình cho cheá ñoä 2
1. 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 Functions
Ví 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ín
ACALL DELAY
CPL P1.0
SJMP AGAIN
DELAY: SETB TR0 ; Khëi ®éng Timer0
BACK: 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, DELAY
RET
T = 2  (250  256  1.085s) = 1.38.88ms vµ f = 72Hz.
Microcontroller AT89S52
14012/21/2012 kỹ thuật vi điều khiển
Chương 7: Timer/Counter Functions
LAÄP TRÌNH CHO CHEÁ ÑOÄ 0
Hoaø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,đich
Cho đế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 Functions
LẬ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 Functions
Mô 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ú 200s 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 Functions
Lê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.085s = 92.
ORG 0000H
LJMP MAIN
ORG 000BH; ISR tạo sóng vuông
CPL P2.1
RETI
ORG 0030H ; Ngay sau ®Þa chØ b¶ng vÐc-t¬ ng¾t
MAIN: 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Öu
MOV TH0, # - 92 ; §Æt TH0 = A4H cho – 92
MOV IE, #82H ; IE = 1000 0010 cho phÐp Timer0
SETB TR0 ; Khëi ®éng bé Timer0
BACK: MOV A, P0 ; NhËn d÷ liÖu vµo tõ cæng P0
MOV P1, A ; ChuyÓn d÷ liÖu ®Õn cæng P1
SJMP BACK ; TiÕp tôc nhËn vµ chuyÓn d÷ liÖu
; Chõng nµo bÞ ng¾t bëi TF0
END
Microcontroller AT89S52
14412/21/2012 kỹ thuật vi điều khiển
Chương 7: Timer/Counter Functions
Một số đặc điểm
Chó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 Functions
Ví 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 1085s vµ møc thÊp
dµi 15s 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 Functions
V× 1085s lµ 1000  1.085s 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 0000H
LJMP MAIN ;
ORG 001BH ; §Þa chØ ng¾t cña Timer1 trong b¶ng vÐc t¬ ng¾t
LJMP 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Õ ®é 1
MOV P0, #0FFH ;
MOV TL1, #018H ; §Æt TL1 = 18 byte thÊp cña - 1000
MOV TH1, #0FCH ; §Æt TH1 = FC byte cao cña - 1000
MOV IE, #88H ; IE = 10001000 cho phÐp ng¾t Timer1
SETB TR1 ; Khëi ®éng bé Timer1
Microcontroller AT89S52
14712/21/2012 kỹ thuật vi điều khiển
Chương 7: Timer/Counter Functions
BACK: MOV A, P0 ; NhËn d÷ liÖu ®Çu vµo ë cæng P0
MOV P1, A ; ChuyÓn d÷ liÖu ®Õn P1
SJMP 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Õ ®é 1
ISR-T1: CLR TR1 ; Dõng bé Timer1
CLR P2.1
MOV R2, #4 ; 2 chu kú m¸y MC (Machine Cycle)
HERE: DJNZ R2, HERE ; 4  2 MC = 8 MC
MOV TL1, #18H ; N¹p l¹i byte thÊp gi¸ trÞ 2 MC
MOV TH1, #0FCH ; N¹p l¹i byte cao gi¸ trÞ 2 MC
SETB TR1 ; Khëi ®éng Timer1 1 MC
SETB P2.1 ; P2.1 = 1 bËt P2.1 trë l¹i cao
RETI ; Trë vÒ ch¬ng tr×nh chÝnh
END
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.085s vµ 14  1.085s = 15.19s.
Microcontroller AT89S52
14812/21/2012 kỹ thuật vi điều khiển
Chương 7: Timer/Counter Functions
Ví dụ 7.6 Tạo xung vuông f=50Hz trên chân P1.2
ORG0
LJMP MAIN
ORG 000BH ; Ch¬ng tr×nh con phôc vô ng¾t cho Timer0
CPL P1.2
MOV TL0, # 00
MOV TH0, # 0DCH
RETI
ORG 30H
; ------------ main program for initialization
MAIN: MOV TMOD, # 00000001B ; Chän Timer0
chÕ ®é 1
MOV TL0,#00H
MOV TH0, # 0DCH
MOV IE, # 82H ; Cho phÐp ng¾t Timer0
SETB TR0
HERE: SJMP HERE
END
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 COUNTER
Sử 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 Functions
Như 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 high
when FFFF 0
overflow flag
TR0
Timer
exterrnal
input
Pin 3.4
TH1 TL1 TF1
TF1 goes high
when 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 Functions
Counter chế độ 2
Microcontroller AT89S52
TL0 TF0
overflow flag
TR0
Timer0
exterrna
l input
Pin 3.4
TF0 goes high
when FF 0
TH0
reload
TL1 TF1
overflow flag
TR1
Timer1
exterrna
l input
Pin 3.5
TF1 goes high
when FF 0
TH1
reload
15212/21/2012 kỹ thuật vi điều khiển
Chương 7: Timer/Counter Functions
Ví 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 xung
SETB 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 Functions
AGAIN: SETB TR0 ; Sao chÐp sè ®Õm TL0
BACK: 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 LCD
ACALL DISLAY ; Thùc hiÖn vßng lÆp nÕu TF = 0
JNB TF0, BACK ; Dõng bé ®Õm 0
CLR TR0 ; Xo¸ cê TF0 = 0
CLR TF0 ; TiÕp tôc thùc hiÖn
SJMP 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 AB
MOV R2, B ; Lu gi÷ sè thÊp
MOV B, #10 ; Chia cho 10 mét lÇn n÷a
DIV AB
ORL A, #30H ; §æi nã vÒ ASCII
MOV R4, A ; Lu ch÷ sè cã nghÜa lín nhÊt MSD
MOV A, B ;
ORL A, #30H ; §æi sè thø hai vÒ ASCII
MOV R3, A ; Lu nã
MOV A, R2
ORL A, #30H ; §æi sè thø ba vÒ ASCII
MOV 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 Functions
Trườ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 Functions
Bit GATE=1? Trong thanh ghi TMOD
Trong phần trên ta đã giả thiết GATE=0
Khi 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 Functions
Bộ timer/Counter 0
Microcontroller AT89S52
XTAL
oscillator
12
T0 Pin
Pin 3.4
Gate
TR0
15712/21/2012 kỹ thuật vi điều khiển
Chương 7: Timer/Counter Functions
Bộ timer/Counter 1
Microcontroller AT89S52
XTAL
oscillator
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 or
terminal
modem modem computer or
terminal
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ột
Nh÷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à 0
Stop 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 Start
bÝtSpace
Stop
bÝt
Mark
d0
Goes 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 độ baud
Các máy tính trước đây tốc độ từ 100-
9600 bps
Các máy tính ngày nay có thể tới
56kbps
Trong 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ếp
RS232 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 1960
Cá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 định
Mức 0 : -25V => -3V
Mứ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 MAX232
Loạ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 Interface
Microcontroller 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 MAX232
Loại 9 chân DP-9
Microcontroller AT89S52
6 9
51
M« t¶ Sè ch©n
1
2
3
4
5
6
7
8
9
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Öu
Dữ liÖu ®îc nhËn
Dữ liÖu ®îc göi
ĐÇu dữ liÖu s½n sµng
ĐÊt cña tÝn hiÖu
Dữ liÖu s½n sµng
Yªu cÇu göi
Xo¸ ®Ó göi
B¸o chu«ng
17112/21/2012 kỹ thuật vi điều khiển
Chương 8: Serial Communication Interface
Microcontroller 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
Tx
Rx
RING
DCD
CTS
RTS
DSR
DTR
GND
Tx
Rx
RING
DCD
CTS
RTS
DSR
DTR
GND
Tx
Rx
RING
DCD
CTS
RTS
DSR
DTR
GND
Tx
Rx
RING
DCD
CTS
RTS
DSR
DTR
GND
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.1
TxD
P3.0
RxD
Max232
8051
Vcc
2
6
7
89
11
10
5
411
10
14
13
T1OUTT1IIN
R1IINR1OUT
T2IIN
R2OUT
T2OUT
R2IIN
Rs232 sideTTL side
15
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.1
TxD
P3.0
RxD
Max232
8051
Vcc
13
1414
12
17
11
15
16
10
18
1920
11
10 3
2 5
4 2
2 5
2
3
1
5
4
T1OUT T1IINT1IIN
R1II
N
R1OU
T
T2IIN
R2OU
T
T2OUT
R2II
N
Rs233 sideTTL side
6 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ẾP
Yê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 89S52
Khi Reset:
Microcontroller AT89S52
17712/21/2012 kỹ thuật vi điều khiển
Chương 8: Serial Communication Interface
Microcontroller 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
BIT
FE/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 bit
Trong 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à RI
Khi 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 RxD
BRL register (9Ah)
Giá trị mặc định 00h
Chứ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 Interface
Cá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 baud
MOV SCON, #A”; TruyÒn 8 bÝt d÷ liÖu, 1 bÝt Stop cho phÐp thu
SETB 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Õp
SJMP 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.2
H·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 baud
MOV SCON, #50H ; TruyÒn 8 bÝt d÷ liÖu, 1 bÝt Stop cho phÐp thu
SETB TR1 ; Khëi ®éng Timer1
AGAIN: MOV A, # "Y" ; TruyÒn ký tù “Y”
ACALL TRANS
MOV A, # "E" ; TruyÒn ký tù “E”
ACALL TRANS
MOV A, # "S" ; TruyÒn ký tù “S”
ACALL TRANS
SJMP 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 SBUF
HERE: 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Õp
RET
Microcontroller AT89S52
18612/21/2012 kỹ thuật vi điều khiển
Chương 8: Serial Communication Interface
Cá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Õt
MOV A, SBUF ; Lu cÊt ký tù vµo thanh A
MOV P1, A ; Göi ra cæng P.1
CLR RI ; S½n sµng nhËn byte kÕ tiÕp
SJMP 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 Interface
Ví 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µo
MOV TMOD, #20H ; Chän bé Timer1, chÕ ®é 2 (tù ®éng n¹p l¹i)
MOV TH1, # 0FAH ; Chän tèc ®é 4800 baud
MOV SCON, #50H ; T¹o khung d÷ liÖu 8 bÝt, 1bÝt Stop cho phÐp
SETB TR1 ; Khëi ®éng bé Timer1
MOV DPTR, #MYDATA ; N¹p con trá ®Õn th«ng b¸o
H - 1: CLR A
MOVC 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 SEND
INC DPTR ; Ch¹y tiÕp
SJMP 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 P2
ACALL TECV ; TruyÒn nã nèi tiÕp
ACALL RECV ; NhËn d÷ liÖu nèi tiÕp
MOV P1, A ; HiÓn thÞ nã ra c¸c ®Òn LED
SJMP B - 1 ; ë l¹i vßng lÆp v« h¹n
; TruyÒn d÷ liÖu nèi tiÕp ACC cã d÷ liÖu
SEND: MOV SBUF, A ; N¹p d÷ liÖu
H- 2: JNB TI, H - 2 ; ë l¹i vßng lÆp v« h¹n
CLR TI ; TruyÒn d÷ liÖu nèi tiÕp
RET ; NhËn d÷ liÖu
; TruyÒn d÷ liÖu nèi tiÕp ACC cã d÷ liÖu
TECV: 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ïng
CLR TI ; S½n sµng cho ký tù míi
RET ; Trë vÒ mêi gäi
; NhËn d÷ liÖu nèi tiÕp trong ACC
RECV: JNB RI, RECV ; §îi ë ®©y nhËn ký tù
MOV A, SBUF ; Lu nã vµo trong ACC
CLR RI ; S½n sµng nhËn ký tù m· tiÕp theo
RET ; Trë vÒ nêi gäi
; Ng¨n xÕp cha th«ng b¸o
MYDATA: DB “Chóng t«i ®· s½n sµng” 0
END
Microcontroller AT89S52
P1
TxD
RxD
P2
To
PC
COM
port
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,PCON
SETB ACC.7
MOV PCON,A
Microcontroller AT89S52
TH1 (thËp ph©n) TH1 (Hex) Tèc ®é baud
SMOD = 0 SMOD = 1
-3
-6
-12
-24
FD
DA
F4
E8
9600
4800
2400
1200
19200
9600
4800
2400
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
TI
0023
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 0
LJMP MAIN
ORG 000BH ; Tr×nh phôc vô ng¾t dµnh cho
Timer0
CPL P3.4 : T¹o xung ë ch©n P3.1
RETI ; Trë vÒ tõ ISR
ORG23H ; Nh¶y ®Õn ®Þa chØ ng¾t truyÒn nèi tiÕp
LJMP SERIAL ; LÊy cæng P1 lµm cæng ®Çu vµo
ORG30H
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 4800
MOV 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è 5kHz
MOV IE, # 10010010B ; Cho phÐp ng¾t nèi tiÕp
SETB TR1 ; Khëi ®éng Timer1
SETB TR0 ; Khëi ®éng Timer0
BACK: MOV A, P1 ; §äc d÷ liÖu tõ cæng P1
MOV SBUF, A ; LÊy mét lÇn b¶n sao d÷ liÖu
MOV P2, A ; Ghi nã vµo cæng P2
SJMP 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µo
MOV A, SBUF ; NÕu kh«ng tiÕp tôc nhËn d÷ liÖu
MOV P0, A ; Göi d÷ liÖu nèi tiÕp ®Õn P0
CLR RI ; Xo¸ cê RI v× 8051 kh«ng lµm ®iÒu nµy
RETI ; 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 ERS
VSS
VEE
VCC
+5v
10K
POT
LCD
8052
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 INTERFACE
Microcontroller 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=1
Khi bit D7=0 ta mới gửi dữ liệu RS=0 và
R/W=0
Thể 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 INTERFACE
Ví 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
ORG
MOV A, # 38H ; Khëi t¹o LCD hai dßng víi ma trËn 5  7
ACALL COMMAND ; XuÊt lÖnh
MOV A, # 0EH ; DÞch con trá sang ph¶i
ACALL COMMAND ; XuÊt lÖnh
MOV A, # 01H ; Xo¸ lÖnh LCD
ACALL COMMAND ; XuÊt lÖnh
MOV 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÷ N
ACALL DATA DISPLAY
MOV A, # “0” ; HiÓn thÞ ch÷ 0
ACALL DATA DISPLAY
HERE: SJMP HERE ; Chê ë ®©y
COMMAND: 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Önh
CLR P2.1 ; §Æt R/W = 0 ®Ó ghi d÷ liÖu tíi LCD
SETB P2.2 ; §Æt E = 1 ®èi víi xung cao xuèng
thÊp
CLR P2.2 ; §Æt E = 0 chèt d÷ liÖu
RET
DATA-DISPLAY::
ACALL READY ; LCD ®· s½n sµng cha?
MOV P1, A ; XuÊt d÷ liÖu
SETB P2.0 ; §Æt RS = 1 cho xuÊt d÷ liÖu
CLR P2.1 ; §Æt R/W = 0 ®Ó ghi d÷ liÖu ra LCD
SETB P2.2 ; §Æt E = 1 ®èi víi xung cao xuèng thÊp
CLR P2.2 ; §Æt E = 0 chèt d÷ liÖu
RET
DELAY:
SETB P1.7 ; LÊy P1.7 lµm cæng vµo
CLR P2.0 ; §Æt RS = 0 ®Ó truy cËp thanh ghi lÖnh
SETB 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.
ORG
MOV A, # 38H ; Khëi t¹o LCD hai dßng
víi ma trËn 5  7
ACALL COMNWRT ; Gäi ch¬ng tr×nh con lÖnh
ACALL 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ªnh
ACALL DELAY ; CÊp mét ®é trÔ cho LCD
Microcontroller AT89S52
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien
Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

More Related Content

What's hot

Giáo trình vi điều khiển avr
Giáo trình vi điều khiển avr Giáo trình vi điều khiển avr
Giáo trình vi điều khiển avr Ky Nguyen Ad
 
Chuong1 tổng quan 8051
Chuong1 tổng quan 8051Chuong1 tổng quan 8051
Chuong1 tổng quan 8051
Đinh Công Thiện Taydo University
 
[Giao trinh] vi dieu-khien_8051 - dh tra vinh
[Giao trinh]   vi dieu-khien_8051 - dh tra vinh[Giao trinh]   vi dieu-khien_8051 - dh tra vinh
[Giao trinh] vi dieu-khien_8051 - dh tra vinh
cry_viem
 
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
quanglocbp
 
Atmel avr
Atmel avrAtmel avr
Atmel avr
Chinh Vo Wili
 
Đề tài: Đo tốc độ động cơ dùng 8051, HAY, 9đ
Đề tài: Đo tốc độ động cơ dùng 8051, HAY, 9đĐề tài: Đo tốc độ động cơ dùng 8051, HAY, 9đ
Đề tài: Đo tốc độ động cơ dùng 8051, HAY, 9đ
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Thiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiều
Thiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiềuThiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiều
Thiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiều
nataliej4
 
Bộ điều khiển lập trình PLC - Điện tử đo lường
Bộ điều khiển lập trình PLC - Điện tử đo lườngBộ điều khiển lập trình PLC - Điện tử đo lường
Bộ điều khiển lập trình PLC - Điện tử đo lường
Chia sẻ tài liệu học tập
 
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PICĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
Công ty TNHH TM-DV Cơ Khí Toàn Phát
 
Những ứng dụng của PLC - bộ môn tự động đo lường
Những ứng dụng của PLC - bộ môn tự động đo lườngNhững ứng dụng của PLC - bộ môn tự động đo lường
Những ứng dụng của PLC - bộ môn tự động đo lường
Chia sẻ tài liệu học tập
 
BGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tínhBGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tínhCao Toa
 
Bao cao vdk_va_pic
Bao cao vdk_va_picBao cao vdk_va_pic
Bao cao vdk_va_pic
Hải Nguyễn
 
Plc nang cao
Plc nang caoPlc nang cao
Plc nang cao
Chau Huy
 
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
quanglocbp
 
Chuong6 hoạt động ngắt
Chuong6 hoạt động ngắtChuong6 hoạt động ngắt
Chuong6 hoạt động ngắt
Đinh Công Thiện Taydo University
 
Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520
Vũ Anh
 

What's hot (18)

Giáo trình vi điều khiển avr
Giáo trình vi điều khiển avr Giáo trình vi điều khiển avr
Giáo trình vi điều khiển avr
 
Chuong1 tổng quan 8051
Chuong1 tổng quan 8051Chuong1 tổng quan 8051
Chuong1 tổng quan 8051
 
[Giao trinh] vi dieu-khien_8051 - dh tra vinh
[Giao trinh]   vi dieu-khien_8051 - dh tra vinh[Giao trinh]   vi dieu-khien_8051 - dh tra vinh
[Giao trinh] vi dieu-khien_8051 - dh tra vinh
 
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
 
Atmel avr
Atmel avrAtmel avr
Atmel avr
 
Avr nang cao
Avr nang caoAvr nang cao
Avr nang cao
 
Đề tài: Đo tốc độ động cơ dùng 8051, HAY, 9đ
Đề tài: Đo tốc độ động cơ dùng 8051, HAY, 9đĐề tài: Đo tốc độ động cơ dùng 8051, HAY, 9đ
Đề tài: Đo tốc độ động cơ dùng 8051, HAY, 9đ
 
Chuong2
Chuong2Chuong2
Chuong2
 
Thiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiều
Thiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiềuThiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiều
Thiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiều
 
Bộ điều khiển lập trình PLC - Điện tử đo lường
Bộ điều khiển lập trình PLC - Điện tử đo lườngBộ điều khiển lập trình PLC - Điện tử đo lường
Bộ điều khiển lập trình PLC - Điện tử đo lường
 
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PICĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
 
Những ứng dụng của PLC - bộ môn tự động đo lường
Những ứng dụng của PLC - bộ môn tự động đo lườngNhững ứng dụng của PLC - bộ môn tự động đo lường
Những ứng dụng của PLC - bộ môn tự động đo lường
 
BGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tínhBGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tính
 
Bao cao vdk_va_pic
Bao cao vdk_va_picBao cao vdk_va_pic
Bao cao vdk_va_pic
 
Plc nang cao
Plc nang caoPlc nang cao
Plc nang cao
 
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
 
Chuong6 hoạt động ngắt
Chuong6 hoạt động ngắtChuong6 hoạt động ngắt
Chuong6 hoạt động ngắt
 
Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520
 

Viewers also liked

Thiết kế hộp phân phối vi sai có vi sai và khớp ma sát điều khiển điện tử
Thiết kế hộp phân phối vi sai có vi sai và khớp ma sát điều khiển điện tửThiết kế hộp phân phối vi sai có vi sai và khớp ma sát điều khiển điện tử
Thiết kế hộp phân phối vi sai có vi sai và khớp ma sát điều khiển điện tử
Leovnuf
 
Cơ sở lý thuyết điều khiển tự động nguyễn văn hòa, 216 trang
Cơ sở lý thuyết điều khiển tự động   nguyễn văn hòa, 216 trangCơ sở lý thuyết điều khiển tự động   nguyễn văn hòa, 216 trang
Cơ sở lý thuyết điều khiển tự động nguyễn văn hòa, 216 trang
Cửa Hàng Vật Tư
 
00 su dung_plc_dieu_khien_he_thong_truyen_dong_trong_robot_cong_nghiep_3002
00 su dung_plc_dieu_khien_he_thong_truyen_dong_trong_robot_cong_nghiep_300200 su dung_plc_dieu_khien_he_thong_truyen_dong_trong_robot_cong_nghiep_3002
00 su dung_plc_dieu_khien_he_thong_truyen_dong_trong_robot_cong_nghiep_3002
Dat Than
 
Dieu khien dong_co_dung_bien_tan_abb
Dieu khien dong_co_dung_bien_tan_abbDieu khien dong_co_dung_bien_tan_abb
Dieu khien dong_co_dung_bien_tan_abbtienle176
 
ở đâY là những mạch ứng dụng tham khảo trong thiết kế mạch nguồn cho mạch như...
ở đâY là những mạch ứng dụng tham khảo trong thiết kế mạch nguồn cho mạch như...ở đâY là những mạch ứng dụng tham khảo trong thiết kế mạch nguồn cho mạch như...
ở đâY là những mạch ứng dụng tham khảo trong thiết kế mạch nguồn cho mạch như...
Dan Vu
 
Davidson County Sales Tax Handouts
Davidson County Sales Tax HandoutsDavidson County Sales Tax Handouts
Davidson County Sales Tax Handouts
PublicFinanceTV
 
FDSeminar Processen Stroomlijnen - Bart De Backer en Joris Vanderlinden - Bar...
FDSeminar Processen Stroomlijnen - Bart De Backer en Joris Vanderlinden - Bar...FDSeminar Processen Stroomlijnen - Bart De Backer en Joris Vanderlinden - Bar...
FDSeminar Processen Stroomlijnen - Bart De Backer en Joris Vanderlinden - Bar...
FDMagazine
 
El inicio de los dinosaurios
El inicio de los dinosauriosEl inicio de los dinosaurios
El inicio de los dinosaurios
paul_edinson
 
GSA Recommendation
GSA RecommendationGSA Recommendation
GSA Recommendation
Charles P. Petit
 
Eurococ en
Eurococ enEurococ en
Eurococ en
Svetlikova
 
Entrevista a reynaldo charres vargas muce 2
Entrevista a reynaldo charres vargas muce 2Entrevista a reynaldo charres vargas muce 2
Entrevista a reynaldo charres vargas muce 2
Reynaldo Charres Vargas
 
Information från Läkemedelsverket #2 2012
Information från Läkemedelsverket #2 2012Information från Läkemedelsverket #2 2012
Information från Läkemedelsverket #2 2012
Läkemedelsverket (Medical Products Agency, Sweden)
 
Upgrade von TYPO3 4.5 auf 6.2 - CertiFUNcation Phantasialand 2015
Upgrade von TYPO3 4.5 auf 6.2 - CertiFUNcation Phantasialand 2015Upgrade von TYPO3 4.5 auf 6.2 - CertiFUNcation Phantasialand 2015
Upgrade von TYPO3 4.5 auf 6.2 - CertiFUNcation Phantasialand 2015
Wolfgang Wagner
 
I ar e-pulache calle-fotografía
I ar e-pulache calle-fotografíaI ar e-pulache calle-fotografía
I ar e-pulache calle-fotografía
Tochy
 
International opps unimi april 2013
International opps unimi april 2013International opps unimi april 2013
International opps unimi april 2013
BonBoard Srl
 
წლიური ანგარიში 2009-2010
წლიური ანგარიში 2009-2010 წლიური ანგარიში 2009-2010
წლიური ანგარიში 2009-2010 civilservicebureau
 
Digital Pulse Summit - A Report From the Front Lines of CEM - Randy Woods, No...
Digital Pulse Summit - A Report From the Front Lines of CEM - Randy Woods, No...Digital Pulse Summit - A Report From the Front Lines of CEM - Randy Woods, No...
Digital Pulse Summit - A Report From the Front Lines of CEM - Randy Woods, No...
Digital Clarity Group
 
Revista de la Fundación Exportar #18
Revista de la Fundación Exportar #18Revista de la Fundación Exportar #18
Revista de la Fundación Exportar #18
Noticias de Exportar
 
Netpeak Agency — SEO and PPC for Business
Netpeak Agency — SEO and PPC for BusinessNetpeak Agency — SEO and PPC for Business
Netpeak Agency — SEO and PPC for Business
Online marketing agency Netpeak
 

Viewers also liked (20)

Thiết kế hộp phân phối vi sai có vi sai và khớp ma sát điều khiển điện tử
Thiết kế hộp phân phối vi sai có vi sai và khớp ma sát điều khiển điện tửThiết kế hộp phân phối vi sai có vi sai và khớp ma sát điều khiển điện tử
Thiết kế hộp phân phối vi sai có vi sai và khớp ma sát điều khiển điện tử
 
Cơ sở lý thuyết điều khiển tự động nguyễn văn hòa, 216 trang
Cơ sở lý thuyết điều khiển tự động   nguyễn văn hòa, 216 trangCơ sở lý thuyết điều khiển tự động   nguyễn văn hòa, 216 trang
Cơ sở lý thuyết điều khiển tự động nguyễn văn hòa, 216 trang
 
V1 08-dieu-khien-qua-trinh
V1 08-dieu-khien-qua-trinhV1 08-dieu-khien-qua-trinh
V1 08-dieu-khien-qua-trinh
 
00 su dung_plc_dieu_khien_he_thong_truyen_dong_trong_robot_cong_nghiep_3002
00 su dung_plc_dieu_khien_he_thong_truyen_dong_trong_robot_cong_nghiep_300200 su dung_plc_dieu_khien_he_thong_truyen_dong_trong_robot_cong_nghiep_3002
00 su dung_plc_dieu_khien_he_thong_truyen_dong_trong_robot_cong_nghiep_3002
 
Dieu khien dong_co_dung_bien_tan_abb
Dieu khien dong_co_dung_bien_tan_abbDieu khien dong_co_dung_bien_tan_abb
Dieu khien dong_co_dung_bien_tan_abb
 
ở đâY là những mạch ứng dụng tham khảo trong thiết kế mạch nguồn cho mạch như...
ở đâY là những mạch ứng dụng tham khảo trong thiết kế mạch nguồn cho mạch như...ở đâY là những mạch ứng dụng tham khảo trong thiết kế mạch nguồn cho mạch như...
ở đâY là những mạch ứng dụng tham khảo trong thiết kế mạch nguồn cho mạch như...
 
Davidson County Sales Tax Handouts
Davidson County Sales Tax HandoutsDavidson County Sales Tax Handouts
Davidson County Sales Tax Handouts
 
FDSeminar Processen Stroomlijnen - Bart De Backer en Joris Vanderlinden - Bar...
FDSeminar Processen Stroomlijnen - Bart De Backer en Joris Vanderlinden - Bar...FDSeminar Processen Stroomlijnen - Bart De Backer en Joris Vanderlinden - Bar...
FDSeminar Processen Stroomlijnen - Bart De Backer en Joris Vanderlinden - Bar...
 
El inicio de los dinosaurios
El inicio de los dinosauriosEl inicio de los dinosaurios
El inicio de los dinosaurios
 
GSA Recommendation
GSA RecommendationGSA Recommendation
GSA Recommendation
 
Eurococ en
Eurococ enEurococ en
Eurococ en
 
Entrevista a reynaldo charres vargas muce 2
Entrevista a reynaldo charres vargas muce 2Entrevista a reynaldo charres vargas muce 2
Entrevista a reynaldo charres vargas muce 2
 
Information från Läkemedelsverket #2 2012
Information från Läkemedelsverket #2 2012Information från Läkemedelsverket #2 2012
Information från Läkemedelsverket #2 2012
 
Upgrade von TYPO3 4.5 auf 6.2 - CertiFUNcation Phantasialand 2015
Upgrade von TYPO3 4.5 auf 6.2 - CertiFUNcation Phantasialand 2015Upgrade von TYPO3 4.5 auf 6.2 - CertiFUNcation Phantasialand 2015
Upgrade von TYPO3 4.5 auf 6.2 - CertiFUNcation Phantasialand 2015
 
I ar e-pulache calle-fotografía
I ar e-pulache calle-fotografíaI ar e-pulache calle-fotografía
I ar e-pulache calle-fotografía
 
International opps unimi april 2013
International opps unimi april 2013International opps unimi april 2013
International opps unimi april 2013
 
წლიური ანგარიში 2009-2010
წლიური ანგარიში 2009-2010 წლიური ანგარიში 2009-2010
წლიური ანგარიში 2009-2010
 
Digital Pulse Summit - A Report From the Front Lines of CEM - Randy Woods, No...
Digital Pulse Summit - A Report From the Front Lines of CEM - Randy Woods, No...Digital Pulse Summit - A Report From the Front Lines of CEM - Randy Woods, No...
Digital Pulse Summit - A Report From the Front Lines of CEM - Randy Woods, No...
 
Revista de la Fundación Exportar #18
Revista de la Fundación Exportar #18Revista de la Fundación Exportar #18
Revista de la Fundación Exportar #18
 
Netpeak Agency — SEO and PPC for Business
Netpeak Agency — SEO and PPC for BusinessNetpeak Agency — SEO and PPC for Business
Netpeak Agency — SEO and PPC for Business
 

Similar to Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

Lập trình C cho 8051
Lập trình C cho 8051Lập trình C cho 8051
Lập trình C cho 8051
chilacaiten
 
Vdk 8051
Vdk 8051 Vdk 8051
Vdk 8051
Hero Dark
 
Giao tiếp máy tính.pdf
Giao tiếp máy tính.pdfGiao tiếp máy tính.pdf
Giao tiếp máy tính.pdf
Man_Ebook
 
Do_an_Den_giao_thong.pdf
Do_an_Den_giao_thong.pdfDo_an_Den_giao_thong.pdf
Do_an_Den_giao_thong.pdf
ThnCht9
 
Đề tài: Thiết kế Hệ Thống Quảng Cáo, HAY, 9đ
Đề tài: Thiết kế Hệ Thống Quảng Cáo, HAY, 9đĐề tài: Thiết kế Hệ Thống Quảng Cáo, HAY, 9đ
Đề tài: Thiết kế Hệ Thống Quảng Cáo, HAY, 9đ
Dịch vụ viết thuê Luận Văn - ZALO 0932091562
 
ky thuat vi xu lychuong4.ppt
ky thuat vi xu lychuong4.pptky thuat vi xu lychuong4.ppt
ky thuat vi xu lychuong4.ppt
ChienNguyenViet
 
Đề tài Lập trình C cho họ vi điều khiển 8051
Đề tài Lập trình C cho họ vi điều khiển 8051Đề tài Lập trình C cho họ vi điều khiển 8051
Đề tài Lập trình C cho họ vi điều khiển 8051
Brooklyn Abbott
 
Viết Ngôn Ngữ Lập Trình 8051 PIC AVR
Viết Ngôn Ngữ Lập Trình 8051 PIC AVRViết Ngôn Ngữ Lập Trình 8051 PIC AVR
Viết Ngôn Ngữ Lập Trình 8051 PIC AVR
Mr Giap
 
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdfBÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
Man_Ebook
 
418 giaotrinh avr
418 giaotrinh avr418 giaotrinh avr
418 giaotrinh avr
anhhoi12345
 
Giaotrinh avr tech24.vn
Giaotrinh avr tech24.vnGiaotrinh avr tech24.vn
Giaotrinh avr tech24.vn
bibibobo2007
 
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Viết thuê báo cáo thực tập giá rẻ
 
Đố Án Thiết Kế, Xây Dựng Hệ Thống Phun Sương Làm Mát Tự Động.doc
Đố Án Thiết Kế, Xây Dựng Hệ Thống Phun Sương Làm Mát Tự Động.docĐố Án Thiết Kế, Xây Dựng Hệ Thống Phun Sương Làm Mát Tự Động.doc
Đố Án Thiết Kế, Xây Dựng Hệ Thống Phun Sương Làm Mát Tự Động.doc
mokoboo56
 
Nguyen van chinh tran duc thang vy duc loi
Nguyen van chinh tran duc thang vy duc loiNguyen van chinh tran duc thang vy duc loi
Nguyen van chinh tran duc thang vy duc loikiencuongk
 
Bao cao do an dieu khien dong co dc
Bao cao do an dieu khien dong co dcBao cao do an dieu khien dong co dc
Bao cao do an dieu khien dong co dcnamnam2005nt
 
Cong nghe tram_tron_be_tong_dung_plc
Cong nghe tram_tron_be_tong_dung_plcCong nghe tram_tron_be_tong_dung_plc
Cong nghe tram_tron_be_tong_dung_plctienle176
 
BÁO CÁO ĐỒ ÁN MÔN HỌC MATRIX LED NHẬP TỪ BÀN PHÍM.pdf
BÁO CÁO ĐỒ ÁN MÔN HỌC MATRIX LED NHẬP TỪ BÀN PHÍM.pdfBÁO CÁO ĐỒ ÁN MÔN HỌC MATRIX LED NHẬP TỪ BÀN PHÍM.pdf
BÁO CÁO ĐỒ ÁN MÔN HỌC MATRIX LED NHẬP TỪ BÀN PHÍM.pdf
Man_Ebook
 
Lập trình cỡ nhỏ - LOGO!
Lập trình cỡ nhỏ - LOGO!Lập trình cỡ nhỏ - LOGO!
Lập trình cỡ nhỏ - LOGO!
Văn Phong Cao
 
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdfTài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
Man_Ebook
 

Similar to Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien (20)

Lập trình C cho 8051
Lập trình C cho 8051Lập trình C cho 8051
Lập trình C cho 8051
 
Vdk 8051
Vdk 8051 Vdk 8051
Vdk 8051
 
Giao tiếp máy tính.pdf
Giao tiếp máy tính.pdfGiao tiếp máy tính.pdf
Giao tiếp máy tính.pdf
 
Do_an_Den_giao_thong.pdf
Do_an_Den_giao_thong.pdfDo_an_Den_giao_thong.pdf
Do_an_Den_giao_thong.pdf
 
Đề tài: Thiết kế Hệ Thống Quảng Cáo, HAY, 9đ
Đề tài: Thiết kế Hệ Thống Quảng Cáo, HAY, 9đĐề tài: Thiết kế Hệ Thống Quảng Cáo, HAY, 9đ
Đề tài: Thiết kế Hệ Thống Quảng Cáo, HAY, 9đ
 
ky thuat vi xu lychuong4.ppt
ky thuat vi xu lychuong4.pptky thuat vi xu lychuong4.ppt
ky thuat vi xu lychuong4.ppt
 
Đề tài Lập trình C cho họ vi điều khiển 8051
Đề tài Lập trình C cho họ vi điều khiển 8051Đề tài Lập trình C cho họ vi điều khiển 8051
Đề tài Lập trình C cho họ vi điều khiển 8051
 
Vi xu ly_4_2
Vi xu ly_4_2Vi xu ly_4_2
Vi xu ly_4_2
 
Viết Ngôn Ngữ Lập Trình 8051 PIC AVR
Viết Ngôn Ngữ Lập Trình 8051 PIC AVRViết Ngôn Ngữ Lập Trình 8051 PIC AVR
Viết Ngôn Ngữ Lập Trình 8051 PIC AVR
 
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdfBÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
 
418 giaotrinh avr
418 giaotrinh avr418 giaotrinh avr
418 giaotrinh avr
 
Giaotrinh avr tech24.vn
Giaotrinh avr tech24.vnGiaotrinh avr tech24.vn
Giaotrinh avr tech24.vn
 
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
 
Đố Án Thiết Kế, Xây Dựng Hệ Thống Phun Sương Làm Mát Tự Động.doc
Đố Án Thiết Kế, Xây Dựng Hệ Thống Phun Sương Làm Mát Tự Động.docĐố Án Thiết Kế, Xây Dựng Hệ Thống Phun Sương Làm Mát Tự Động.doc
Đố Án Thiết Kế, Xây Dựng Hệ Thống Phun Sương Làm Mát Tự Động.doc
 
Nguyen van chinh tran duc thang vy duc loi
Nguyen van chinh tran duc thang vy duc loiNguyen van chinh tran duc thang vy duc loi
Nguyen van chinh tran duc thang vy duc loi
 
Bao cao do an dieu khien dong co dc
Bao cao do an dieu khien dong co dcBao cao do an dieu khien dong co dc
Bao cao do an dieu khien dong co dc
 
Cong nghe tram_tron_be_tong_dung_plc
Cong nghe tram_tron_be_tong_dung_plcCong nghe tram_tron_be_tong_dung_plc
Cong nghe tram_tron_be_tong_dung_plc
 
BÁO CÁO ĐỒ ÁN MÔN HỌC MATRIX LED NHẬP TỪ BÀN PHÍM.pdf
BÁO CÁO ĐỒ ÁN MÔN HỌC MATRIX LED NHẬP TỪ BÀN PHÍM.pdfBÁO CÁO ĐỒ ÁN MÔN HỌC MATRIX LED NHẬP TỪ BÀN PHÍM.pdf
BÁO CÁO ĐỒ ÁN MÔN HỌC MATRIX LED NHẬP TỪ BÀN PHÍM.pdf
 
Lập trình cỡ nhỏ - LOGO!
Lập trình cỡ nhỏ - LOGO!Lập trình cỡ nhỏ - LOGO!
Lập trình cỡ nhỏ - LOGO!
 
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdfTài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
 

More from tiểu minh

Đề cương môn chính trị đợt 2.2017docx
Đề cương môn chính trị đợt 2.2017docxĐề cương môn chính trị đợt 2.2017docx
Đề cương môn chính trị đợt 2.2017docx
tiểu minh
 
Bài giảng chính trị - hệ trung cấp
Bài giảng chính trị - hệ trung cấpBài giảng chính trị - hệ trung cấp
Bài giảng chính trị - hệ trung cấp
tiểu minh
 
Vận dụng địa tô
Vận dụng địa tôVận dụng địa tô
Vận dụng địa tô
tiểu minh
 
Vai trò của đất đai
Vai trò của đất đaiVai trò của đất đai
Vai trò của đất đai
tiểu minh
 
Trường đại học kinh tế quốc dân
Trường đại học kinh tế quốc dân              Trường đại học kinh tế quốc dân
Trường đại học kinh tế quốc dân
tiểu minh
 
Thông tin dự tuyển
Thông tin dự tuyểnThông tin dự tuyển
Thông tin dự tuyển
tiểu minh
 
Tong ket 2009
Tong ket 2009Tong ket 2009
Tong ket 2009
tiểu minh
 
Tóm tắt địa tô
Tóm tắt địa tôTóm tắt địa tô
Tóm tắt địa tô
tiểu minh
 
Tài liệu định kèm
Tài liệu định kèmTài liệu định kèm
Tài liệu định kèm
tiểu minh
 
Quy hoachsdd yen
Quy hoachsdd yenQuy hoachsdd yen
Quy hoachsdd yen
tiểu minh
 
Quy hoạch
Quy hoạchQuy hoạch
Quy hoạch
tiểu minh
 
Phieuthongtincanhan nguyenhaiyen
Phieuthongtincanhan nguyenhaiyenPhieuthongtincanhan nguyenhaiyen
Phieuthongtincanhan nguyenhaiyen
tiểu minh
 
Phieu hoi cong chung
Phieu hoi cong chungPhieu hoi cong chung
Phieu hoi cong chung
tiểu minh
 
Ma tran
Ma tranMa tran
Ma tran
tiểu minh
 
Đề Cương đề án môn học
Đề Cương đề án môn họcĐề Cương đề án môn học
Đề Cương đề án môn học
tiểu minh
 
Đầu tư
Đầu tưĐầu tư
Đầu tư
tiểu minh
 
Bai tap-xdddcn
Bai tap-xdddcnBai tap-xdddcn
Bai tap-xdddcn
tiểu minh
 
Bài thiên văn
Bài thiên vănBài thiên văn
Bài thiên văn
tiểu minh
 
Bài tập môn thuế nhà nước
Bài tập môn thuế nhà nướcBài tập môn thuế nhà nước
Bài tập môn thuế nhà nước
tiểu minh
 
Bài tập nghiên cứu
Bài tập nghiên cứuBài tập nghiên cứu
Bài tập nghiên cứu
tiểu minh
 

More from tiểu minh (20)

Đề cương môn chính trị đợt 2.2017docx
Đề cương môn chính trị đợt 2.2017docxĐề cương môn chính trị đợt 2.2017docx
Đề cương môn chính trị đợt 2.2017docx
 
Bài giảng chính trị - hệ trung cấp
Bài giảng chính trị - hệ trung cấpBài giảng chính trị - hệ trung cấp
Bài giảng chính trị - hệ trung cấp
 
Vận dụng địa tô
Vận dụng địa tôVận dụng địa tô
Vận dụng địa tô
 
Vai trò của đất đai
Vai trò của đất đaiVai trò của đất đai
Vai trò của đất đai
 
Trường đại học kinh tế quốc dân
Trường đại học kinh tế quốc dân              Trường đại học kinh tế quốc dân
Trường đại học kinh tế quốc dân
 
Thông tin dự tuyển
Thông tin dự tuyểnThông tin dự tuyển
Thông tin dự tuyển
 
Tong ket 2009
Tong ket 2009Tong ket 2009
Tong ket 2009
 
Tóm tắt địa tô
Tóm tắt địa tôTóm tắt địa tô
Tóm tắt địa tô
 
Tài liệu định kèm
Tài liệu định kèmTài liệu định kèm
Tài liệu định kèm
 
Quy hoachsdd yen
Quy hoachsdd yenQuy hoachsdd yen
Quy hoachsdd yen
 
Quy hoạch
Quy hoạchQuy hoạch
Quy hoạch
 
Phieuthongtincanhan nguyenhaiyen
Phieuthongtincanhan nguyenhaiyenPhieuthongtincanhan nguyenhaiyen
Phieuthongtincanhan nguyenhaiyen
 
Phieu hoi cong chung
Phieu hoi cong chungPhieu hoi cong chung
Phieu hoi cong chung
 
Ma tran
Ma tranMa tran
Ma tran
 
Đề Cương đề án môn học
Đề Cương đề án môn họcĐề Cương đề án môn học
Đề Cương đề án môn học
 
Đầu tư
Đầu tưĐầu tư
Đầu tư
 
Bai tap-xdddcn
Bai tap-xdddcnBai tap-xdddcn
Bai tap-xdddcn
 
Bài thiên văn
Bài thiên vănBài thiên văn
Bài thiên văn
 
Bài tập môn thuế nhà nước
Bài tập môn thuế nhà nướcBài tập môn thuế nhà nước
Bài tập môn thuế nhà nước
 
Bài tập nghiên cứu
Bài tập nghiên cứuBài tập nghiên cứu
Bài tập nghiên cứu
 

Ky thuat vi dieu khien ----- Thiet ke he thong voi vi dieu khien

  • 1. 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
  • 2. 212/21/2012 kỹ thuật vi điều khiển KỸ THUẬT VI ĐIỀU KHIỂN NỘI DUNG CHƯƠNG TRÌNH Chương 1: Introduction to 89S52 Chương 2: AT89S52 Assembly Programming Chương 3:Data Structures and Subroutine Calls Chương 4: Operation Modes and Memory Expansion Chương 5: Interrupts and Resets Chương 6: Parallel I/O Ports Chương 7: Timer/Counter Functions Chương 8: Serial Communication Interface Chương 9: LCD,ADC and SENSOR Interface Chương 10: Step motor and DAC Interface
  • 3. 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
  • 4. 412/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 Máy tính là gi? Software Hardware Cấu trúc chung của máy tính như sau Microcontroller AT89S52 Control unit Arithmetic logic unit Registers common bus memory program storage data storage output unit input unit Figure 1.1 Computer organization
  • 5. 512/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 The 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 product The Microcontroller (bộ vi điều khiển) The processor and peripheral functions implemented on one VLSI chip Microcontroller AT89S52
  • 6. 612/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 Features of the AT89S52 microcontroller 8K Bytes of In-System Programmable (ISP) Flash Memory – Endurance: 1000 Write/Erase Cycles 4.0V to 5.5V Operating Range Fully Static Operation: 0 Hz to 33 MHz Three-level Program Memory Lock 256 x 8-bit Internal RAM 32 Programmable I/O Lines Three 16-bit Timer/Counters Eight Interrupt Sources Full Duplex UART Serial Channel Low-power Idle and Power-down Modes Interrupt Recovery from Power-down Mode Watchdog Timer Dual Data Pointer Power-off Flag Fast Programming Time Flexible ISP Programming (Byte and Page Mode) Microcontroller AT89S52
  • 7. 712/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 Microcontroller AT89S52 H 1.2 Block diagram
  • 8. 812/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 Ví 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¹i M¸y ®iÖn tho¹i C¸c hÖ thèng an toµn C¸c bé më cöa ga-ra xe M¸y tr¶ lêi M¸y Fax M¸y tÝnh, Tivi TruyÒn h×nh c¸p M¸y quy camera điÒu khiÓn tõ xa Trß ch¬i ®iÖn tö C¸c nh¹c cô ®iÖn tö M¸y kh©u điÒu khiÓn ¸nh s¸ng M¸y nh¾n tin M¸y ch¬i Football đå ch¬i C¸c dông cô tËp thÓ hình điÖn tho¹i M¸y tÝnh C¸c hÖ thèng an toµn M¸y Fax Lß vi sãng M¸y sao chôp M¸y in lazer M¸y in mµu M¸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êng HÖ thèng bảo mËt Điều khiÓn truyÒn tin Gi¶i trÝ ĐiÒu hoµ nhiÖt ®é Më cöa kh«ng cÇn chìa kho¸
  • 9. 912/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 Semiconductor memory Random-access memory (RAM) Read-only memory (ROM): Random-access memory Dynamic random-access memory (DRAM) Static random-access memory (SRAM) Read-only memory Mask-programmed read-only memory (MROM) Programmable read-only memory (PROM) Microcontroller AT89S52
  • 10. 1012/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 Erasable programmable ROM (EPROM) Electrically erasable programmable ROM (EEPROM) Flash memory Microcontroller AT89S52
  • 11. 1112/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 Software: 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
  • 12. 1212/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 High-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 code Một chương trình được viết bằng ngôn ngữ cấp cao hoặc assembly Object code Kết quả của một chương trình dịch ra dạng assembler Microcontroller AT89S52
  • 13. 1312/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 The 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 PSW Parity Non Over Lựa chọ băng thanh ghi RS1:RS0 Zero Cờ nhớ phụ Cờ nhớ 7 0 R0-R7 7 0 7 0 IP SP
  • 14. 1412/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 Khi RESET Microcontroller AT89S52
  • 15. 1512/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 Memory Addressing Bộ nhớ bao gồm các ô nhớ. Mỗi ô nhớ có địa chỉ xác định 1 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
  • 16. 1612/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 AT89S52 addressing modes Chú ý: Chế độ địa chỉ tức thời MOV A, # 25H ; N¹p gi¸ trÞ 25H vµo thanh ghi A MOV R4, #62 ; N¹p gi¸ trÞ 62 thËp ph©n vµo R4 MOV B, #40H ; N¹p gi¸ trÞ 40 H vµo thanh ghi B MOV DPTR, #4521H ; N¹p 4512H vµo con trá d÷ liÖu DPTR Microcontroller AT89S52 BASE Prefix Binary Decima Hexa Char # @ B D or nothing H ‘xxx’ Trực tiếp Địa chỉ gián tiếp
  • 17. 1712/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 Chế độ địa chỉ thanh ghi MOV A, RO ; Sao néi dung thanh ghi RO vµo thanh ghi A MOV R2, A ; Sao néi dung thanh ghi A vµo thanh ghi R2 ADD A; R5 ; Céng néi dung thanh ghi R5 vµo Chế độ địa chỉ trực tiếp 1. 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 R0 MOV 56H, A ; Lu néi dung thanh ghi A vµo ng¨n nhí 56H cña RAM MOV R4, 7FH ; ChuyÓn n«i dung ng¨nnhí 7FH cña RAM vµo R4 Microcontroller AT89S52
  • 18. 1812/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 Chế độ đị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ån MOV R1, #60H ; Con trá ®Ých MOV R3, #10 ; Bé ®Õm BACK: MOV A, @R0 ; LÊy 1byte tõ nguån MOV @R1, A ; Sao chÐp nã ®Õn ®Ých INC R0 ; T¨ng con trá nguån INC R1 ; T¨ng con trá ®Ých DJNZ 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
  • 19. 1912/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 Chế độ đị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 000 MOV DPTR, #300 H ; N¹p ®Þa chØ b¶ng XSQR-TABLE MOV A, #0FFH ; N¹p A gi¸ trÞ FFH MOV P1, A ; §Æt cæng P1 lµ ®Çu vµo BACK: MOV A, P1 ; LÊy gi¸ trÞ X tõ P1 MOVC A, @A + DPTR ; LÊy gi¸ trÞ X tõ b¶ng XSDQ-TABLE MOV P2, A ; XuÊt nã ra cæng P2 SJMP BACK ; LÆp l¹i ORG 300H XSQR - TABLE: DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 END Microcontroller AT89S52
  • 20. 2012/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 89S52 Instructions Microcontroller AT89S52
  • 21. 2112/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 89S52 I N S T R U C T I O N S Microcontroller AT89S52
  • 22. 2212/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 89S52 I N S T R U C T I O N S Microcontroller AT89S52
  • 23. 2312/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 89S52 Instructions Microcontroller AT89S52
  • 24. 2412/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 89S52 I N S T R U C T I O N S Microcontroller AT89S52
  • 25. 2512/21/2012 kỹ thuật vi điều khiển Chương 1: Introduction to 89S52 89S52 I N S T R U C T I O N S Microcontroller AT89S52
  • 26. 2612/21/2012 kỹ thuật vi điều khiển KỸ THUẬT VI ĐIỀU KHIỂN Chương 2 AT89S52 Assembly Programming
  • 27. 2712/21/2012 kỹ thuật vi điều khiển Chương 2: AT89S52 Assembly Programming ROM Bộ 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
  • 28. 2812/21/2012 kỹ thuật vi điều khiển Chương 2: AT89S52 Assembly Programming RAM Microcontroller AT89S52
  • 29. 2912/21/2012 kỹ thuật vi điều khiển Chương 2: AT89S52 Assembly Programming RAM Microcontroller AT89S52
  • 30. 3012/21/2012 kỹ thuật vi điều khiển
  • 31. 3112/21/2012 kỹ thuật vi điều khiển Chương 2: AT89S52 Assembly Programming RAM Bộ 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
  • 32. 3212/21/2012 kỹ thuật vi điều khiển Chương 2: AT89S52 Assembly Programming RAM Cá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
  • 33. 3312/21/2012 kỹ thuật vi điều khiển Chương 2: AT89S52 Assembly Programming RAM Vù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à 05H JB 05H,nhan01 ;>>> lệnh này liên quan đến trạng thái của bit nhớ có địa chỉ 05H Microcontroller AT89S52
  • 34. 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
  • 35. 3512/21/2012 kỹ thuật vi điều khiển Chương 2: AT89S52 Assembly Programming RAM Cá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 B Thanh 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ỉ 81H Con 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
  • 36. 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ẻ
  • 37. 3712/21/2012 kỹ thuật vi điều khiển Chương 2: AT89S52 Assembly Programming Assembly Program Structure C 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
  • 38. 3812/21/2012 kỹ thuật vi điều khiển Chương 2: AT89S52 Assembly Programming Microcontroller AT89S52 Assembly Program org 000h ; Reset nop ljmp Start org 003h ; Int EX0 reti org 00bh ; Int Timer0 reti org 013h ; Int EX1 reti org 01bh ; Int Timer1 reti org 023h ; Int Communication reti stack equ 2fh ;================================= Main Program ;================================= org 4bh Start:: ; chuong trinh viet o day Jmp Start ;================================= ; Cac chuong trinh con viet o day ;================================= end.
  • 39. 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 A Loop_: DJNZ R0,Loop ; Giảm R0 đi 1 và ;nhảy đến nhã loop khi R0<>0 Microcontroller AT89S52 Label operation operand ; comment
  • 40. 4012/21/2012 kỹ thuật vi điều khiển Chương 2: AT89S52 Assembly Programming Assembler Directives -- a sample END ORG #DEFINE #define <label> <expression> EQU <label> EQU <expression> [<comment>] Microcontroller AT89S52
  • 41. 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 or output Decision Subroutine A B A yes no On-page connector Off-page connector
  • 42. 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 EDITOR PRAGRAM ASSEMBLER PRAGRAM LINKER PRAGRAM OH PRAGRAM myfile.asm myfile.lst myfile.obj other obj file myfile.abs myfile.hex
  • 43. 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 = 0 sum = 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
  • 44. 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
  • 45. 4512/21/2012 kỹ thuật vi điều khiển Chương 2: AT89S52 Assembly Programming Giải N equ 20 ; array count org 000 Mov R3,45h ; R3=array[0]=array max Mov R0,#46h ; R0=46h Loop_: Mov A,@R0 CJNE A,R3,Next ; Next: JC chkend ; nhảy nếu A<R3 Mov R3,A ; chkend: CJNE R0,#57h,next1 Next1: Jnc exit Inc R0; jmp loop_ ; Exit: Mov 60h,R3 ; save the array max end Microcontroller AT89S52 Cần lưu ý lệnh CJNE; DES>SRC Cy=0, DES<SRC Cy=1
  • 46. 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 0 ptr  45 bit 0 of mem[ptr] = 0? sum  sum + [mem[ptr]] no ptr = 58h?ptr  ptr + 1 Stop no yes
  • 47. 4712/21/2012 kỹ thuật vi điều khiển Chương 2: AT89S52 Assembly Programming Giải: Org 100h Mov R3,#0 ; byte thấp =0 Mov R4,#0 ; byte cao = 0 Mov R5,#45h ; Sum: Mov A,@R5 JNB ACC.0,next ADD A,R3 Mov R3,A Mov A,R4 ADDC A,#0 Mov R4,A Next: CJNE R5,58h,exit INC R5 Jmp sum Exit: Mov 61h, R4 Mov 60h, R3 end Microcontroller AT89S52
  • 48. 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
  • 49. 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
  • 50. 5012/21/2012 kỹ thuật vi điều khiển Chương 3: Data Structures and Subroutine Calls Ví 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
  • 51. 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
  • 52. 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-1Fh Và 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
  • 53. 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-R7 R0-R7 R0-R7 R0-R7 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
  • 54. 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 1 Xả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ớ RAM Lúc đó ta phải thay địa chỉ sử dụng của RAM bằng cách “MOV SP,#xx” Microcontroller AT89S52
  • 55. 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ình ret Microcontroller AT89S52
  • 56. 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 Subroutine CALL <namesub_> ACALL <namesub_> LCALL <namesub_> Call là lệnh gọi xa ACall gọi tuyệt đối 2 byte LCall gọi 3 byte Microcontroller AT89S52
  • 57. 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
  • 58. 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 0 MOV A, #55H ; N¹p Avíi gi¸ trÞ 55H BACK: MOV P1, A ; XuÊt gi¸ trÞ trong A ra cæng P1 ACALL DELAY ; Gi÷ chËm CPL A ; Bï thµnh ghi A SJMP BACK ; TiÕp tôc thùc hiÖn v« h¹n ; -------- §©y lµ ch¬ng tr×nh con gi÷ chËm DELAY DELAY: MOV R5, #0FFH ; N¹p R5 = 255 (hay FFH) lµm cho bé ®Õm AGAIN:DJNZ R5, AGAIN ; Dõng ë ®©y cho ®Õn khi R5 = 0 RET ; Trë vÒ END ; KÕt thóc Microcontroller AT89S52
  • 59. 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 0 MAIN: LCALL SUBR-1 LCALL SUBR-2 LCALL 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 3 END ; end of the asm file Microcontroller AT89S52
  • 60. 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 ORG 002 0000 7455 BACK: MOV A, #55H; N¹p A víi gi¸ trÞ 55H 003 0002 F590 MOV P1, A ; Göi 55H tíi cæng P1 004 0004 120300 LCALL DELAY ; T¹o trÔ thêi gian 005 0007 74AA MOV A, #0AAH ; N¹p A víi gi¸ trÞ AAH 006 0009 F590 MOV P1, A ; Göi AAH tíi cæng P1 007 000B 120300 LCALL DELAY ; T¹o trÔ thêi gian 008 000E 80F0 SJMP BACK ; TiÕp tôc thùc hiÖn 009 0010 010 0010 ; ..................... §©y lµ ch¬ng tr×nh con gi÷ chËm 011 0300 MOV 300H 012 0300 DELAY: 013 0300 7DFF MOV R5, #FFH ; N¹p R5 = 255 014 0302 DDFE AGAIN:DJNZ R5, AGAIN ; Dõng ë ®©y 015 0304 22 RET ; Trë vÒ nguån gäi 016 0305 END ; KÕt thóc n¹p tin hîp ng÷ Microcontroller AT89S52
  • 61. 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ậm Chu kỳ máy Fmáy=Fthachanh/12 Tmáy=1/Fmáy Fthachjanh=4MHz-30MHz Một lệnh được thực hiện từ 1-4 chu kỳ máy Mộ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ặp Thời gian trễ chủ yếu ở vòng lặp Microcontroller AT89S52
  • 62. 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, #55H AGAIN: MOV P1, A ACALL DELAY CPL A SJMP AGAIN ; -------- Time delay DELAY: MOV R3, #200 HERE : DJNZR3, HERE RET Microcontroller AT89S52
  • 63. 6312/21/2012 kỹ thuật vi điều khiển Chương 3: Data Structures and Subroutine Calls Giải DELAY: MOV R3, #200 1 HERE : DJNZ R3, HERE 2 RET 1 Do vËy tæng thêi gian gi÷ chËm lµ [(200  2) + 1 + 1]  1.085 = 436.17s. 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
  • 64. 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¸y DELAY: MOV R3, #250 1 HERE : NOP 1 NOP 1 NOP 1 NOP 1 DJNZ R3, HERE 2 RET 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.0851s = 1627.5s. Céng thªm hai lÖnh ngoµi vßng lÆp ta cã 1627.5s + 1.085s x2= 1629.67s. Microcontroller AT89S52
  • 65. 6512/21/2012 kỹ thuật vi điều khiển Chương 3: Data Structures and Subroutine Calls Ví dụ 3.7: §èi víi mét chu kú m¸y 1.085s h·y tÝnh thêi gian gi÷ chËm trong ch¬ng tr×nh con sau: DELAY: chu kú m¸y MOV R2, #200 1 AGAIN: MOV R3, #250 1 HERE: NOP 1 NOP 1 DJNZ R3, HERE 2 DJNZ R2, AGAIN 2 RET 1 Lêi gi¶i: §èi víi vßng lÆp HERE ta cã (4  250)  1.085s = 1085s. Vßng lÆp AGAIN lÆp vßng lÆp HERE 200 lÇn, do vËy thêi gian trÔ lµ 200  1085s 217000s, nªn ta kh«ng tÝnh tæng phÝ. Tuy nhiªn, c¸c lÖnh “MOV R3, #250” vµ “DJNZ R2, AGAIN” ë ®Çu vµ cuèi vßng lÆp AGAIN céng (3  200  1.085s) = 651s vµo thêi gian trÔ vµ kÕt qu¶ ta cã 217000 + 651 = 217651s = 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
  • 66. 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)
  • 67. 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 SRAM DRAM ROM ROM PROM EPROM EEPROM FLASH Microcontroller AT89S52
  • 68. 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
  • 69. 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 ra CS/PGM: Chọn vỏ, điều khiển ghi D0-D7: Dữ liệu đầu ra Vpp: Điện áp ghi EPROM 2716
  • 70. 7012/21/2012 kỹ thuật vi điều khiển Chương 4: Operation Modes and Memory Expansion Microcontroller AT89S52 STT Tên IC Chi tiết 1 2704 512x8 2 2808 1Kx8 3 2716 2Kx8 4 2732 4Kx8 5 2764 8Kx8 6 27128 16Kx8 7 27256 32Kx8 8 27512 64Kx8 9 271024 128Kx8 Một số EPROM họ 27xxx
  • 71. 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 Eprom b. 4K × 4 Eprom c. 8K × 8 Eprom d. 16K × 8 Eprom Trả lời: cần 512KB=512Kx8=256Kx16 a. Số IC=(256/1) x (16/2)= 2048 b. Số IC=(256/4) x (16/4)= 256 c. Số IC=(256/8) x (16/8)= 64 d. Số IC=(256/16) x (16/8)= 32 Microcontroller AT89S52
  • 72. 7212/21/2012 kỹ thuật vi điều khiển Chương 4: Operation Modes and Memory Expansion Microcontroller AT89S52 Sơ đồ chân Có 16 chân địa chỉ A0-A15 Có 8 chân dữ liệu D0-D7 Chân điều khiển ghi WR Chân điều khiển đọc RD Chân chon chế độ ALE/PROG
  • 73. 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 89S52 MemoryMax= 216x8=64KB Không gian nhớ này được chia thành các block. Mỗi block là 8KB Số Block=64/8=8 block Microcontroller AT89S52 Block.no Address range Block.no Address range 0 1 2 3 0000h-1FFFh 2000h-3FFFh 4000h-5FFFh 6000h-7FFFh 4 5 6 7 8000h-9FFFh A000h-BFFFh C000h-DFFFh E000h-FFFFh
  • 74. 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 E1 E2 E3 A2 A1 A0 O0 O1 O2 O3 O4 O5 O6 O7 74138 1Y0 1Y1 1Y2 1Y3 2Y0 2Y1 2Y2 2Y3 E1 A1 A0 E2 B1 B0 74139
  • 75. 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-3FFF ROM1: 4000-5FFF E2PROM: 6000-7FFF SRAM2: A000-BFFF ROM2: C000-DFFF Giải: Microcontroller AT89S52 The highest three address bits for each component are: SRAM1: 001 ROM1: 010 E2 PROM: 011 SRAM2: 101 ROM2: 110 The decoder circuit is: E1 E2 E3 A2 A1 A0 O0 O1 O2 O3 O4 O5 O6 O7 SRAM1_CS ROM1_CS E2 PROM_CS SRAM2_CS ROM2_CS E A15 A14 A13
  • 76. 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
  • 77. 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
  • 78. 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
  • 79. 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
  • 80. 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 NC A12 A7 A6 A5 A4 A3 A2 A1 A0 I/O1 I/O2 I/O3 VSS VCC WE CS2 A8 A9 A11 OE A10 CS1 I/O8 I/O7 I/O6 I/O5 I/O4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 24 23 22 21 20 19 18 17 16 15
  • 81. 8112/21/2012 kỹ thuật vi điều khiển Chương 4: Operation Modes and Memory Expansion Microcontroller AT89S52 The HM6264ATiming 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 HM6264ARead Cycle Timing Diagram tOH tLZ2 tLZ1 tOLZ
  • 82. 8212/21/2012 kỹ thuật vi điều khiển Chương 4: Operation Modes and Memory Expansion Microcontroller AT89S52 tWC tAW tCW tCW tWP tDH tWR tHZ2 Address CS1 CS2 WE Din Figure HM6264AWrite Cycle Timing Diagram tOW tAS - Write data must be valid for tDW before WE goes high and remain valid for at least tDH after WE goes high - the pulse width of WE must be at least tWP tDW
  • 83. 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: 000 Hàng 2: 101 Hàng 6: 001 Hàng 3: 110 Hàng 7: 010 Hàng 4: 111 Hàng 8: 011 Như vậy cần dùng 2 con 74138 Microcontroller AT89S52
  • 84. 8412/21/2012 kỹ thuật vi điều khiển Chương 4: Operation Modes and Memory Expansion Microcontroller AT89S52 2732 2732 2732 O2 O1 O3 O4 O5 O6 O7 O0 E1 E2 E1 E2 E3 E3 LE D7-D0 O7-O0 OE 74F373 A11-A0 D0-D7 A12 A13 A14 A0 A1 A2 A1 A0 A2 A15 ALE AD0-AD7 A8-A11 WR WD AT89S52 74138 74138 PSEN
  • 85. 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ài MOVX A,@Ri MOVX A,@dptr MOVX @Ri,A MOVX @dptr,A Microcontroller AT89S52
  • 86. 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)
  • 87. 8712/21/2012 kỹ thuật vi điều khiển Chương 5: Interrupts and Resets Basics 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 Interrupts Hàm ngắt là hàm được CPU thực hiện khi sảy ra ngắt. Interrupt Maskability Khi 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
  • 88. 8812/21/2012 kỹ thuật vi điều khiển Chương 5: Interrupts and Resets Cơ chế ngắt: Microcontroller AT89S52 ISR: tr×nh phôc vô ng¾t(interrupt service rountine)
  • 89. 8912/21/2012 kỹ thuật vi điều khiển Chương 5: Interrupts and Resets Khi ngắt sảy ra Nã 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
  • 90. 9012/21/2012 kỹ thuật vi điều khiển Chương 5: Interrupts and Resets Microcontroller AT89S52 Thanh ghi cho phép và cấm ngắt:
  • 91. 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¾t SETB IE.4 ; Cho phÐp ng¾t nèi tiÕp SETB IE.1 ; Cho phÐp ng¾t Timer1 SETB 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 Timer0 c) CLR IE.7 ; CÊm tÊt c¶ mäi ng¾t. Microcontroller AT89S52
  • 92. 9212/21/2012 kỹ thuật vi điều khiển Chương 5: Interrupts and Resets Sử 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)
  • 93. 9312/21/2012 kỹ thuật vi điều khiển Chương 5: Interrupts and Resets Interrupts Timer Lập trình bộ timer sử dụng ngắt sẽ được trình bày cụ thể trong chương 7 Microcontroller AT89S52
  • 94. 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 0003ITO 0 1 IE0 (TCON.3) INT1 (Pin 3.3) Level - tringgered Edge - triggered 0013IT1 0 1
  • 95. 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ức Cá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
  • 96. 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.3 to LED Vcc
  • 97. 9712/21/2012 kỹ thuật vi điều khiển Chương 5: Interrupts and Resets Lời giải: ORG0000H LJMP 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 INT1 SETB P1.3 ; BËt ®Ìn LED MOV R3, # 255 ; BACK: DJNZ R3, BACK ; Gi÷ ®Ìn LED s¸ng mét lóc CLR P1.3 ; T¾t ®Ìn LED RETI ; 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µi SJMP HERE ; Chê ë ®©y cho ®Õn khi ®îc ng¾t END Microcontroller AT89S52
  • 98. 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.085s 4 chu tr×nh m¸y (4MC) 4  1.085s ®Õ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.
  • 99. 9912/21/2012 kỹ thuật vi điều khiển Chương 5: Interrupts and Resets 2. Ngắt theo sườn xuống Thanh 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
  • 100. 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
  • 101. 10112/21/2012 kỹ thuật vi điều khiển Chương 5: Interrupts and Resets Lêi gi¶i: ORG 0000H LJMP MAIN ; - - Tr×nh phôc vô ng¾t ISR dµnh cho ng¾t INT1 ®Ó bËt ®Ìn LED ORG 0013H ; Nh¶y ®Õn ®Þa chØ cña tr×nh phôc vô ng¾t INT1 SETB 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óc CLR 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Ýnh ORG 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 INT1 HERE: SJMP HERE ; Dõng ë ®©y cho ®Õn khi bÞ ng¾t END Microcontroller AT89S52
  • 102. 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.085s 1.085s 1MC 1MC
  • 103. 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
  • 104. 10412/21/2012 kỹ thuật vi điều khiển Chương 5: Interrupts and Resets Microcontroller AT89S52 BẢNG VECTOR NGẮT
  • 105. 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 9 Có 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
  • 106. 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 10F 8.2K RST 30pF X2 31 EA/Vpp 19 9 18 + 30pF 31 9 EA/Vpp X1 X1 X2 RST 8.2K 10F 11.0592 MHz
  • 107. 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
  • 108. 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 Address decoder R/W CE SRAM CE ROM CE Interface Chip 1 Interface Chip 2 CE From input device To output device Microprocessor Data Bus
  • 109. 10912/21/2012 kỹ thuật vi điều khiển Chương 6: Parallel I/O Ports Sơ đồ chân Microcontroller AT89S52
  • 110. 11012/21/2012 kỹ thuật vi điều khiển Chương 6: Parallel I/O Ports Có 4 port P0, P1, P2 và P3 Mỗi Port là một cổng 8bit P0: P0.0 – P0.7 P1: P1.0 – P1.7 P2: P2.0 – P2.7 P3: P3.0 – P3.7 Khi 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 Px Muốn đọc/ghi tới từng bit ta dùng dạng Px.y X=0-3; y=0-7 Microcontroller AT89S52
  • 111. 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ệu Muốn cấu hình nó là cổng vào ta dùng lệnh: MOV P0,#0FFH Các chân của cổng P0 thường được nối với điện trở kéo: Microcontroller AT89S52 Vcc 10K P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 DS5000 8751 8951 Po rt 0
  • 112. 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-AD7 Chân EA (chân 31) nối với GND để xác định VĐK làm việc với ROM ngoài Châ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
  • 113. 11312/21/2012 kỹ thuật vi điều khiển Chương 6: Parallel I/O Ports PORT P1 từ chân 1-8 Không cần điện trở kéo Cấu hình làm cổng vào : Mov P1,#0FFh P1.0 ngõ vào của timer/counter thứ 2 P1.1 ngõ nạp lại/thu nhận của timer/counter thứ 2 Microcontroller AT89S52
  • 114. 11412/21/2012 kỹ thuật vi điều khiển Chương 6: Parallel I/O Ports PORT P2 từ chân 21 – 28 Có 2 chức năng Chứ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
  • 115. 11512/21/2012 kỹ thuật vi điều khiển Chương 6: Parallel I/O Ports PORT P3 từ chân 10-17 Chức năng xuất nhập như các cổng khác Các chức năng khác Microcontroller AT89S52 BÝt cña cèng P3 Chøc năng ch©n sè P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.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) 10 11 12 13 14 15 16 17
  • 116. 11612/21/2012 kỹ thuật vi điều khiển Chương 6: Parallel I/O Ports Ví 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
  • 117. 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 X4 X3 X2 X1 X0 inhibit MC14051 P1.7 P1.5 P1.4 P1.3 P1.2 P1.1 89S52 10KW each X C B A P1.0
  • 118. 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
  • 119. 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 d e f 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
  • 120. 12012/21/2012 kỹ thuật vi điều khiển Chương 6: Parallel I/O Ports Ví dụ 6.2 Microcontroller AT89S52 AT89S52 74ALS244 b c a d e f g a b c d e f g 100W each P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 BCD digit segments g f e d c b a corresponding hex number 0 0 1 1 1 1 1 1 $3F 1 0 0 0 0 1 1 0 $06 2 1 0 1 1 0 1 1 $5B 3 1 0 0 1 1 1 1 $4F 4 1 1 0 0 1 1 0 $66 5 1 1 0 1 1 0 1 $6D 6 1 1 1 1 1 0 1 $7D 7 0 0 0 0 1 1 1 $07 8 1 1 1 1 1 1 1 $7F 9 1 1 0 1 1 1 1 $6F Table BCD to seven-segment decoder Dùng LED cathode chung
  • 121. 12112/21/2012 kỹ thuật vi điều khiển Chương 6: Parallel I/O Ports Ghé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 common cathode common cathode common cathode 1KW 1KW 1KW P2.0 P2.1 P2.6 Imax=91mA 100W
  • 122. 12212/21/2012 kỹ thuật vi điều khiển Chương 6: Parallel I/O Ports Ví dụ 6.3 VD: Hieån thò ‘123’ leân LED 7 ñoaïn. Microcontroller AT89S52
  • 123. 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è 3 CLR P3.0 ; BËt LED1 ACALL DELAY ; delay SETB P3.0 ; tắt LED1 Microcontroller AT89S52
  • 124. 12412/21/2012 kỹ thuật vi điều khiển Chương 6: Parallel I/O Ports MOV P2,#0A4h ; XuÊt ra P2 m· cña sè 2 CLR 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è 1 CLR 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
  • 125. 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
  • 126. 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
  • 127. 12712/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions 7.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
  • 128. 12812/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Các thanh ghi cơ sở của bộ định thời Thanh 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)
  • 129. 12912/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Microcontroller 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 Timer C/T=0 : Dïng nh bé ®Þnh thêi C/T=1 : Dïng nh bé ®Õm Nguå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
  • 130. 13012/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Bit 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.
  • 131. 13112/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Thanh 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
  • 132. 13212/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Laäp trình cho Timer cheá ñoä 1 Microcontroller AT89S52 XTAL oscillator 12 TH TL TF TR
  • 133. 13312/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions C¸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
  • 134. 13412/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Ví duï 7.1 Taïo xung 50% treân chaân P1.5 MOV 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 cao CPL P1.5 ; Sö dông ch©n P1.5 ACALL DELAY SJMP HERE ; N¹p l¹i TH, TL ; delay using timer0. DELAY: SETB TR0 ; Khëi ®éng bé ®Þnh thêi Timer0 AGAIN: JNB TF0, AGAIN ; HiÓn thÞ cê bé ®Þnh thêi cho ®Õn khi nã vît qua FFFFH. CLR TR0 ; Dõng bé Timer CLR TF0 ; Xo¸ cê bé ®Þnh thêi 0 RET Microcontroller AT89S52 FFF2 TF = 0 FFF3 TF = 0 FFF4 TF = 0 0000 TF = 1 FFFF TF = 0
  • 135. 13512/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Ví 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.0592MHz Giaûi Bé ®Þ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,085s ®Ó t¹o ra bé trÔ b»ng sè ®Õm 1,085s. 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,085s = 15,19s cho nöa chu kú vµ c¶ chu kú lµ T = 2  15,19s = 30, 38s lµ thêi gian trÔ ®îc t¹o ra bëi bé ®Þnh thêi. Microcontroller AT89S52
  • 136. 13612/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Caù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.0592s - 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,085s trong ®ã YYXX lµ c¸c gi¸ trÞ khëi t¹o cña TH, TL t¬ng øng. Lu ý r»ng c¸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 NNNNN sau ®ã lÊy (65536 - NNNNN).1,085s.
  • 137. 13712/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Ví duï 9.3 taïo ñoä treã lôùn H·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ín MOV TL1, #08 ; N¹p byte thÊp TL1 = 08 MOV TH1, #08 ; N¹p byte cao TH1 = 01 SETB 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 TF1 DJNZ 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
  • 138. 13812/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions LAÄP TRÌNH CHEÁ ÑOÄ 2 Microcontroller AT89S52 XTAL oscillator 12 TL TF TF goes high when FFFF 0 reload TR TF Caùc böôùc laäp trình cho cheá ñoä 2 1. 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.
  • 139. 13912/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Ví 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ín ACALL DELAY CPL P1.0 SJMP AGAIN DELAY: SETB TR0 ; Khëi ®éng Timer0 BACK: 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, DELAY RET T = 2  (250  256  1.085s) = 1.38.88ms vµ f = 72Hz. Microcontroller AT89S52
  • 140. 14012/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions LAÄP TRÌNH CHO CHEÁ ÑOÄ 0 Hoaø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,đich Cho đế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
  • 141. 14112/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions LẬ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
  • 142. 14212/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Mô 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ú 200s 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.
  • 143. 14312/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Lê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.085s = 92. ORG 0000H LJMP MAIN ORG 000BH; ISR tạo sóng vuông CPL P2.1 RETI ORG 0030H ; Ngay sau ®Þa chØ b¶ng vÐc-t¬ ng¾t MAIN: 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Öu MOV TH0, # - 92 ; §Æt TH0 = A4H cho – 92 MOV IE, #82H ; IE = 1000 0010 cho phÐp Timer0 SETB TR0 ; Khëi ®éng bé Timer0 BACK: MOV A, P0 ; NhËn d÷ liÖu vµo tõ cæng P0 MOV P1, A ; ChuyÓn d÷ liÖu ®Õn cæng P1 SJMP BACK ; TiÕp tôc nhËn vµ chuyÓn d÷ liÖu ; Chõng nµo bÞ ng¾t bëi TF0 END Microcontroller AT89S52
  • 144. 14412/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Một số đặc điểm Chó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
  • 145. 14512/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Ví 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 1085s vµ møc thÊp dµi 15s 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
  • 146. 14612/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions V× 1085s lµ 1000  1.085s 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 0000H LJMP MAIN ; ORG 001BH ; §Þa chØ ng¾t cña Timer1 trong b¶ng vÐc t¬ ng¾t LJMP 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Õ ®é 1 MOV P0, #0FFH ; MOV TL1, #018H ; §Æt TL1 = 18 byte thÊp cña - 1000 MOV TH1, #0FCH ; §Æt TH1 = FC byte cao cña - 1000 MOV IE, #88H ; IE = 10001000 cho phÐp ng¾t Timer1 SETB TR1 ; Khëi ®éng bé Timer1 Microcontroller AT89S52
  • 147. 14712/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions BACK: MOV A, P0 ; NhËn d÷ liÖu ®Çu vµo ë cæng P0 MOV P1, A ; ChuyÓn d÷ liÖu ®Õn P1 SJMP 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Õ ®é 1 ISR-T1: CLR TR1 ; Dõng bé Timer1 CLR P2.1 MOV R2, #4 ; 2 chu kú m¸y MC (Machine Cycle) HERE: DJNZ R2, HERE ; 4  2 MC = 8 MC MOV TL1, #18H ; N¹p l¹i byte thÊp gi¸ trÞ 2 MC MOV TH1, #0FCH ; N¹p l¹i byte cao gi¸ trÞ 2 MC SETB TR1 ; Khëi ®éng Timer1 1 MC SETB P2.1 ; P2.1 = 1 bËt P2.1 trë l¹i cao RETI ; Trë vÒ ch¬ng tr×nh chÝnh END 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.085s vµ 14  1.085s = 15.19s. Microcontroller AT89S52
  • 148. 14812/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Ví dụ 7.6 Tạo xung vuông f=50Hz trên chân P1.2 ORG0 LJMP MAIN ORG 000BH ; Ch¬ng tr×nh con phôc vô ng¾t cho Timer0 CPL P1.2 MOV TL0, # 00 MOV TH0, # 0DCH RETI ORG 30H ; ------------ main program for initialization MAIN: MOV TMOD, # 00000001B ; Chän Timer0 chÕ ®é 1 MOV TL0,#00H MOV TH0, # 0DCH MOV IE, # 82H ; Cho phÐp ng¾t Timer0 SETB TR0 HERE: SJMP HERE END Microcontroller AT89S52
  • 149. 14912/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions 7.2 LẬP TRÌNH COUNTER Sử 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
  • 150. 15012/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Như 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 high when FFFF 0 overflow flag TR0 Timer exterrnal input Pin 3.4 TH1 TL1 TF1 TF1 goes high when FFFF 0 overflow flag TR1 Timer exterrnal input Pin 3.5 Counter chế độ 1
  • 151. 15112/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Counter chế độ 2 Microcontroller AT89S52 TL0 TF0 overflow flag TR0 Timer0 exterrna l input Pin 3.4 TF0 goes high when FF 0 TH0 reload TL1 TF1 overflow flag TR1 Timer1 exterrna l input Pin 3.5 TF1 goes high when FF 0 TH1 reload
  • 152. 15212/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Ví 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 xung SETB P3.4 ; LÊy ®Çu vµo T0 Microcontroller AT89S52
  • 153. 15312/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions AGAIN: SETB TR0 ; Sao chÐp sè ®Õm TL0 BACK: 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 LCD ACALL DISLAY ; Thùc hiÖn vßng lÆp nÕu TF = 0 JNB TF0, BACK ; Dõng bé ®Õm 0 CLR TR0 ; Xo¸ cê TF0 = 0 CLR TF0 ; TiÕp tôc thùc hiÖn SJMP 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 AB MOV R2, B ; Lu gi÷ sè thÊp MOV B, #10 ; Chia cho 10 mét lÇn n÷a DIV AB ORL A, #30H ; §æi nã vÒ ASCII MOV R4, A ; Lu ch÷ sè cã nghÜa lín nhÊt MSD MOV A, B ; ORL A, #30H ; §æi sè thø hai vÒ ASCII MOV R3, A ; Lu nã MOV A, R2 ORL A, #30H ; §æi sè thø ba vÒ ASCII MOV R2, A ; Lu sè ASCII vµo R2. RET Microcontroller AT89S52
  • 154. 15412/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Trườ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
  • 155. 15512/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Bit GATE=1? Trong thanh ghi TMOD Trong phần trên ta đã giả thiết GATE=0 Khi 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
  • 156. 15612/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Bộ timer/Counter 0 Microcontroller AT89S52 XTAL oscillator 12 T0 Pin Pin 3.4 Gate TR0
  • 157. 15712/21/2012 kỹ thuật vi điều khiển Chương 7: Timer/Counter Functions Bộ timer/Counter 1 Microcontroller AT89S52 XTAL oscillator 12 T1 Pin Pin 3.5 Gate TR1
  • 158. 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
  • 159. 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 or terminal modem modem computer or terminal 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
  • 160. 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ột Nh÷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
  • 161. 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
  • 162. 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à 0 Stop bit luôn là 1 Microcontroller AT89S52
  • 163. 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 Start bÝtSpace Stop bÝt Mark d0 Goes 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
  • 164. 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 độ baud Các máy tính trước đây tốc độ từ 100- 9600 bps Các máy tính ngày nay có thể tới 56kbps Trong truyền nối tiếp dị bộ thì baud tối đa là 100.000 bps Microcontroller AT89S52
  • 165. 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
  • 166. 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ếp RS232 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 1960 Các phiên bản sau: RS232A(1963); RS232B(1965); RS232C(1969) và RS232D(1987) Microcontroller AT89S52
  • 167. 16712/21/2012 kỹ thuật vi điều khiển Chương 8: Serial Communication Interface Chuẩn RS232 quy định Mức 0 : -25V => -3V Mứ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
  • 168. 16812/21/2012 kỹ thuật vi điều khiển Chương 8: Serial Communication Interface Các chân MAX232 Loạ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)
  • 169. 16912/21/2012 kỹ thuật vi điều khiển Chương 8: Serial Communication Interface Microcontroller 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
  • 170. 17012/21/2012 kỹ thuật vi điều khiển Chương 8: Serial Communication Interface Các chân MAX232 Loại 9 chân DP-9 Microcontroller AT89S52 6 9 51 M« t¶ Sè ch©n 1 2 3 4 5 6 7 8 9 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Öu Dữ liÖu ®îc nhËn Dữ liÖu ®îc göi ĐÇu dữ liÖu s½n sµng ĐÊt cña tÝn hiÖu Dữ liÖu s½n sµng Yªu cÇu göi Xo¸ ®Ó göi B¸o chu«ng
  • 171. 17112/21/2012 kỹ thuật vi điều khiển Chương 8: Serial Communication Interface Microcontroller AT89S52 TxD RxD TxD RxD DTE DTE ground Giao thức bắt tay. Không modem
  • 172. 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 Tx Rx RING DCD CTS RTS DSR DTR GND Tx Rx RING DCD CTS RTS DSR DTR GND Tx Rx RING DCD CTS RTS DSR DTR GND Tx Rx RING DCD CTS RTS DSR DTR GND phone line Figure Connection over public phone line Computer (DTE) Modem (DCE) Modem (DCE) Computer (DTE)
  • 173. 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.1 TxD P3.0 RxD Max232 8051 Vcc 2 6 7 89 11 10 5 411 10 14 13 T1OUTT1IIN R1IINR1OUT T2IIN R2OUT T2OUT R2IIN Rs232 sideTTL side 15 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.
  • 174. 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.1 TxD P3.0 RxD Max232 8051 Vcc 13 1414 12 17 11 15 16 10 18 1920 11 10 3 2 5 4 2 2 5 2 3 1 5 4 T1OUT T1IINT1IIN R1II N R1OU T T2IIN R2OU T T2OUT R2II N Rs233 sideTTL side 6 9 7 DB - 9
  • 175. 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ẾP Yê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
  • 176. 17612/21/2012 kỹ thuật vi điều khiển Chương 8: Serial Communication Interface Tốc độ baud trong 89S52 Khi Reset: Microcontroller AT89S52
  • 177. 17712/21/2012 kỹ thuật vi điều khiển Chương 8: Serial Communication Interface Microcontroller AT89S52
  • 178. 17812/21/2012 kỹ thuật vi điều khiển Chương 8: Serial Communication Interface Internal Baud Rate Generator (BRG) Microcontroller AT89S52
  • 179. 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 BIT FE/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
  • 180. 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 bit Trong 4 chế độ ta chỉ quan tâm đến chế độ 1 8bit dữ liệu, start, stop SM1=0, SM0=1 Microcontroller AT89S52
  • 181. 18112/21/2012 kỹ thuật vi điều khiển Chương 8: Serial Communication Interface Hai bit quan trọng TI và RI Khi 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
  • 182. 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 RxD BRL register (9Ah) Giá trị mặc định 00h Chứ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
  • 183. 18312/21/2012 kỹ thuật vi điều khiển Chương 8: Serial Communication Interface Cá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
  • 184. 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 baud MOV SCON, #A”; TruyÒn 8 bÝt d÷ liÖu, 1 bÝt Stop cho phÐp thu SETB 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Õp SJMP AGAIN ; TiÕp tôc göi l¹i ch÷ A Microcontroller AT89S52
  • 185. 18512/21/2012 kỹ thuật vi điều khiển Chương 8: Serial Communication Interface Ví dụ 8.2 H·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 baud MOV SCON, #50H ; TruyÒn 8 bÝt d÷ liÖu, 1 bÝt Stop cho phÐp thu SETB TR1 ; Khëi ®éng Timer1 AGAIN: MOV A, # "Y" ; TruyÒn ký tù “Y” ACALL TRANS MOV A, # "E" ; TruyÒn ký tù “E” ACALL TRANS MOV A, # "S" ; TruyÒn ký tù “S” ACALL TRANS SJMP 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 SBUF HERE: 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Õp RET Microcontroller AT89S52
  • 186. 18612/21/2012 kỹ thuật vi điều khiển Chương 8: Serial Communication Interface Cá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
  • 187. 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Õt MOV A, SBUF ; Lu cÊt ký tù vµo thanh A MOV P1, A ; Göi ra cæng P.1 CLR RI ; S½n sµng nhËn byte kÕ tiÕp SJMP HERE ; TiÕp tôc nh¹n d÷ liÖu Microcontroller AT89S52
  • 188. 18812/21/2012 kỹ thuật vi điều khiển Chương 8: Serial Communication Interface Ví 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
  • 189. 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µo MOV TMOD, #20H ; Chän bé Timer1, chÕ ®é 2 (tù ®éng n¹p l¹i) MOV TH1, # 0FAH ; Chän tèc ®é 4800 baud MOV SCON, #50H ; T¹o khung d÷ liÖu 8 bÝt, 1bÝt Stop cho phÐp SETB TR1 ; Khëi ®éng bé Timer1 MOV DPTR, #MYDATA ; N¹p con trá ®Õn th«ng b¸o H - 1: CLR A MOVC 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 SEND INC DPTR ; Ch¹y tiÕp SJMP H - 1 ; Quay l¹i vßng lÆp Microcontroller AT89S52
  • 190. 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 P2 ACALL TECV ; TruyÒn nã nèi tiÕp ACALL RECV ; NhËn d÷ liÖu nèi tiÕp MOV P1, A ; HiÓn thÞ nã ra c¸c ®Òn LED SJMP B - 1 ; ë l¹i vßng lÆp v« h¹n ; TruyÒn d÷ liÖu nèi tiÕp ACC cã d÷ liÖu SEND: MOV SBUF, A ; N¹p d÷ liÖu H- 2: JNB TI, H - 2 ; ë l¹i vßng lÆp v« h¹n CLR TI ; TruyÒn d÷ liÖu nèi tiÕp RET ; NhËn d÷ liÖu ; TruyÒn d÷ liÖu nèi tiÕp ACC cã d÷ liÖu TECV: JNB RI, TECV ; N¹p d÷ liÖu Microcontroller AT89S52
  • 191. 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ïng CLR TI ; S½n sµng cho ký tù míi RET ; Trë vÒ mêi gäi ; NhËn d÷ liÖu nèi tiÕp trong ACC RECV: JNB RI, RECV ; §îi ë ®©y nhËn ký tù MOV A, SBUF ; Lu nã vµo trong ACC CLR RI ; S½n sµng nhËn ký tù m· tiÕp theo RET ; Trë vÒ nêi gäi ; Ng¨n xÕp cha th«ng b¸o MYDATA: DB “Chóng t«i ®· s½n sµng” 0 END Microcontroller AT89S52 P1 TxD RxD P2 To PC COM port 8051 SW LED
  • 192. 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
  • 193. 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,PCON SETB ACC.7 MOV PCON,A Microcontroller AT89S52 TH1 (thËp ph©n) TH1 (Hex) Tèc ®é baud SMOD = 0 SMOD = 1 -3 -6 -12 -24 FD DA F4 E8 9600 4800 2400 1200 19200 9600 4800 2400
  • 194. 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
  • 195. 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 TI 0023 H
  • 196. 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
  • 197. 19712/21/2012 kỹ thuật vi điều khiển Chương 8: Serial Communication Interface Lêi gi¶i: ORG 0 LJMP MAIN ORG 000BH ; Tr×nh phôc vô ng¾t dµnh cho Timer0 CPL P3.4 : T¹o xung ë ch©n P3.1 RETI ; Trë vÒ tõ ISR ORG23H ; Nh¶y ®Õn ®Þa chØ ng¾t truyÒn nèi tiÕp LJMP SERIAL ; LÊy cæng P1 lµm cæng ®Çu vµo ORG30H 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 4800 MOV SCON, # 50H ; Khung d÷ liÖu: 8 bÝt d÷ liÖu, 1 stop, cho phÐp REN Microcontroller AT89S52
  • 198. 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è 5kHz MOV IE, # 10010010B ; Cho phÐp ng¾t nèi tiÕp SETB TR1 ; Khëi ®éng Timer1 SETB TR0 ; Khëi ®éng Timer0 BACK: MOV A, P1 ; §äc d÷ liÖu tõ cæng P1 MOV SBUF, A ; LÊy mét lÇn b¶n sao d÷ liÖu MOV P2, A ; Ghi nã vµo cæng P2 SJMP 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µo MOV A, SBUF ; NÕu kh«ng tiÕp tôc nhËn d÷ liÖu MOV P0, A ; Göi d÷ liÖu nèi tiÕp ®Õn P0 CLR RI ; Xo¸ cê RI v× 8051 kh«ng lµm ®iÒu nµy RETI ; Trë vÒ tõ ISR TRANS: CLR TI ; Xo¸ cê TI v× 8051 kh«ng xo¸ RETI ; Trë vÒ tõ ISR. END Microcontroller AT89S52
  • 199. 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
  • 200. 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
  • 201. 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 ERS VSS VEE VCC +5v 10K POT LCD 8052
  • 202. 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
  • 203. 20312/21/2012 kỹ thuật vi điều khiển Chương 9: LCD,ADC and SENSOR INTERFACE Microcontroller 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
  • 204. 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=1 Khi bit D7=0 ta mới gửi dữ liệu RS=0 và R/W=0 Thể hiện trong hai ví dụ sau: Microcontroller AT89S52
  • 205. 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ự đó
  • 206. 20612/21/2012 kỹ thuật vi điều khiển Chương 9: LCD,ADC and SENSOR INTERFACE Ví 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 ORG MOV A, # 38H ; Khëi t¹o LCD hai dßng víi ma trËn 5  7 ACALL COMMAND ; XuÊt lÖnh MOV A, # 0EH ; DÞch con trá sang ph¶i ACALL COMMAND ; XuÊt lÖnh MOV A, # 01H ; Xo¸ lÖnh LCD ACALL COMMAND ; XuÊt lÖnh MOV 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÷ N ACALL DATA DISPLAY MOV A, # “0” ; HiÓn thÞ ch÷ 0 ACALL DATA DISPLAY HERE: SJMP HERE ; Chê ë ®©y COMMAND: ACALL READY ; LCD ®· s½n sµng cha? MOV P1, A ; XuÊt m· lÖnh Microcontroller AT89S52
  • 207. 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Önh CLR P2.1 ; §Æt R/W = 0 ®Ó ghi d÷ liÖu tíi LCD SETB P2.2 ; §Æt E = 1 ®èi víi xung cao xuèng thÊp CLR P2.2 ; §Æt E = 0 chèt d÷ liÖu RET DATA-DISPLAY:: ACALL READY ; LCD ®· s½n sµng cha? MOV P1, A ; XuÊt d÷ liÖu SETB P2.0 ; §Æt RS = 1 cho xuÊt d÷ liÖu CLR P2.1 ; §Æt R/W = 0 ®Ó ghi d÷ liÖu ra LCD SETB P2.2 ; §Æt E = 1 ®èi víi xung cao xuèng thÊp CLR P2.2 ; §Æt E = 0 chèt d÷ liÖu RET DELAY: SETB P1.7 ; LÊy P1.7 lµm cæng vµo CLR P2.0 ; §Æt RS = 0 ®Ó truy cËp thanh ghi lÖnh SETB P2.1 ; §Æt R/W = 1 ®äc thanh ghi lÖnh Microcontroller AT89S52
  • 208. 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
  • 209. 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. ORG MOV A, # 38H ; Khëi t¹o LCD hai dßng víi ma trËn 5  7 ACALL COMNWRT ; Gäi ch¬ng tr×nh con lÖnh ACALL 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ªnh ACALL DELAY ; CÊp mét ®é trÔ cho LCD Microcontroller AT89S52