Chương III:
GIỚI THIỆU HỌ MICROCONTROLLER
I.PHẦN CỨNG:
1. Sơ đồ khối:
Microcontroller 8051/8031 là một IC thuộc họ vi điều khiển MCS_51 do
hãng Intel phát minh và chế tạo.Các IC tiêu biểu cho họ MC_51 là 8051 và
8031.
INT1
INT0
Timer 1
Timer 0
Port nối tiếp
Điều khiển
ngắt
Các thanh
ghi khác
128 bytes
RAM
4K
ROM
Timer 1
Timer 0
CPU
Bộ dao
động
Điều khiển
bus
EA
Các Port
I/O
Port nối
tiếp
ALE
RST
PSE
TX RX
N
P0 P2 P1 P3
D D
Sơ đồ khối 8051
T1
T0
Chúng có các đặc điểm chung sau:
+ 4K byte ROM (được lập trình bởi nhà sản xuất ,chỉ có ở 8051).
+ 128 byte Ram.
+ 4 port I/O 8 bit.
+ 2 bộ đònh thì 16 bit .
+ Giao tiếp nối tiếp.
+ 64K không gian bộ nhớ chương trình mở rộng.
+ 64K không gian bộ nhớ dữ liệu mở rộng.
+ Một bộ xử lý luận lý (thao tác trên các bit đơn).
+ 210 bit có khả năng đònh vò riêng biệt trong Ram nội.
+ 5 nguồn ngắt với 2 mức ưu tiên.
2.Sơ lược các chân của 8051:
40
30p
F
12MH
z
VCC
19
18
30p
F
29
30
PSE
N
ALE
8051
31 EA
/RD
/WR
T1
T0
/INT1
/INT0
TXD
RXD
9
RST
17
16
P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
15
14
13
12
11
10
VSS
20
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
32
33
34
35
36
37
38
39
P1.7 8
P1.6 7
P1.5 6
P1.4 5
P1.3 4
3
P1.2
P1.1 2
P1.0 1
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P21
P2.0
28
27
26
25
24
23
22
21
2.1.Port 0:
Port 0 gồm các chân từ 32 ÷ 39 .Port 0 có chức năng I/O trong các thiết kế
cở nhỏ (không dùng bộ nhớ mở rộng) .Đối với các thiết kế lớn với bộ nhớ mở
rộng ,nó được hợp kênh giữa bus đòa chỉ và bus dữ liệu.
2.2.Port 1:
Port 1 là một Port I/O trên các chân 1-8 .Các chân được ký hiệu
P1.0,P1.1,…có thể dùng giao tiếp với các thiết bò ngoài nếu cần .
2.3.Port 2:
Port 2 là Port công dụng kép trên các chân 21-28 được dùng như các
đường xuất nhập hoặc là byte cao của bus đòa chỉ đối với các thiết kế dùng bộ
nhớ mở rộng.
2.4.Port 3:
Port 3 là một Port công dụng kép trên các chân 10-17 .Các chân của Port
này có nhiều chức năng ,các công dụng chuyển đổi có liên hệ với các đặc tính
đặc biệt của 8051/8031như ở bảng sau:
Bit
P3.0
P3.1
P3.2
P3.3
Tên
RXD
TXD
/INT0
/INT1
Chức năng chuyển đổi
Dữ liệu nhận cho Port nối tiếp
Dữ liệu phát cho Port nối tiếp
Ngắt ngoài 0
Ngắt ngoài 1
P3.4
P3.5
P3.6
T0
T1
/WR
P3.7
/RD
Ngõ vào của Timer/Counter 0
Ngõ vào của Timer/Counter 1
Xung ghi bộ nhớ dữ liệu
ngoài.
Xung đọc bộ nhớ dữ liệu
ngoài.
2.5.PSEN (Prorgam Store Enable):
8051/8031 có 4 tín hiệu điều khiển .
PSEN là tín hiệu ra trên chân 29 .nó là tín hiệu điều khiển để cho phép
bộ nhớ chương trình mở rộng và thường được nối đến chân OE (Output Enable)
của một EPROM để cho phép đọc các byte mã lệnh.
PSEN sẽ ở mức thấp trong thời gian lấy lệnh .Các mã nhò phân của chương
trình được đọc từ ERPOM qua bus dữ liệu và được chốt vào thanh
ghi lệnh của 8051 để giải mã lệnh .Khi thi hành chương trình trong ROM nội
(8051) PSEN sẽ ở mức thụ động cao.
2.6.ALE(Address Latch Enable):
Tín hiệu ra ALE trên chân 30 ,8051 dùng ALE cho việc giải kênh các bus
đòa chỉ và dữ liệu.Khi Port 0 được dùng trong chế độ chuyển đổi củă nó: vừa là
bus dữ liệu vừa là byte thấp của bus đòa chỉ ,AlE là tín hiệu để chốt đòa chỉ vào
một thanh ghi bên ngoài ,trong nữa đầu của chu kỳ bộ nhớ .Sau đó các đường
Port dùng để xuất hoặc nhập dữ liệu trong nữa chu kỳ sau của bộ nhớ .
2.7.EA (External Access):
Đây là tín hiệu cho phép lựa chọn truy xuất bộ nhớ chương trình trong hay
ngoài. Khi EA được mắc lên mức cao (+5V) thì 8051 thi hành chương trình trong
ROM nội. Ngược lại, nếu Ea được mắc xuống mức thấp (GND) thì 8051 chỉ
thực thi chương trình từ bộ nhớ mở rộng.
2.8.RST (Reset):
Ngỏ vào RST trên chân 9 là ngỏ reset của 8051 .Khi tín hiệu này được
đưa lên mức cao (trong ít nhất 2 chu kỳ máy),các thanh ghi bên trong 8051 được
tải những giá trò thích hợp để khởi động hệ thống.
2.10.Các ngỏ vào bộ dao động trên chip:
8051 có một bộ dao động trên chip ,nó thường được nối với một thạch
anh giữa hai chân 18 và 19.
2.11.Các chân nguồn :
8051 vận hành với nguồn đơn +5V .Vcc (+5V) được nối vào chân 40 và
Vss (GND) được nối vào chân 20.
3.Tổ chức bộ nhớ:
8051/8031 có bộ nhớ theo cấu trúc Harvard : có vùng nhớ riêng biệt cho
chương trình và dữ liệu ,cả chương trình và dữ liệu có thể ở bên trong 8051 .Dù
vậy chúng có thể được mở rộng bằng các thành phần ngoài lên đến tối đa 64K
byte bộ nhớ chương trình và 64K byte bộ nhớ dữ liệu.
Bộ nhớ bên trong bao gồm ROM (8051) và RAM trên chip , RAM trên
chip bao gồm nhiều phần : phần lưu trữ đa dụng , phần lưu trữ đòa chỉ hóa từng
bit, các bank thanh ghi và các thanh ghi chức năng đặc biệt.
Hai đặc tính cần lưu ý là :
• Các thanh ghi và các Port xuất nhập đã được xếp trong bộ nhớ và có thể
được truy xuất trực tiếp giống như các đòa chỉ bộ nhớ khác.
• Ngăn xếp bên trong RAM nội nhỏ hơn so với Ram ngoài như trong các bộ vi
xử lý khác.
ĐỊA CHỈ
BYTE
ĐỊA CHỈ
BYTE
ĐỊA CHỈ BIT
RAM ĐA ĐỤNG
F5 F4 F3 F2 F1 F0
E0 E7 E6
E5 E4 E3 E2 E1 E0 ACC
D0 D7 D6
D5 D4 D3 D2 - D0 PSW
B8
2F
2E
2D
2C
2B
2A
29
28
7F
77
6F
67
5F
57
4F
47
7E
76
6E
66
5E
56
4E
46
7D
75
6D
65
5D
55
4D
45
7C
74
6C
64
5C
54
4C
44
7B
73
6B
63
5B
53
4B
43
7A
72
6A
62
5A
52
4A
42
79
71
69
61
59
51
49
41
78
70
68
60
58
50
48
40
ĐỊA CHỈ BIT
FF
F0 F7 F6
-
-
- BC BB BA B9 B8 IP
B0 B7 B6
A8 AF
-
A0 A7 A6
99
B
B5 B4 B3 B2 B1 B0 P3
- AC AB AA A9 A8 IE
A5 A4 A3 A2 A1 A0 P2
Không được đòa chỉ hóa bit
SBUF
27
26
25
24
23
22
21
20
1F
18
17
10
0F
08
07
00
3F
37
2F
27
1F
17
0F
07
3E
36
2E
26
1E
16
0E
06
3D
35
2D
25
1D
15
0D
05
3C
34
2C
24
1C
14
0C
04
3B
33
2B
23
1B
13
0B
03
3A
32
2A
22
1A
12
0A
02
BANK 3
BANK 2
BANK 1
BANK 0
(thanh ghi R0-R7)
39
31
29
21
19
11
09
01
38
30
28
20
18
10
08
00
98
9F 9E
9D 9C 9B 9A 99 98
SCON
90
97
95 94 93 92 91 90
P1
8D
8C
8B
8A
96
Không được đòa chỉ hóa bit
Không được đòa chỉ hóa bit
Không được đòa chỉ hóa bit
Không được đòa chỉ hóa bit
89
88
87
Không được đòa chỉ hóa bit
8F 8E 8D 8C 8B 8A 89 88
Không được dòa chỉ hóa bit
83
82
81
80
Không được đòa chỉ hóa bit
Không được đòa chỉ hóa bit
Không được đòa chỉ hóa bit
86 85 84 83 82 81 80
87
TH1
TH0
TL1
TL0
TMOD
TCON
PCON
DPH
DPL
SP
P0
Tóm tắc bộ nhớ dữ liệu trên chip
• Chi tiết về bộ nhớ Ram trên chip :
Ram bên trong 8051/8031 được phân chia giữa các bank thanh ghi (00H1FH),Ram đòa chỉ hóa từng bit (20H-2FH),Ram đa dụng (30H_7FH)và các
thanh ghi chức năng đặc biệt (80H-FFH).
3.1. Ram đa dụng:
Mọi đòa chỉ trong vùng RAM đa dụng đều có thể được truy xuất tự do
dùng cách đánh đòa chỉ trực tiếp hoặc gián tiếp. Ví dụ, để đọc nội dung ở đòa chỉ
5FH của RAM nội vào thanh ghi tích lũy lệnh sau sẽ được dùng :
MOV A, #5FH
Lệnh này di chuyển một búyt dữ liệu dùng cách đánh đòa chỉ trực tiếp để
xác đònh “đòa chỉ nguồn” (5FH). Đích nhận dữ liệu được ngầm xác đònh trong
mã lệnh là thanh ghi tích lũy A.
RAM bên trong cũng có thể được truy xuất dùng cách đánh đòa chỉ gián
tiếp qua RO hay R1. Ví dụ, sau khi thi hành cùng nhiệm vụ như lệnh đơn ở trên:
MOV R0, #5FH
MOV A, @R0
Lệnh đầu dùng đòa chỉ tức thời để di chuyển giá trò 5FH vào thanh ghi R0
và lệnh thứ hai dùng đòa gián tiếp để di chuyển dữ liệu “được trỏ bởi R0” vào
thanh ghi tích lũy.
3.2.RAM đòa chỉ hóa từng bit :
8051 / 8031 chứa 210 bit được đòa chỉ hóa, trong đó 128 bit là ở các đòa
chỉ byte 20H đến 2FH, và phần còn lại trong các thanh ghi chức năng đặc biệt.
Ý tưởng truy xuất từng bit riêng rẽ bằng mềm là một đặc tính tiện lợi của
vi điều khiển nói chung. Các bit có thể được đặt, xóa, AND,OR …với một lệnh
đơn. Đa số các chi xử lí đòi hỏi một chuổi lệnh đọc – sửa– ghi để đạt được hiệu
quả tương tự. Hơn nữa, các port I/0 cũng được đòa chỉ từng bit làm đơn giản
phần mềm xuất nhập từng bit.
Có 128 bit được đòa chỉ hóa đa dụng ở các byte 20H đến 2FH. Các đòa chỉ
này được truy xuất như các byte hoặc các bit phụ thuộc vào lệnh được dùng . ví
dụ, để đặt bit 67H, ta dùng lệnh sau :
SETB 67H
Chú ý rằng “đòa chỉ bit 67H” là bit có trọng số lớn nhất (MSB) ở “đòa chỉ
byte 2CH” lệnh trên sẽ không tác động đến các bit khác của đòa chỉ này.
3.3.Các bank thanh ghi :
32 byte thấp nhất của bộ nhớ nội là dành cho các bank thanh ghi. Bộ lệnh
của 8051 / 8031 hổ trợ 8 thanh ghi (RO đến R7) và theo mặc đònh (sau khi Reset
hệ thống) các thanh ghi này ở các đòa chỉ 00H-07H. Lệnh sau đây sẽ đọc nội
dung ở đòa chỉ 05H vào thanh ghi tích lũy.
MOV A,R5
Đây là lệnh một byte dùng đòa chỉ thanh ghi. Tất nhiên, thao tác tương tự
có thể được thi hành bằng lệnh 2 byte dùng đòa chỉ trực tiếp nằm trong byte thứ
hai:
MOV A,05H
Các lệnh dùng các thanh ghi R0 đến R7 thì sẽ ngắn hơn và nhanh hơn các
lệnh tương ứng nhưng dùng đòa chỉ trực tiếp. Các giá trò dữ liệu được dùng
thường xuyên nên dùng một trong các thanh ghi này.
Bank thanh ghi tích cực có thể chuyển đổi bằng cách thay đổi các bit
chọn bank thanh ghi trong từ trạng thái chương trình (PSW). Giả sử rằng bank
thanh ghi 3 được tích cực, lệnh sau sẽ ghi nội dung của thanh ghi tích lũy vào
đòa chỉ 18H:
MOV R0,A
Ýù tưởng dùng “các bank thanh ghi” cho phép “chuyển hướng” chương
trình nhanh và hiệu qủa (từng phần riêng rẽ của phần mềm sẽ có một bộ thanh
ghi riêng không phụ thuộc vào các phần khác).
3.4. Các thanh ghi chức năng đặc biệt:
Các thanh ghi trong 8051/8031 được đònh dạng như một phần của RAM
trên chip. Vì vậy mỗi thanh ghi sẽ có một đòa chỉ (ngoại trừ thanh ghi trực tiếp,
sẽ không có lợi khi đặt chúng vào trong RAM trên chip). Đó là lý do để
8051/0831 có nhiều thanh ghi. Cũng như R0 đến R7, có 21 thanh ghi chức năng
đặc biệt (SFR: Special Funtion Register) ở vùng trên của RAM nội, từ đòa chỉ
80H đến FFH. Chú ý rằng hầu hết 128 đòa chỉ từ 80H đến FFH không được đònh
nghóa. Chỉ có 21 đòa chỉ SFR là được đònh nghóa.
Ngoại trừ tích lũy (A) có thể được truy xuất ngầm như đã nói, đa số các
SFR được truy xuất dùng đòa chỉ trực tiếp. chú ý rằng một vài SFR có thể được
đòa chỉ hóa bit hoặc byte. Người thiết kế phải thận trọng khi truy xuất bit và
byte. Ví dụ lệnh sau:
SETB 0E0H
Sẽ set bit 0 trong thanh ghi tích lũy, các bit khác không thay đổi. Ta thấy
rằng E0H đồng thời là đòa chỉ byte của thanh ghi tích lũy và là đòa chỉ bit có
trọng số nhỏ nhất trong thanh ghi tích lũy. Vì lệnh SETB chỉ tác động trên bit,
nên chỉ có đòa chỉ bit là có hiệu quả
a)Từ trạng thái chương trình:
Từ trạng thái chương trình (PSW: Program Status Word) ở đòa chỉ D0H
chứa các bit trạng thái như bảng tóm tắt sau:
Bit
Đòa chỉ
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3
Ký
hiệu
CY
AC
F0
RS1
RS0
PSW.2
OV
D2H
D7H
D6H
D5H
D4H
D3H
Ý nghóa
Cờ nhớ
Cờ nhớ phụ
Cờ 0
Bit 1 chọn bank thanh ghi
Bit chọn bank thanh ghi.
00=bank 0; đòa chỉ 00H-07H
01=bank 1: đòa chỉ 08H-0FH
10=bank 2:đòa chỉ 10H-17H
11=bank 3:đòa chỉ 18H-1FH
Cờ tràn
PSW.1
PSW.0
P
D1H
D0H
Dự trữ
Cờ Parity chẵn.
Bảng Từ trạng thái chương trình
• Cờ nhớ (CY) :bit đòa chỉ là D7H,cờ nhớ được set lên 1 nếu có nhớ ở bit thứ 7
trong phép toán cộng hay có mượn ở bit thứ 7 trong phép toán trừ
• Cờ nhớ phụ:Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết qủa
của 4 bit thấp trong khoảng 0AH đến 0FH. Nếu các giá trò cộng được là số
BCD, thì sau lệnh cộng cần có DA A( hiệu chỉnh thập phân thanh ghi tích
lũy) để mang kết qủa lớn hơn 9 trở về tâm từ 0÷9.
• Cờ 0(F0): là một bit cờ đa dụng dành các ứng dụng của người dùng.
• Các bit chọn bank thanh ghi:
Các bit chọn bank thanh ghi (RSO và RS1) xác đònh bank thanh ghi được
tích cực. Chúng được xóa sau khi reset hệ thống và được thay đổi
bằng phần mềm nếu cần. Ví dụ, ba lệnh sau cho phép bank thanh ghi 3 và di
chuyển nội dung của thanh ghi R7 đến thanh ghi tích lũy A:
SETB RS1
SETB RS0
MOV A,R7
• Cờ Tràn:
Cờ tràn (OV) được set một lệnh cộng hoặc trừ nếu có một phép toán bò
tràn. Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểm tra
bit này để xác đònh xem kết qủa của nó có nằm trong tầm xác đònh không. Khi
các số không dấu được cộng, bit OV có thể được bỏ qua. Các kết qủa lớn hơn
+127 hoặc nhỏ hơn –128 sẽ set bit OV.
b)Thanh ghi B:
Thanh ghi B ở đòa chỉ F0H được dùng cùng với thanh ghi tích lũy A cho
các phép toán nhân và chia. Lệnh MUL AB sẽ nhân các giá trò không dấu 8 bit
trong A và B rồi trả về kết qủa 16 bit trong A (byte thấp) và B (byte cao). Lệnh
DIV AB sẽ chia A cho B rồi trả về kết qủa nguyên trong A và phần dư trong B.
Thanh ghi B cũng có thể được xem như thanh ghi đệm đa dụng. Nó được đòa chỉ
hóa ttừng bit bằng các đòa chỉ bit FOH đến F7H.
• Con trỏ ngăn xếp:(SP)
Thanh ghi SP là thanh ghi 8 bit đònh vò tại đòa chỉ 81H .Nó chứa đòa chỉ của đata
hiện tại ở đỉnh stack .Các phép toán liên quan đến stack boa gồm việc đưa dữ
liệu vào stack(PUSH) và lấy ( POP) đata ra khỏi stack .Việc đưa data vào stack
làm tăng SP trước khi ghi data vào stack ,và việc lấy data ra khỏi stack sẽ làm
giảm nội dung SP
• trỏ dữ liệu:
Con trỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài là một thanh
ghi 16 bit ở đòa chỉ 82H(DPL: byte thấp) và 83H (DPH:byte cao). Ba lệnh sau sẽ
ghi 55H vào RAM ngoài ở đòa chỉ 1000H:
MOV A,#55H
MOV DPTR,#1000H
MOVX @DPTR,A
Lệnh đầu tiên dùng đòa chỉ tức thời để tải dữ liệu 55H vào thanh ghi tích
lũy, lệnh thứ hai cũng dùng đòa chỉ tức thời, lần này để tải dữ liệu 16 bit 1000H
vào con trỏ dữ liệu. Lệnh thứ ba dùng đòa chỉ gián tiếp
để di chuyển dữ liệu trong A (55H) đến RAM ngoài ở đòa chỉ được chứa trong
DPTR (1000H)
c)Các thanh ghi port xuất nhập:
Các port của 8051/8031 bao gồm Port 0 ở đòa chỉ 80H, Port 1 ở đòa chỉ 90
H, Port 2 ở đòa chỉ A0H và Port 3 ở đòa chỉ B0H. Tất cả các Port đều được đòa
chỉ hóa từng bit. Điều đó cung cấp một khả năng giao tiếp thuận lợi.
d)Các thanh ghi timer:
8051/8031 chứa 2 bộ đònh thời đếm 16 bit được dùng trong việc đònh thời
hoặc đếm sự kiện. Timer 0 ở đòa chỉ 8AH (TL0:byte thấp) và 8CH (TH0:byte
cao).Timer 1 ở đòa chỉ 8BH (TL1:byte thấp) và 8DH (TH1: byte cao). việc vận
hành timer được set bởi thanh ghi Timer Mode (TMOD) ở đòa chỉ 89H và thanh
ghi điều khiển timer (TCON) ở đòa chỉ 88H. Chỉ có TCON được đòa chỉ hóa từng
bit.
e)Các thanh ghi port nối tiếp:
8051/8031 chức một port nối tiếp trên chip dành cho việc trao đổi thông
tin với các thiết bò nối tiếp như máy tính, modem hoặc cho việc giao tiếp với
các IC khác có giao tiếp nối tiếp (có bộ chuyển đổi A/D, các thanh ghi dòch..).
Một thanh ghi gọi là bộ đệm dữ liệu nối tiếp (SBUF) ở đòa chỉ 99H sẽ giữ cả hai
giữ liệu truyền và nhận. Khi truyền dữ liệu thì ghi lên SBUf, khi nhận dữ liệu
thì đọc SBUF. Các mode vận hành khác nhau được lập trình qua thanh ghi điều
khiển port nối tiếp (SCON) (được đòa chỉ hóa từng bit) ở đòa chỉ 98H.
f)Các thanh ghi ngắt:
8051/8031 có cấu trúc 5 nguồn ngắt, 2 mức ưu tiên. Các ngắt bò cấm sau
khi reset hệ thống và sẽ được cho phép bằng việc ghi thanh ghi cho phép ngắt
(IE) ở đòa chỉ 8AH. Cả hai thanh ghi được đòa chỉ hóa từng bit.
g)Các thanh ghi điều khiển công suất:
Thanh ghi điều khiển công suất (PCON) ở đòa chỉ 87H chứa nhiều bit điều
khiển. Chúng được tóm tắt trong bảng sau:
Bit
7
6
5
4
3
2
1
0
Ký
hiệu
SMOD
_
_
_
GF1
GF0
PD
IDL
Ý nghóa
Bit này liên quan đến tốc độ baud trong Port nối
tiếp
Không đònh nghóa
Không đònh nghóa
Không đònh nghóa
Bit cờ đa dụng 1
Bit cờ đa dụng 0
Giảm công suất
Chuyển sang chế độ nghỉ.
BảngThanh ghi điều khiển công suất (PCON)
3.5. Bộ nhớ ngoài.
Khi dùng bộ nhớ ngoài, port 0 không còn là một port I/O thuần túy nữa.
Nó được hợp kênh giữa bus đòa chỉ (A0-A7) và bus dữ liệu (D0-D7) với tín hiệu
ALE để chốt byte thấp của đòa chỉ khi bắt đầu mỗi chu kỳ bộ nhớ. Port 2 thông
thường được dùng cho byte cao của bus đòa chỉ.
Trong nửa đầu của mỗi chu kỳ bộ nhớ, byte thấp của đòa chỉ được cấp
trong port 0 và được chốt bằng xung ALE. Một IC chốt 74HC373 (hoặc tương
đương) sẽ giữ byte đòa chỉ thấp trong phần còn lại của chu kỳ bộ nhớ. Trong nửa
sau của chu kỳ bộ nhớ port 0 được dùng như bus dữ liệu và được đọc hoặc ghi
tùy theo lệnh.
a) Truy xuất bộ nhớ chương trình ngoài:
Bộ nhớ chương trình ngoài là mộ IC ROM được phép bởi tín hiệu PSEn.
Hình sau mô tả cách nối một EPROM vào 8051/8031:
Port
0
EA
AL
8051 E
D0÷D7
D
Q
A0÷A7
74CH373
G
Port
2
/
PSE
N Giao tiếp giữa 8051/8031 và EPROM
EPROM
A8÷A1
5
/OE
Một chu kỳ máy của 8051/8031 có 12 chu kỳ xung nhòp. Nếu bộ dao động
trên chip được lái bởi một thạch anh 12MHz thì chu kỳ máy kéo dài 1µs. Trong
một chu kỳ máy sẽ có 2 xung ALE và 2 byte được đọc từ bộ nhớ chương trình
(nếu lệnh hiện hành là một byte thì byte thứ hai sẽ được loại bỏ). Giản đồ thời
gian của một lần lấy lệnh được vẽ ở hình sau:
M o ät c h u k y ø m a ùy
S2
S1
P1
P2
P1
P2
P1
S5
S4
S3
P2
P1
P2
P1
S6
P2
P1
S1
P2
P1
P2
O SC
A LE
PSEN
P o rt 2
PC H
PC H
P o rt 1
PC L
O pcode
PC L
Giản đồ thời gian đọc bộ nhớ chương trình ngoài
b/ Truy xuất bộ nhớ dữ liệu ngoài:
Port
0
EA
D0÷D7
D
Q
A0÷A7
74CH373
AL
G
8051 E
Port
2
/RD
/WR
/
NC
PSE
Giao tiếp giữa 8051/8031 và RAM
N
RAM
A8÷A1
5
/OE
/WR
/CS
Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được cho phép ghi/đọc bằng
các tín hệu WR và RD (các chân P3.6 và P3.7 thay đổi chức năng). chỉ có một
cách truy xuất bộ nhớ dữ liệu ngoài là với lệnh MOVX dùng con trỏ dữ liệu
(DPTR) 16 bit hoặc R0 và R1 xem như thanh ghi đòa chỉ.
Kết nối bus đòa chỉ và bus dữ liệu giữa RAM và 8051/8031 cũng giống
EPROM và do đó cũng có thể lên đến 64 byte bộ nhớ RAM. Ngoài ra, chân RD
của 8051/8031 được nối tới chân cho phép xuất (OE) của RAM và chân WR
được nối tới chân ghi (WR) của RAM.
Giản đồ thời gian cho lệnh đọc bộ nhớ dữ liệu ngoài được vẽ trên hình
sau đối với lệnh MOVX A, @DPTR:
M o ät c h u k y ø m a ùy
M o ät c h u k y ø m a ùy
S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6
A LE
PSEN
R D
PC H
P o rt 2
P o rt 0
PC L
O pcode
D PH
D PL
D A TA
Giản đồ thời gian của lệnh MOVX
Giản đồ thời gian cho lệnh ghi (MOVX @DPTR, A) cũng tương tự chỉ
khác đường WR sẽ thay vào đường RD và dữ liệu được xuất ra trên port 0 (RD
vẫn giữ mức cao).
3.6. Lệnh reset.
8051/8031 được reset bằng cách giữ chân RST ở mức cao ít nhất trong 2
chu kỳ máy và trả nó về múc thấp. RST có thể được kích khi cấp điện dùng một
mạch R-C.
+5V
+5V
100
10UF
8 ,2 K
Mạch Reset hệ thống
Trạng thái của tất cả các thanh ghi của 8051/8031 sau khi reset hệ thống
được tóm tắt trong bảng sau:
Nội dung
Thanh ghi
Đếm chương trình
0000H
Tích lũy
00H
B
00H
PSW
00H
SP
07H
DPTR
0000H
Port 0-3
FFH
IP
XXX00000B
IE
0XX00000B
Các thanh ghi đònh thời
00H
SCON
00H
SBUF
00H
PCON(HMOS)
0XXXXXXB
PCON(CMOS)
0XXX0000B
Bảng Trạng thái các thanh ghi sau khi reset
Quan trọng nhất trong các thanh ghi trên là thanh ghi đếm chương trình,
nó được đặt lại 0000H. Khi RST trở lại mức thấp, việc thi hành chương trình
luôn bắt đầu ở đòa chỉ đầu tiên trong bộ nhớ trong chương trình: đòa chỉ 0000H.
Nội dung của RAM trên chip không bò thay đổi bởi lệnh reset.
II. TẬP LỆNH CỦA 8051/8031.
Tập lệnh 8051/8031 có 255 lệnh gồm 139 lệnh 1 byte, 92 lệnh 2 byte và
24 lệnh 3 byte.
1. Các chế độ đánh đòa chỉ: trong tập lệnh có 8 chế độ đánh đòa chỉ:
a)Thanh ghi đòa ghi:
8051/8031 có 4 bank thanh ghi, mỗi bank có 8 thanh ghi đ1nh số từ R0
đến R7. Tại mỗi thời điểm chỉ có một bank thanh ghi được tích cực.
n n
M a õ l e än h
n
Đòa chỉ thanh ghi
Ngoài ra, một số thanh ghi đặc biệt như thanh ghi tích lũy ACC,B,DPTR.
b)Đòa chỉ trực tiếp:
Trong chế độ này, các thanh ghi bên trong 8051/8031 được đánh đòa chỉ
trực tiếp bằng 8 bit đòa chỉ nằm trong byte thứ hai của mã lệnh.
Mã lệnh
Đòa chỉ trực tiếp
Đòa chỉ trực tiếp
c)Đòa chỉ gián tiếp:
R0 và R1 được dùng để chứa đòa chỉ ô nhớ mà lệnh tác động đến. người
ta quy ước dùng dấu @ trước R0 hoặc R1.
M a õ l e än h
i
Đòa chỉ gián tiếp
d)Đòa chỉ tức thời:
Người ta dùng # trước các toán hạng tức thời. Các toán hạng đó có thể là
một hằng số, một ký số hay một biểu thức toán học...
Mã lệnh
Dữliệu tức thời
Đòa chỉ tức thời
e)Đòa chỉ tương đối:
Đòa chỉ tương đối được dùng trong các lệnh nhảy 8051/8031 dùng giá trò 8
bit có dấu để cộng thêm vào thanh ghi đếm chương trình (PC). Tầm nhảy của
lệnh này trong khoảng từ –128 đến 127 ô nhớ. Trước khi cộng , thanh ghi PC sẽ
tăng đến đòa chỉ theo sau lệnh nhảy rồi tính toán đòa chỉ offset cần thiết để nhảy
đến đòa chỉ yêu cầu. Như vậy đòa chỉ mới là đòa chỉ tương đối so với lệnh kế tiếp
chứ không phải là bản thân lệnh nhảy. Thường lệnh này có liên quan đến nhãn
được đònh nghóa trước.
M a õ l e än h
O f f s e t t ư ơ n g đ o ái
Đòa chỉ tương đối
f)Đòa chỉ tuyệt đối:
Đòa chỉ tuyệt đối chỉ dùng trong các lệnh ACALL và JIMP. Các lệnh 2
byte này dùng để rẽ nhánh vào một trang 2 Kbyte của bộ nhớ trương trình bằng
cách cấp 11 bit đòa chỉ thấp (A0-A10) để xác đònh đòa chỉ đích trong trang mã.
Còn 5 bit cao của đòa chỉ đích (A11-A15) chính là 5 bit cao hiện hành trong
thanh ghi đếm chương trình. Vì vậy đòa chỉ của lệnh theo sau lệnh rẽ nhánh và
đòa chỉ đích của lệnh rẽ nhánh và đòa chỉ đích của lệnh rẽ nhánh cần phải cùng
trang mã 2 Kbyte (có cùng 5 bit đòa chỉ cao).
A15
A11 A10
Xác đònh trang mã
A 1 0 -A 8
A0
xác đònh đòa chỉ trong trang mã
M ã
O f f s e t t ư ơ n g đ o ái
Đòa chỉ tuyệt đối
g)Đòa chỉ dài:
Đòa chỉ dài chỉ dùng cho lệnh LCALL và LJIMP. Các lệnh này chiếm 3
byte và dùng 2 byte sau (byte 2 và byte 3) để đònh đòa chỉ đích của lệnh (16 bit).
Ưu điểm của lệnh này có thể sử dụng trong toàn bộ vùng nhớ 64 Kbyte. Tuy
nhiên, lệnh này chiếm nhiều byte và lệ thuộc vào vò trí vùng nhớ.
Mã lệnh
A15-A8
A7-A0
Đòa chỉ dài
h)Đòa chỉ tham chiếu:
Đòa chỉ tham chiếu dùng một thanh ghi cơ bản (hoặc thanh ghi đếm
chương trình PC hoặc thanh ghi con trỏ dữ liệu DPTR) và đòa chỉ offset (trong
thanh ghi tích lũy A) để tạo đòa chỉ được tác động cho các lệnh JMP hoặc
MOVC. Các bảng nhảy và bảng tìm kiếm dễ dàng được tạo ra để sử dụng đòa
chỉ tham chiếu
O ffse t
đ ò a c h ỉ c ơ b a ûn
P C h o a ëc D P T R
+
A CC
đ ò a c h ỉ đ ư ơ ïc t a ùc đ o än g
=
Đòa chỉ tham chiếu
2. Các nhóm lệnh của 8051/8031:
Tập lệnh của 8051/8031 được chia thành 5 nhóm:
Số học.
Luận lý.
Chuyển dữ liệu.
Chuyển điều khiển.
a)Nhóm lệnh xử lý số học:
ADD A,Rn (1byte,1chu kỳ máy): cộng nội dung thanh ghi Rn vào thanh ghi A
ADD A,data
(2,1): Cộng trực tiếp 1 byte vào thanh ghi A.
ADD A,@Ri
(1,1): Cộng gián tiếp nội dung RAM chứa tại đòa chỉ được
khai báo trong Ri vào thanh ghi A.
ADD A,#data
(2,1):Cộng dữ liệu tức thời vào A.
ADD A,Rn
(1,1): Cộng thanh ghi và cờ nhớ vào A.
ADD A,data
(2,1): Cộng trực tiếp byte dữ liệu và cờ nhớ vào A.
ADDC A,@Ri
(1,1): Cộng gián tiếp nội dung RAM và cờ nhớ vào A.
ADDC A,#data (2,1): Cộng dữ liệu tức thời và cờ nhớ vào A.
SUBB A,Rn
(1,1): Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và
cờ nhớ.
SUBB A,data
(2,1): Trừ trực tiếp A cho một số và cờ nhớ.
SUBB A,@Ri
(1,1): Trừ gián tiếp A cho một số và cờ nhớ.
SUBB A,#data
(2,1): Trừ nội dung A cho một số tức thời và cờ nhớ.
INC A
(1,1): Tăng nội dung thanh ghi A lên 1.
INC Rn
(1,1): Tăng nội dung thanh ghi Rn lên 1.
INC data
(2,1): Tăng dữ liệu trực tiếp lên 1.
INC @Ri
(1,1): Tăng gián tiếp nội dung vùng RAM lên 1.
DEC A
(1,1): Giảm nội dung thanh ghi A xuống 1.
DEC Rn
(1,1): Giảm nội dung thanh ghi Rn xuống 1.
DEC data
(2,1): Giảm dữ liệu trực tiếp xuống 1
DEC @Ri
(1,1): Giảm gián tiếp nội dung vùng RAM xuống 1.
INC DPTR
(1,2): Tăng nội dng con trỏ dữ liệu lên 1.
MUL AB
(1,4): Nhân nội dung thanh ghi A với nội dung thanh ghi B.
DIV AB
(1,4): Chia nội dung thanh ghi A cho nội dung thanh ghi B.
DA A
(1,1,): hiệu chỉnh thập phân thanh ghi A.
b)Nhóm lệnh luận lý:
ANL A,Rn
(1,1): AND nội dung thanh ghi A với nội dung thanh ghi Rn.
ANL A,data
(2,1):AND nội dung thanh ghi A với dữ liệu trực tiếp.
ANL A,@Ri
(1,1): AND nội dung thanh ghi A với dữ liệu gián tiếp trong
RAM.
ANL A,#data
(2,1): AND nội dung thanh ghi với dữ liệu tức thời.
ANL data,A
(2,1): AND một dữ liệu trực tiếp với A.
ANL data,#data (3,2): AND một dữ liệu trực tiếp với A một dữ liệu tức thời.
ANL C,bit
(2,2):AND cờ nhớ với 1 bit trực tiếp.
ANL C,/bit
(2,2): AND cờ nhớ với bù 1 bit trực tiếp.
ORL A,Rn
(1,1): OR thanh ghi A với thanh ghi Rn.
ORL A,data
(2,1): OR thanh ghi A với một dữ liệu trực tiếp.
ORL A,@Ri
(1,1): OR thanh ghi A với một dữ liệu gián tiếp.
ORL A,#data
(2,1):OR thanh ghi A với một dữ liệu tức thời.
ORL data,A
(2,1): OR một dữ liệu trực tiếp với thanh ghi A.
ORL data,#data (3,1):OR một dữ liệu trực tiếp với một dữ liệu tức thời.
ORL C,bit
(2,2): OR cờ nhớ với một bit trực tiếp.
ORL C,/bit
(2,2): OR cờ nhớ với bù của một bit trực tiếp.
XRL A,Rn
(1,1): XOR thanh ghi A với thanh ghi Rn.
XRL A,data
(2,1): XOR thanh ghi A với mộ dữ liệu trực tiếp.
XRL A,@Ri
(1,1): XOR thanh ghi A với một dữ liệu gián tiếp.
XRL A,#data
(2,1): XOR thanh ghi A với mộ dữ liệu tức thời.
XRL data,A
(2,1): XOR một dữ liệu trực tiếp với thanh ghi A.
XRL dara,#data (3,1): XOR một dữ liệu trực tiếp với một dữ liệu tức thời.
SETB C
(1,1): Đặt cờ nhớ.
SETB bit
(2,1): Đặt một bit trực tiếp.
CLR A
(1,1): Xóa thanh ghi A.
CLR C
(1,1): Xóa cờ nhớ.
CPL A
(1,1): Bù nội dung thanh ghi A.
CPL C
(1,1): Bù cờ nhớ.
CPL bit
(2,1): Bù một bit trực tiếp.
RL A
(1,1): Quay trái nội dung thanh ghi A.
RLC A
(1,1): Quay trái nội dung thanh ghi A qua cờ nhớ.
RR A
(1,1): Quay phải nội dung thanh ghi A.
RRC A
(1,1): Quay phải nội dung thanh ghi A qua cờ nhớ.
SWAP
(1,1): Quay trái nội dung thanh ghi A 1 nibble (1/2byte).
c) Nhóm lệnh chuyển dữ liệu:
MOV A,Rn
(1,1):Chuyển nội dung thanh ghi Rn vào thanh ghi A.
MOV A,data
(2,1): Chuyển dữ liệu trực tiếp vào thanh ghi A.
MOV A,@Ri
(1,1): Chuyển dữ liệu gián tiếp vào thanh ghi A.
MOV A,#data
(2,1): Chuyển dữ liệu tức thời vào thanh ghi A.
MOV Rn,data
(2,2): Chuyển dữ liệu trực tiếp vào thanh ghi Rn.
MOV Rn,#data (2,1): Chuyển dữ liệu tức thời vào thanh ghi Rn.
MOV data,A
(2,1): Chuyển nội dung thanh ghi A vào dữ liệu trực tiếp.
MOV data,Rn
(2,2):Chuyển nội dung thanh ghi Rn vàodữ liệu trực tiếp.
MOV data,@Ri (2,2): Chuyển một dữ liệu gián tiếp vào dữ liệu gián tiếp.
MOV @Ri,A
(1,1): Chuyển nội dung thanh ghi A vào dữ liệu gián tiếp.
MOV @Ri,data (2,2): Chuyển một dữ liệu trực tiếp vào dữ liệu gián tiếp.
MOV @Ri,#data (2,1): Chuyển dữ liệu tức thời vào dữ liệu gián tiếp.
MOV DPTR,#data (3,2): Chuyển một hằng 16 bit vào thanh ghi DPTR.
MOV C,bit
(2,1): Chuyển một bit trực tiếp vào cờ nhớ.
MOV bit,C
(2,2): Chuyển cờ nhớ vào một bit trực tiếp.
MOV A,@A+DPTR (1,2): Chuyển byte bộ nhớ chương trình có đòa chỉ là
@A+DPRT vào thanh ghi A.
MOVC A,@A+PC (1,2): Chuyển byte bộ nhớ chương trình có đòa chỉ là @A+PC
vào thanh ghi A.
MOV A,@Ri
(1,2): Chuyển dữ liệu ngoài (8 bit đòa chỉ) vào thanh ghi A.
MOVX A,@DPTR (1,2): Chuyển dữ liệu ngoài (16 bit đòa chỉ) vào A.
MOVX @Ri,A
(1,2): Chuyển nội dung A ra dữ liệu ngoài (8 bit đòa chỉ).
MOVX @DPTR,A (1,2): Chuyển nội dung A ra dữ liệu ngoài (16 bit đòa chỉ).
PUSH data (2,2) : Chuyển dữ liệu trực tiếp vào ngăn xếp và tăng SP.
POP data (2,2)
: Chuyển dữ liệu trực tiếp vào ngăn xếp và giảm SP.
XCH A,Rn (1,1) : Trao đổi dữ liệu giữa thanh ghi Rn v2 thanh ghi A.
XCH A,data (2,1) : Trao đổi giữa thanh ghi A và một dữ liệu trực tiếp.
XCH A,@Ri (1,1) : Trao đổi giữa thanh ghi A và một dữ liệu gián tiếp.
XCHD A,@R (1,1)
: Trao đổi giữa nibble thấp (LSN) của thanh ghi A và
LSN của dữ liệu gián tiếp.
d) Nhóm lệnh chuyền điều khiển:
ACALL addr11 (2,2): Gọi chương trình con dùng đòa chì tuyệt đối.
LCALL addr16 (3,2): Gọi chương trình con dùng đòa chỉ dài.
RET
(1,2): Trở về từ lệnh gọi chương trình con.
RETI
(1,2): Trở về từ lệnh gọi ngắt.
AJMP addr11
(2,2): Nhảy tuyệt đối.
LJMP addr16
(3,2): Nhảy dài.
SJMP rel
(2,2):Nhảy ngắn.
JMP @A+DPTR (1,2): Nhảy gián tiếp từ con trỏ dữ liệu.
JZ rel
(2,2): Nhảy nếu A=0.
JNZ rel
(2,2): Nhảy nếu A không bằng 0.
JC rel
(2,2): Nhảy nếu cờ nhớ được đặt.
JNC rel
(2,2): Nhảy nếu cờ nhớ không được đặt.
JB bit,rel
(3,2): Nhảy tương đối nếu bit trực tiếp được đặt.
JNB bit,rel
(3,2):Nhảy tương đối nếu bit trực tiếp không được đặt.
JBC bit,rel
(3,2):Nhảy tương đối nếu bit trực tiếp được đặt,rồi xóa bit.
CJNE A,data,rel (3,2): So sánh dữ liệu trực tiếp với A và nhảy nếu không
bằng.
CJNE A,#data,rel (3,2): So sánh dữ liệu tức thời với A và nhảy nếu không
bằng.
CJNE Rn,#data,rel
(3,2): So sánh dữ liệu tức thời với nội dung thanh ghi
Rn và nhảy nếu không bằng.
CJNE @Ri,#data,rel (3,2): So sánh dữ liệu tức thời với dữ liệu gián tiếp và
nhảy nếu không bằng.
DJNZ Rn,rel
(2,2): Giản thanh ghi Rn và nhảy nếu không bằng.
DJNZ data,rel
(3,2): Giảm dữ liệu trực tiếp và nhảy nếu không bằng.
III.HOẠT ĐỘNG CỦA BỘ ĐỊNH THỜI (TIMER)
1.Giới thiệu:
8051/8031 có hai timer 16 bit ,mỗi timer có 4 cách làm việc người ta sử
dụng các timer để :
a) đònh khoảng thời gian
b) đếm sự kiện
c) tạo tốc độ bad cho Port nối tiếp có sẵn trong 8051/8031
Truy xuất các timer dùng 6 thanh ghi chức năng đặc biệt
SFR
MỤC ĐÍCH
ĐỊA
CHỈ
TCON Điều khiển timer
88H
TMO Chế độ timer
89H
D
Byte thấp của timer 8AH
TL0
0
8BH
TL1
Byte thấp của timer 8CH
TH0
1
8DH
TH1
Byte cao của timer
0
Byte cao của timer
1
Đòa chỉ hóa từng bit
Có
Không
Không
Không
Không
Không
2. Thanh ghi chế độ timer (TMOD):
Thanh ghi TMOD chứa hai nhóm 4 bit dùng để đặt chế độ làm việc cho
timer 0 và timer 1.
Bit
Bit
7
Tên
6
C/T*
Timer
GATE 1
1
Mô tả
Bit (mở) cổng, khi set thì Timer
chạy khi INT1 ở mức cao
Bit chọn chế độ timer/counter
1: đếm sự kiện
5
4
M1
M0
1
1
3
2
1
0
GATE
C/T*
M1
M0
0
0
0
0
0: đònh thời
Bit 1 của chế độ
Bit 0 của chế độ
00: chế độ 0 (timre 13 bit)
01: chế độ 1 (timer 16 bit)
10: chế độ 2 (8 bit tự động nạp
lại)
11: chế độ 3 (tách timer)
Bit (mở ) cổng
Bit chọn timer/counter
Bít của chế độ
Bit 0 của chế độ
3. Thanh ghi điều khiển timer (TCON):
Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho
timer 0 và timer 1.
BIT
Ký
Đòa
Mô tả
hiệu
chỉbit
TCON. TF1
8FH
Cờ báo tràn timer 1.
7
TCON. TR1
8EH
Bit điều khiển timer 1 chạy/ngưng.
6
TCON. TF0
8DH
Cờ báo tràn timer 0
5
TCON. TR0
8CH
Bit điều khiển timer 0 chạy/ngưng.
4
TCON. IE1
8BH
Cờ cạnh interrupt 1 bên ngoài .
3
TCON. IT1
8AH
Cờ kiểu interrupt 1 bên ngoài đặt/xóa
2
bằng phần mềm với interrupt bên ngoài
tác động mức thấp/cạnh xuống
TCON. IE0
89H
Cờ cạnh interrupt 0 bên ngoài
1
TCON. IT0
88H
Cờ kiểu interrupt 0 bên ngoài
0
4. Các chế độ timer:
a)Chế độ 0, chế độ timer 13 bit:
Để tương thích với 8048 (có trứớc 8051)
Ba bit cao của TLX (TL0 và/hoăc TL1) không dùng
Xung nhòp timer
TLx
(5 bit)
THx
(8 bit)
TFx
Cờ báo tràn
b)Chế độ 1- chế độ timer 16 bit.
Hoạt động như timer 16 bit đầy đủ.
Cờ báo tràn là bit TFx trong TCON có thể đọc hoặc ghi bằng phầm mềm.
MSB của giá trò trong các thanh ghi timer là bit 7 của THx và LBS là bit 0
của TLx. Các thanh ghi timer (Tlx/THx) có thể được đọc hoặc ghi bất cứ lúc
nào bằng phầm mềm.
Xung nhòp timer
TLx
(8 bit)
THx
(8 bit)
TFx
Cờ báo tràn
c)Chế độ2- chế độ tự động nạp lại 8 bit.
TLx hoạt động như một timer 8 bit, trong khi đó THx vẫn giữ nguyên giá
trò được nạp. Khi số đếm tràn tứ FFH đến 00H, không những cờ timer được set
mà giá trò trong THx đồng thời được nạp vào TLx. Việc đếm tiếp tục từ giá trò
này lên đến FFH xuống 00H và nạp lại... chế độ này rất thông dụng vì sự tràn
timer xảy ra trong những khoảng thời gian nhất đònh và tuần hoàn một khi đã
khởi động TMOD và THx.
Xung nhòp
timer
TLx
(8 bit)
TFx
Nạp lại
THx
(8 bit)
Cờ báo tràn
d)Chế độ 3- chế độ tách timer
Timer 0 được tách thành hai Timer 8 bit với cờ báo tràn là TF0 và TF1.
Timer 1 không còn bò tác động bởi cờ tràn TF1.Timer ngưng ở chế độ 3, nhưng
có được khởi động bằng cách chuyển sang chế độ khác.
1/12fosc
TL1
TH1
TH1
Xung nhòp timer
TL0
Xung nhòp timer
TH0
TF0
Cờ báo tràn
TF1
Cờ báo tràn
5.Nguồn tạo xung nhòp:
Có hai nguồn tạo xung nhòp có thể có, đươcï chọn bằng cách ghi vào bit
C/T (counter/timer) trong TMOD khi khởi động timer. Một nguồn tạo xung nhòp
dùng cho đònh khoảng thời gian, cái khác cho đếm sự kiện.
On chip
Osillator
÷12
Clock (T0 or T1)
−
C/T
Nguồn tạo xung nhòp
0=Up (Internal Timing)
1=Down (Event Counting)
-Đònh khoảng thời gian (interval timing)