Để đo tốc độ của động cơ, ta sử dụng phương pháp đo số xung phản hồi 
từ động cơ. Bằng cách gắn đồng trục với động cơ 1 đĩa ,trên đĩa có đục một lỗ 
nhỏ cho phép ánh sang đi qua . Đĩa này được đặt vào khe của một bộ phát thu 
hồng ngoại. Khi động cơ quay làm cho đĩa quay theo. Xung phát ra từ bộ hồng 
ngoại sẽ mức “1” khi không có vật chắn giữa mắt phát và thu, mức “0” khi bị 
phần liền chắn mặt hồng ngoại. Xung này sẽ được vi điều khiển để xử lý và 
đưa ra tốc độ hiện tại của động cơ.
                
              
                                            
                                
            
 
            
                 25 trang
25 trang | 
Chia sẻ: lvcdongnoi | Lượt xem: 3890 | Lượt tải: 1 
              
            Bạn đang xem trước 20 trang tài liệu Tiểu luận Đo tốc độ động cơ, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
 1
Tiểu luận 
Đo tốc độ động cơ 
 2
 Đề Tài : ĐO TỐC ĐỘ ĐỘNG CƠ 
 Nhóm thực hiện : Đồng Sỹ Cường 
 Nguyễn Đức Hiếu 
 Lớp :Điện Tử 2K-48 
 MỤC LỤC 
 I. Giới thiệu chung 
 I.1.nhiệm vụ và yêu cầu kĩ thuật 
 I.2.ứng dụng và khả năng phát triển 
 II. Giới thiệu các linh kiện trong mạch 
 II.1. Giới thiệu về vi điều khiển AT89C51 
 II.1.1. Tổng quan về vi điều khiển 
 II.1.2. Kiến trúc phần cứng AT89C51 
 II.1.3. Hoạt động của Timer 
 II.1.4. Hệ thống ngắt 
 II.2. Giới thiệu các linh kiện sử dụng trong mạch 
 II.2.1.Nguồn 
 II.2.2. IC giải mã7447 
 II.2.3. Đèn LED 
 II.2.4. Động cơ 
 II.2.5. Cảm biến 
 III.Nguyên lý hoạt động và thiết kế mạch điện 
 III.2.1.Cảm biến 
 III.2.2 Sơ đồ khối bộ đếm 
 III.2.3 Sơ đồ khối hiển thị 
 IV.Sơ đồ nguyên lý mạch điện 
 V.Lưu đồ thuật toán và mã nguồn chương trình 
 3
 I. Giới thiệu chung 
 I.1.Nhiệm vụ và yêu cầu kĩ thuật 
 Thiết kế một mạch điện cho phép ta đo tốc độ động cơ dựa trên các ứng 
dụng của vi điều khiển. Phần mềm được lập trình và nạp vào vi điều khiển . 
Phần cứng bao gồm mạch điện và động cơ .Cấu trúc và chức năng từng phần sẽ 
được đề cập chi tiết trong mục thiết kế. 
 Mạch điện có yêu cầu: 
 Sử dụng chip vi điều khiển AT89S52. 
 Động cơ một chiều có tốc độ tối đa 65535 vòng/phút và tốc độ tối thiểu là 
0 vòng/phút. Mạch thực hiện đếm tốc độ động cơ trong vòng 1 phút và hiển thị 
ra đèn LED .Khi động cơ quay được 1 vòng sẽ có một xung gửi tới chân P3.5 
vi điều khiển và vi điều khiển bắt đầu đếm. 
I.3: Ứng dụng và khả năng phát triển : 
 -Mạch đo tốc độ động cơ được sử dụng để xác định tốc độ động cơ một chiều 
.Sau khi đo được tốc độ có thể biết được động cơ chạy có đúng với thiết kế hay 
không, do đó có thể kiểm tra xem động cơ có bị hỏng hóc không. Ngoài ra 
trong một số trường hợp biết tốc độ động cơ để điều chỉnh cho phù hợp. Từ 
những ứng dụng trên nên máy đo tốc độ động cơ sẽ ngày càng phát triển, hiện 
đại hơn kết hợp với nhiều chức năng mới và ngày càng có mặt nhiều trong cuộc 
sống. 
II. Giới thiệu các linh kiện trong mạch 
 II.1. Giới thiệu về vi điều khiển AT89C51 
 II.1.1. Tổng quan về vi điều khiển 
 Bộ vi điều khiển MC (MicroController) là một chip có thể lập trình 
được để điều khiển hoạt động của hệ thống. Nhờ chương trình điểu khiển, bộ vi 
điều khiển sẽ thực hiện đọc các tín hiệu từ bên ngoài vào, lưu trữ rồi xử lý, sau 
đó dựa vào kết quả của quá trình xử lý để đưa ra các thông báo, tiến hành các 
 4
bật tắt các thiết bị bên ngoài. Vi điều khiển được ứng dụng trong rất nhiều sản 
phẩm công nghiệp và tiêu dùng. 
 Vi điều khiển được xây dựng từ vi xử lý. Năm 1971, tập đoàn Intel đã 
giới thiệu bộ vi xử lý thành công đầu tiên 80x80. Sau đó một thời gian ngắn, 
các hãng Motorola, RCA, MOS Technology và Zilog đã lần lượt giới thiệu các 
chip vi xử lý tương ứng là 6800, 1801, 6502, và Z80. Bản thân các mạch tích 
hợp (IC:integrated Circuit) này không thể tự làm gì khi đứng riêng rẽ, nhưng 
khi nằm trong bo mạch chủ của hệ thống, nó trở thành bộ phận trung tâm của 
những sẳn phẩm có ích. 
 Xuất phát từ những yêu cầo về điều khiển và giám sát hệ thống, một IC 
tương tự với bộ vi xử lý được ra đời là vi điều khiển. Năm 1976, Intel giới 
thiệu chip vi điều khiển đầu tiên trong họ vi điều khiển MCS-48 là 8748. Mạch 
tích hợp này chứa hơn 17000 Transistor gồm một CPU, 1Kbyte EPROM, 64 
byte RAM, 27 chân I/O và một bộ định thời 8 bit. IC này và các chip xuất hiện 
về sau trong họ 48 nhanh chóng chuẩn công nghiệp trong các ứng dụng về điều 
khiển. Các ứng dụng phổ biến là trong máy giặt, hệ thống đèn giao thông và 
dần dần xuất hiện trong xe hơi, thiết bị công nghiệp, sản phẩm tiêu dùng và 
thiết bị ngoại vi của máy tính. Về sau sức mạnh cũng như sự phức tạp của MC 
đã nâng lên mức cao hơn. Năm 1980, Intel đã giới thiệu chip vi điều khiển đầu 
tiên trong họ MCS-61 là 8051. So với 8048, 8051 chưa hơn 60000 Transistor 
bao gồm một CPU, 4 Kbyte ROM, 128 byte RAM, 32 chân I/O, một cổng nối 
tiếp, 2 bộ định thời 16 bit. 
 Sơ đồ khối của một bộ vi điều khiển: 
CPU 
Timer Điều 
khiển ngắt 
Giao tiếp 
nối tiếp 
Giao tiếp 
song song 
Nguồn đồng 
 hồ ngoài 
đồng hồ 
nội 
Ngắt ngoài Thiết bị nối tiếp 
Thiết bị 
song song 
 5
II.1.2. Kiến trúc phần cứng AT89C51 
 AT89C51 là phiên bản 8051 có ROM trên chip là Flash. Phiên bản này 
thích hợp cho ứng dụng nhanh vì bộ nhớ Flash có thể xoá trong vài giây. 
AT89C51 có thể được lập trình qua công COM của máy tính IBM PC. 
 Các thành phần bên trong nó gồm có: 
- 128 byte RAM 
- 8Kbyte ROM 
- 32 đường xuất nhập 
- 3 bộ định thời đếm 16 bit 
- 8 nguyên nhân ngắt 
- một port nối tiếp song công 
- một mạch dao động và tạo xung clock trên chi 
a. Cấu hình các chân của 89ATC51: 
b. Mô tả các chân 
- Vcc (40) 
 Chân cung cấp điện (5V) 
- GND (20) 
 Chân nối đất (0V) 
U1
AT89C52
9
18
19
29
30
31
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
39
38
37
36
35
34
33
32
RST
XTAL2
XTAL1
PSEN
ALE/PROG
EA/VPP
P1.0/T2
P1.1/T2-EX
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
RAM ROM 
Bus dữ liệu, địa chỉ, điều khiển 
 6
 Cổng Port 1 được chỉ định là cổng I/O từ chân 1 đến 8. Chúng được sử 
dụng cho mục đích duy nhất là giao tiếp với thiết bị khi cần thiết. Ngoài ra các 
chân P1.0, P1.1 là 2 chân liên quan đến hoạt động ngắt của bộ định thời 2. 
 Trong những mô hình thiết kế không dùng bộ nhớ ngoài, Port 0 là cổng 
I/O. Còn đối với các hệ thống lớn hơn có yêu cầu một số lượng đáng kể bộ nhớ 
ngoài thì Port 0 trở thành các đường truyền dữ liệu và 8 bit thấp của bus địa 
chỉ. Ngoài ra chân P1.0(T2) là ngõ vào của bộ đếm thời gian 2. P1.1(T2EX) là 
chân capture/reload của bộ đếm thời gian 2. 
 Cổng Port 2 là cổng I/O hoặc là đường tryển 8 bit cao của bus địa chỉ 
cho những mô hình thiết kế có bộ nhớ chương trình ở nằm ngoài học có hơn 
256 byte bộ nhỡ dữ liệu ngoài . 
 Cổng Port 3 ngoài mục đích chung là cổng I/O, những chân này còn 
kiêm luôn nhiều chức năng khác liên quan đến đặc tính đăc biệt của vi điều 
khiển. 
Bit Tên Địa chỉ bit Chức năng thứ hai 
P3.0 RXD B0H Nhận dữ liệu cho cổng nối tiếp 
P3.1 TXD B1H Truyền dữ liệu cho cổng nối tiếp 
P3.2 ‘INTO B2H Ngắt 0 bên ngoài 
P3.3 ‘INT1 B3H Ngắt 1 bên ngoài 
P3.4 T0 B4H Ngõ vào bộ đếm thời gian 0 
P3.5 T1 B5H Ngõ vào bộ đếm thời gian 1 
P3.6 ‘WR B6H Tín hiệu điều khiển ghi bộ nhớ dữ liệu ngoài 
P3.7 ‘RD B7H Tín hiệu điều khiển đọc bộ nhớ dữ liệu ngoài 
Những chức năng thứ hai của chân cổng Port 3 
- ‘PSEN là một tín hiệu điều khiển cho phép bộ nhớ chương trình bên 
ngoài hoạt động. Nó thường được kết nối đến chân ‘OE (Output Enable) 
của ‘EPROM để đọc các byte chương trình. Xung tín hiệu ‘PSEN luôn ở 
mức thấp trong suốt phạm vi quá trình của một lệnh. Còn khi thi hành 
chương trình từ ROM ở ngay bên trong chip, chân ‘PSEN luôn ở mức 
cao. 
- Tín hiệu ALE có chức năng đặc biệt tách byte địa chỉ thấp và bus dữ 
liệu khi cổng P0 được sử dụng cở chế độ tuần tự hay còn gọi là chế độ 
dồn kênh, nghĩa là sử dụng cùng một đường truyền cho các bit dữ liệu 
và byte thấp của bus địa chỉ 
- Khi chân ‘EA ở mức cao, vi điều khiển được thực hiện các chương 
trình lưu trữ ỏ vùng nhớ thấp hơn 8Kbyte ROM bên trong chip. Còn 
‘EA ở mức thấp chỉ có những chương trình lưu ở bộ nhớ ngoài mới 
được thực hiện 
 7
- AT89S52có một bộ dao động nội bên trong chip hoạt động theo tần số 
của một dao động thạch anh nằm bên ngoài. Tần số thông dụng của 
thạch anh là 11,0592 MHZ. 
 - RST (9) 
 Ngõ vào reset. Mức cao trên chân này trong 2 chu kỳ máy trong khi 
bộ dao động đang hoat động sẽ reset AT89S52. 
Mạch reset tác động bằng tay và tự động reset khi khởi động máy 
- XTAL1 và XTAL2 
 XTAL1 và XTAL2 là hai ngõ vào và ra của một bộ khuếch đại đảo của 
mạch dao động, được cấu hình để dùng như một bộ dao động trên chip. 
 Không có yêu cầu nào về chu kỳ nhiệm vụ của tín hiệu xung clock bên 
ngoài do tín hiệu này phải qua một flip-flop chia hai trước khi đến mạch tạo 
xung clock bên trong, tuy nhiên các chi tiết kỹ thuật về thời gian mức thấp và 
mức cao, điện áp cực tiểu và cực đại cần phải được xem xét. 
c. Các chế độ đặc biệt 
c.1 Chế độ nghỉ 
 Trong chế độ nghỉ, CPU tự đi vào trạng thái ngủ trong khi tất cả các 
ngoại vi bên trong chip vẫn tích cực. Chế độ này được điều khiển bởi phần 
mềm. Nội dung của RAM trên chip và của tất cả các thanh ghi chức năng đặc 
biệt vẫn không đổi trong khi thời gian tồn tại chế độ này. Chế độ nghỉ có thể 
được kết thúc bởi một ngắt bất kỳ nào được phép hoặc bằng cách reset cứng. 
 Ta cần lưu ý rằng khi chế độ nghỉ được kết thúc bởi một reset cứng, 
chip vi điều khiển sẽ tiếp tục bình thường việc thực thi chương trình từ nơi 
chương trình bị tạm dừng, trong vòng 2 chu kỳ máy trước khi giải thuật reset 
mềm nẵm quyền điều khiển. 
 Ở chế độ nghỉ, phần cứng trên chip cẫm truy xuất RAM nội nhưng cho 
phép truy xuất các chân của các port. Để tránh khả năng có một thao tác ghi 
RST 
 8
không mong muốn đến một chân port khi chế độ nghỉ kết thúc bằng reset, lệnh 
tiếp theo yêu cầu chế độ nghỉ không nên là lệnh ghi đến chân port hoặc đến bộ 
nhớ ngoài. 
c.2 Chế độ nguồn giảm 
 Trong chế độ này, mạch dao động ngừng hoạt động và lệnh yêu cầu chế 
độ nguồn giảm là lệnh sau cùng được thực thi. RAM trên chip và các thanh ghi 
chức năng đặc biệt vẫn duy trì các giá trị của chúng cho đến khi chế độ nguồn 
giảm kết thúc. Chỉ có một cách ra khỏi chế độ nguồn giảm, đó là reset cứng. 
 Việc reset sẽ xác định lại các thanh ghi chức năng đặc biệt nhưng không 
làm thay đổi RAM trên chip. Việc reset không nên xảy ra (chân reset ở mức 
tích cực) trước khi Vcc được khôi phục lại mức điện áp bình thường và phải 
kéo dài trạng thái tích cực của chân reset đủ lâu để cho phép mạch dao động 
hoạt động trở lại và đạt trạng thái ổn định. 
Trạng thái của các chân trong thời gian tồn tại chế độ nghỉ và chế độ 
nguồn giảm được cho trong bảng sau: 
Chế độ 
Bộ nhớ 
Chương trình 
ALE PSEN PORT O PORT 1 PORT 2 PORT 3 
Nghỉ Bên trong 1 1 Dữ liệu Dữ liệu Dữ liệu Dữ liệu 
Nghỉ Bên ngoài 1 1 Thả nổi Dữ liệu Dữ liệu Dữ liệu 
Nguồn 
giảm 
Bên trong 0 0 Dữ liệu Dữ liệu Dữ liệu Dữ liệu 
Bên ngoài 0 0 Thả nổi Dữ liệu Dữ liệu Dữ liệu 
c.3 Các bít khoá bộ nhớ chương trình 
 Trên chip có ba bit khoá, các bít này có thể không cho phép lập trình 
hoặc cho phép lập trình, các bit này cho ta thêm một số đặc trưng nữa của 
AT89C51 như sau. 
 Khi bit khoá 1 LB1 được lập trình, mức logic ở chân EA được lấy mẫu 
và được chốt trong khi reset. Nếu việc cấp nguồn cho chip không có công 
dụng reset, mạch chốt được khởi động bằng một giá trị ngẫu nhiên và giá trị 
này được duy trì cho đến khi có tác động reset. Điều cần thiết là giá trị được 
chốt của EA phải phù hợp vơi mức logic hiện hành ở chân này. 
Các bit khóa chương trình Loại bảo vệ 
 9
Chế độ LB1 LB2 LB3 
1 U U U Không có đặc trưng khóa chương trình 
2 P U U Các lệnh MOVC được thực thi từ bộ nhớ 
chương trình ngoài không được phép tìm 
nạp lệnh từ bộ nhớ nội, EA được lấy mẫu 
và được chốt khi reset, hơn nữa việc lập 
trình trên Flash bị cấm 
3 P P U Như chế độ 2, cấm thêm việc kiểm tra 
chương trình 
4 P P P Như chế độ 3, cấm thêm việc thực thi 
chương trình ngoài 
d. Tổ chức bộ nhớ 
 Không gian bộ nhớ của bộ vi điều khiển được phân chia thành 2 phần: 
bộ nhớ dữ liệu và bộ nhớ chương trình. Hầu hết các IC MCS đều có bộ nhớ 
chương trình nằm bên trong chip, tuy nhiên cũng có thể mở rộng dung lượng 
lên đến 64K bộ nhớ chương trình và 64K dữ liệu bằng cách sử dụng một số bộ 
nhớ ngoài. 
 Bên trong chip vi điều khiển AT89C51 có 128 byte bộ nhớ dữ liệu. 
Không gian bộ nhớ bên trong được chia thành các bank thanh ghi, RAM địa chỉ 
theo bit, RAM dùng chung và các thanh ghi chức năng đặc biệt. 
7F 
30 
RAM dùng chung 
FF 
F0 F7 F6 F5 F4 F3 F2 F1 F0 B 
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC 
D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW 
CD TH2 
CC TL2 
CB RCAP2L 
CA RCAP2H 
C8 T2CON 
B8 - - - BC BB BA B9 B8 IP 
2F 7F 7E 7D 7C 7B 7A 79 78 B0 B7 B6 B5 B4 B3 B2 B1 B0 P3 
2E 77 76 75 74 73 72 71 70 A8 AF - - AC AB AA A9 A8 IE 
2D 6F 6E 6D 6C 6B 6A 69 68 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2 
2C 67 66 65 64 63 62 61 60 99 SBUF 
2B 5F 5E 5D 5C 5B 5A 59 58 98 9
F 
9
E 
9D 9C 9B 9A 99 98 SCON 
 10
2A 57 56 55 54 53 52 51 50 90 97 96 95 94 93 92 91 90 P1 
29 4F 4E 4D 4C 4B 4A 49 48 8D TH1 
28 47 46 45 44 43 42 41 40 8C TH0 
27 3F 3E 3D 3C 3B 3A 39 38 8B TL1 
26 37 36 35 34 33 32 31 30 8A TL0 
25 2F 2E 2D 2C 2B 2A 29 28 
24 27 26 25 24 23 22 21 20 89 TMOD 
23 1F 1E 1D 1C 1B 1A 19 18 
22 17 16 15 14 13 12 11 10 88 8F 8E 8D 8C 8B 8A 89 88 TCON 
21 0F 0E 0D 0C 0B 0A 09 08 PCON 
20 07 06 05 04 03 02 01 00 
1F 
Bank Register 
 83 DPH 
 82 DPL 
 81 SP 
00 80 87 86 85 84 83 82 81 80 P0 
Sơ đồ chi tiết không gian bộ nhớ dữ liệu bên trong vi điều khiển 
e. Các thanh ghi chức năng đặc biệt 
 AT89C51 có các thanh ghi R0 đến R7 và 21 thanh ghi chức năng đặc 
biệt SFR (Special Function Register) nằm ở phần trên của RAM từ địa chỉ 80H 
đến FFH. 
- Thanh ghi trạng thái PSW(Program Status Word): 
Bit Ký hiệu Địa chỉ Mô tả bit 
PSW.7 CY D7H Cờ nhớ 
PSW.6 AC D6H Cờ nhớ phụ 
PSW.5 FO D5H Cờ 0 
PSW.4 RS1 D4H Chọn dãy thanh ghi(bit 1) 
PSW.3 RS0 D3H Chọn dãy thanh ghi(bit 0) 
00=bank1: địa chỉ từ 00h đến 07h 
01=bank2: địa chỉ từ 08h đến 0Fh 
10=bank3: địa chỉ từ 10h đến 17h 
01=bank2: địa chỉ từ 18h đến 1Fh 
PSW.2 OV D2H Cờ tràn 
PSW.1 - D1H Dự trữ 
PSW.0 P D0H Cờ kiểm tra chẵn lẻ 
 11
- Thanh ghi B: thanh ghi luôn được sử dụng kèm theo thanh ghi A để 
thực hiện các phép toán nhân và chia. Thanh ghi B xem như là thanh ghi đệm 
dùng chung. Nó có địa chỉ từ F0 đến F7. 
- Con trở ngăn xếp: là một thanh ghi 8 bit, nó chứa địa chỉ của phần dữ 
liệu đang hiện diện tại đỉnh ngăn xếp. Ngăn xếp hoạt động theo phương thức 
LIFO. Hoạt động đẩy vào ngăn xếp làm tăng SP lên trước khi ghi dữ liệu vào. 
Hoạt động lấy ra khỏi ngăn xếp sẽ đọc dữ liệu ra rồI giảm SP. 
- Con trỏ dữ liệu DPTR(Data Pointer): DPTR được sử dụng để truy cập 
vào bộ nhớ chương trình và bộ nhớ dữ liệu ngoài, đó là thanh ghi 16 bot có 8 
bit thấp ở địa chỉ 82H (DPL) và 8 bit cao ở địa chỉ 83h (DPL) 
- Các thanh ghi cổng: Các cổng I/O của VDL bao gồm P0 tại địa chỉ 
80H, P1 ở địa chỉ 90H, P2 tại địa chỉ A0H, P3 tạI địa chỉ B0H. Tất cả các cổng 
đều có địa chỉ bit nên cung cấp khả năng giao tiếp với bên ngoài rất mạnh 
- Các thanh ghi bộ đếm thời gian: AT89C51 có 3 bộ đếm thời gian 16 
bit để định các khoảng thời gian hay đếm các sự kiện. Timer0 có địa chỉ 8AH 
(TL0: bit thấp) và 8CH(TH0: byte cao). Timer1 có địa chỉ 8BH (TL1: bit thấp) 
và 8DH(TH1: byte cao). Timer2 có địa chỉ CCH (TL2: bit thấp) và 8CD(TH2: 
byte cao). Hoạt động của các bộ đếm thời gian được thiết lập bởi các thanh ghi 
TMOD,TCON, T2CON. Ngoài ra các thanh ghi RCAP2L, RCAP2H được sử 
dụng trong chế độ tự nạp của 16 bitbộ định thời 2. 
- Các thanh ghi cổng tuần tự: IC AT89C51 chứa một cổng nối tiếp để 
kết nối với các thiết bị nối tiếp như moderm hoặc để giao tiếp với các IC khác 
sử dụng giao tiếp nối tiếp. Bộ đệm dữ liệu nối tiếp SBUF lưu giữ cả dữ liệu 
truyền đi và dữ liệu nhận được. 
- Các thanh ghi ngắt: AT89C51 có 6 nguyên nhân ngắt và 2 ngắt ưu 
tiên. Các ngắt bị cấm sau khi hệ thống khởi động lại và để được bật bằng cách 
ghi vào thanh ghi cho phep ngắt IE. Mức ưu tiên được thiết lập thông qua thanh 
ghi ưu tiên IP. 
- Thanh ghi điều khiển năng lượng PCON (Power Control Register): 
chứa nhiều bit điều khiển đảm bảo các chức năng khác nhau. 
II.1.3. Hoạt động của bộ Timer 
a. Giới thiệu chung 
Bộ định thời là một dãy các flip-flop chia 2, chúng nhận một tín hiệu 
đưa vào như là nguồn đồng hồ. Tín hiệu từ nguồn đồng hồ được đưa vao flip-
flop thứ nhất và ngõ ra của flip-flop thứ nhất lại làm tín hiệu đồng hồ cho flip-
flop của bộ thứ hai và cứ tiếp tục như vậy. Do mỗI tầng kế tiếp nhau chia cho 
2, nên bộ định thời với n tầng sẽ chia tần số của tín hiệu đồng hồ ngõ vào cho 
2n. Ngõ ra của tần cuốI cùng dùng để điều khiển cho flip-flop tràn, hay còn gọi 
là cờ tràn và nó được kiểm tra bởi phần mềm, nó thường được dùng để tạo ra 
 12
một ngắt. Giá trị nhị phân trong các flip-flop được hiểu là số xung đồng hồ 
đếm( các sự kiện) khi bộ đếm thời gian bắt đầu hoạt động. Bộ đếm thời gian 16 
bit sẽ thực hiện đếm từ 0000H đến FFFFH. Cờ tràn được lập khi nội dung bộ 
đếm chuyển từ FFFFH về 0000H.. 
 Các bộ định thời được dùng trong các hệ thống điều khiển. Trong 
AT89C51 có 3 bộ định thời 16 bit. Bộ định thời được dùng để 
- Xác định các khoảng thời gian. Bộ định thời được lập trình để tran 
trong một khoảng thời gian nào đó và cờ tràn được bật lên. 
- Tạo ra tốc độ baud cho việc truyền thông tin tại cổng nối tiếp 
- Đếm các sự kiện, đo khoảng thời gian trôi qua giữa các sự kiện. Mỗi 
sự kiện chính là bất kỳ tác nhân kích thích ngoài nào tạo sự chuyển 
đổi từ 1 về 0 qua một chân của chip 
b. Các thanh ghi của bộ định thời 
Để truy cập bộ định thời, ta sử dụng 11 thanh ghi SFR sau: 
SFR Mục đích Địa chỉ Định địa chỉ bit 
TCON Điều khiển 88H Có 
TMOD Chọn chế độ 89H Không 
TL0 Byte thấp của bộ định thời 0 8AH Không 
TL1 Byte thấp của bộ đinh thời 1 8BH Không 
TH0 Byte cao của bộ đinh thời 0 8CH Không 
TH1 Byte cao của bộ đinh thời 1 8DH Không 
T2CON Điều khiển bộ định thời 2 C8H Có 
RCAP2L Nhận byte thấp của bộ định thời 2 CAH Không 
RCAP2H Nhận byte cao của bộ định thời 2 CBH Không 
TL2 Byte thấp của bộ đinh thời 2 CCH Không 
TH2 Byte cao của bộ định thời 2 CDH Không 
- Thanh ghi kiểu thời gian TMOD (Timer Mode Register 
Bit Tên Timer Chức năng 
7 GATE 1 Khi bit Gate=1 và ‘INT1 cao thì Timer 1 mới hoạt động 
6 C/’T 1 Bit chọn counter/timer (1/0) 
5 M1 1 Bit mode 1 
4 M0 1 Bit mode 0 
3 GATE 0 Bit GATE của timer 0 
2 C/’T 0 Bit chọn counter/timer (1/0) Timer 0 
1 M1 0 Bit mode 1 của Timer 0 
0 M0 0 Bit mode 0 của Timer 0 
Các bít địa chỉ trong thanh ghi TMOD 
 13
 Thanh ghi TMOD được chia thành 2 nhóm bit 4 bit dùng để thiết lập chế 
độc hoạt động của Timer 0 vàTimer 1. 
 Các chế độ hoạt động của bộ định thời 
 + M1=0, M0=0: Mode 0 (Chế độ định thời 13-bit) 
 + M1=0, M0=1: Mode 1 (Chế độ định thời 16 bit) 
 + M1=1, M0=0: Mode 2 (Chế độ tự động nạp 8 bit) 
 + M1=1, M0=1: Mode 3 (Chế đô định thời chia xẻ) 
- Thanh ghi điều khiển định thời TCON (Timer Control Register) 
Bit Ký hiệu Địa chỉ bit Mô tả 
TCON.7 TF1 8FH Cờ tràn bộ định thời 
TCON.6 TR1 8EH Bit điều khiển hoạt động của bộ định thời 1 
TCON.5 TF0 8DH Cờ tràn bộ định thời 0 
TCON.4 TR0 8CH Bit điều khiển hoạt động của bộ định thời 1 
TCON.3 IE1 8BH Cờ ngắt bên ngoài 1 
TCON.2 IT1 8AH Cờ ngắt bên ngoài 1 
TCON.1 IE0 89H Cờ ngắt bên ngoài 0 
TCON.0 IT0 88H Cờ ngắt bên ngoài 0 
Thanh ghi điều khiển định thời TCON 
 - Thanh ghi điều khiển bộ định thời 2 T2CON 
Bit Ký hiệu Địa chỉ bit Mô tả 
T2CON.7 TF2 CFH Cờ tràn bộ định thời 
T2CON.6 EXF2 CEH Cờ ngoài bộ định thời 2 
T2CON.5 RCLK CDH Clock phát của bộ định thời 2 
T2CON.4 TCLK C8CH Clock thu của bộ định thời 2 
T2CON.3 EXEN2 C8BH Cho phép từ bên ngoài 
T2CON.2 TR2 CAH Bit điều khiển hoạt động của bộ định thời 
T2CON.1 C/’T2 C9H Bit chọn Counter/Timer của Timer 2 
T2CON.0 CP/’RL2C C8H Cờ thu nhận/nạp lại của bộ định thời 2 
c.Các chế độ của Timer và cờ tràn 
Chế độ định thời 13 bit (Mode 0): 
Mode 0 ít được sử dụng trong các hệ thống mới. Byte cao của bộ định thời THx 
được kết hợp vớI 5 bit có trọng số nhỏ nhất vủa byte thấp của bộ định thời TLx 
để tạo nên bộ định thời 13 bit. #bit còn lạI của TLx không được sử dụng 
TLx (5bit) THx (8bit) TF 
 14
Mode định thời 13 bit 
Chế độ định thời 16 bit (Mode 1) 
Trong Mode 1, tín hiệu đồng hồ được đưa vào cả 2 byte cao và thấp của bộ 
định thời (TLx,THx). Khi nhận xung đồng hồ, bộ định thời bắt đầu đếm lên từ 
0000H. Hiện tượng tràn xảy ra khi có chuyển tiếp từ FFFFH về 0000H và làm 
bật cờ tràn. 
Mode định thời 16 bit 
Chế độ tự động nạp lại 8 bit (Mode 2) 
Trong Mode 2, thanh ghi định thời TLx hoạt động như là bộ dịnh thời 8 bit 
trong khi byte cao của bộ dịnh thời lưu giá trị nạp lại. Khi quá trình đếm ở TLx 
bị tràn từ FFH về 00H thì không những cờ tràn bật lên mà giá trị tổng THx 
được nạp vào TLx, và tiếp tục quá trình đếm từ giá trị này tới khi xảy ra sự 
chuyển đổi tiếp theo từ FFH về 00H. 
Mode định thời 16 bit 
Chế độ định thời phân chia (Mode 3) 
Mode 3 là mode định thời phân chia và khác nhau đối với mỗi bộ định thời. 
Timer 0 trong mode 3 được chia thành 2 bộ định thời 8b bit. TL0 và TH0 hoạt 
động như 2 bộ định thời riêng rẽ và sử dụng các cờ tràn tương ứng là TF0,TF1. 
Timer 1 trong mode 3 ngừng làm việc nhưng có thể hoạt động bằng cách 
chuyển nó sang một trong mode khác. Điều hạn chế duy nhất là cờ tràn của 
Timer mode không bị ảnh hưởng khi xảy ra tràn Timer1, bởi vì nó được nối 
đến TH0 
TLx(8bit) THx(8bit) TFx(cờ tràn) Timer Clock 
Timer Clock TLx(8bit) 
THx(8bit) 
TFx(cờ tràn) 
TL1(8bit) TH1(8bit) Timer Clock 
TL0(8bit) TF0(cờ tràn) Timer Clock 
TH0(8bit) TF1(cờ tràn) 1/12 FOSC 
 15
Mode định thời phân chia (Mode 3) 
II.1.4. Hệ thống ngắt. 
a. Giới thiệu chung 
Ngắt đóng vai trò trong việc thiết kế và thực hiện các ứng dụng của vi 
điều khiển. Chúng cho phép hệ thống đáp ứng một cách không đồng bộ đến 
một sự kiện và giải quyết sự kiện đó khi chương trình khác đó khi chương trình 
khác đang chạy. 
 Chương trình giải quyết yêu cầu của một ngắt gọi là thủ tục phục vụ 
ngắt ISR. ISR dùng để đáp ứng lại một ngắt và thường là thực hiện các hoạt 
động vào ra đối với một thiết bị vào ra nối với vi điều khiển. Khi xảy ra một 
ngắt chương trình chính tạm dừng công việc đang thi hành và rẽ nhánh sang 
ISR, tiếp theo ISR hoạt động để đáp ứng yêu cầu của ngắt và nó sẽ kết thúc 
bằng lệnh quay trở về, chương trình chính sẽ hoạt đông tiếp tạu ngay sau điểm 
rẽ nhánh. Chương trình chính thực hiện ở mức cơ bản còn ISR thực hiện ở mức 
ngắt. 
b. Tổ chức ngắt: 
 AT89C51 có tất cả 6 nguyên nhân ngắt: hai ngắt do bên ngoài, ba ngắt 
do bộ định thời, một ngắt do port nối tiếp. Tất cả các ngắt đều bị cấm sau khi 
hệ thống khởi động (reset) sau đó chúng được cho phép bằng phần mềm. 
c. Độ ưu tiên ngắt. 
Chương trình chính 
CT chính 
ISR 
CT chính 
ISR 
CT chính 
thực hiện ISR Quay về CT 
chính 
Quá trình thực hiện chương trình mà không có ngắt 
Quá trình thực hiện chương trình mà có 
 16
 Mỗi một nguồn ngắt có thể được lập trình để đạt đươc một trong 2 mức 
ưu tiên thông qua thanh ghi chức năng đặc biệt có địa chỉ bit IP tạI 0B8H. 
Thanh ghi IP bị xoá sau khi hệ thống khởi động để đặt các ngắt ở mức ưu tiên 
thấp hơn so với mặc định. Trong AT89C51 tồn tạI 2 mức ưu tiên. Khi một ưu 
ngắt có mức ưu tiên cao xuất hiện trong một ISR có mức ưu tiên thấp đang thi 
hành thì ISR đó sẽ bị ngừng lại, ISR có mức ưu tiên cao hơn sẽ được thực hiện. 
Nếu 2 ngắt có mức ưu tiên khác nhau xảy ra cùng một lúc thì ngắt có mức ưu 
tiên cao hon sẽ được phục vụ trước. 
Bit Ký hiệu Địa chỉ bit Mô tả 
TE.7 EA AFH Bit bật/ tắt dùng chung 
TE.6 - AEH Không định nghĩa 
TE.5 ET2 ADH Cho phép ngắt Timer 2 
TE.4 ES ACH Cho phép ngắt cổng nốI tiếp 
TE.3 ET1 ABH Cho phép ngắt Timer 1 
TE.2 EX1 AAH Cho phép ngắt ngoài 1 
TE.1 ET0 A9H Cho phép ngắt Timer 0 
TE.0 EX0 A8H Cho phép ngắt ngoài 0 
Các bit trong thanh ghi IE (Interupt Enable) 
Bit Ký hiệu Địa chỉ bit Mô tả 
IP.7 - - Không định nghĩa 
IP.6 - - Không định nghĩa 
IP.5 PY2 BDH Ưu tiên cho ngắt Timer 2 
IP.4 PS BCH Ưu tiên cho ngắt cổng nốI tiếp 
IP.3 PT1 BBH Ưu tiên cho ngắt Timer 1 
IP.2 PX1 BAH Ưu tiên cho ngắt ngoài 1 
IP.1 PT0 B9H Ưu tiên cho ngắt Timer 0 
IP.0 PX0 B8H Ưu tiên cho ngắt ngoài 0 
Các bit trong thanh ghi IP (Interrupt priority) 
d. Cơ chế chọn lựa tuần tự 
Nếu có 2 ngắt cùng mức ưu tiên xảy ra đồng thời, một cơ chế chọn lựa theo thứ 
tự có sẵn sẽ xác định ngắt nào được đáp ứng trước. Việc chọn lựa theo thứ tự 
là: External 0, Timer 0, External 1, Timer 1, Serial Port, Timer 2. 
Quá trình xử lý ngắt: 
 Khi một ngắt xuất hiện và nó được CPU chấp nhận, chương trình chính 
bị ngừng, các hoạt động tiếp theo xảy ra như sau: 
 + Thực hiện xong lệnh hiện hành đó 
 17
 + Bộ đếm chương trình PC được lưu vào trong Stack 
 + Lưu giữ tình trạng của ngắt hiện tại 
 + Các nguồn ngắt được giữ tại mức của ngắt hiện tại 
 + Nap vào PC địa chỉ Vector của ISR 
 + ISR thực hiên 
 ISR hoạt động để đáp ứng lại yêu cầu ngắt. ISR kết thúc bằng lệnh 
RETI có tác dụng quay trở về chương trình chính, lệnh này sẽ nạp lại giá trị cũ 
của PC trong ngăn xếp và khôi phục tình trạng của ngắt cũ. Việc thực hiện 
chương trình chính tiếp tục diễn ra tại nơi nó tạm dừng. 
e. Vector ngắt: 
 Khi một ngắt được chấp nhận thì giá trị nạp vào PC gọi là vectơ ngắt. 
Nó chính là địa chỉ bắt đầu của ISR tương ứng với ngắt được chấp nhận. Sau 
đây là bảng các vectơ ngắt 
Ngắt Cờ Địa chỉ Vector 
System reset RST 0000H 
External 0 IE0 0003H 
Timer 0 TF0 000BH 
External 1 IE1 0013H 
Timer 1 TF1 001BH 
Serial Port RI or TI 0023H 
Timer 2 TF2 or EXF2 002BH 
Các vecto ngắt. 
II.2. Giới thiêu về các linh kiện chính được sử dụng 
II.2.1.Nguồn 
 Mạch điện sử dụng nguồn 5V một chiều.Trong khuôn khổ đề tài chúng 
em chọn cách sử dụng bộ nguồn tháo từ máy tính 
II.2.2. IC giải mã 7447 
U6
7447
7
1
2
6
4
5
3
13
12
11
10
9
15
14
D0
D1
D2
D3
BI/RBO
RBI
LT
A
B
C
D
E
F
G
 18
Bảng giải mã của IC 
D0 D1 D2 D3 A B C D E F G 
0 0 0 0 1 1 1 1 1 1 0 
0 0 0 1 0 1 1 0 0 0 0 
0 0 1 0 1 1 0 1 0 0 1 
0 0 1 1 1 1 1 1 0 0 1 
0 1 0 0 0 1 1 0 0 1 1 
0 1 0 1 1 1 0 1 1 0 1 
0 1 1 0 0 1 1 1 1 0 1 
0 1 1 1 1 1 1 0 0 0 0 
1 0 0 0 1 1 1 1 1 1 1 
1 0 0 1 1 1 1 1 0 1 1 
Các đầu ra của IC giải mã sẽ được nối các chân tương ứng của LED 7 
thanh có Anốt chung. 
II.2.3.LED 
 Sử dụng 5 Led 7 thanh loại Anốt chung để hiển thị tốc độ động cơ 
U1
LED
1
2
3
4
5
6
7
A
B
C
D
E
F
G
U3
LED
1
2
3
4
5
6
7
A
B
C
D
E
F
G
U2
LED
1
2
3
4
5
6
7
A
B
C
D
E
F
G
U4
LED
1
2
3
4
5
6
7
A
B
C
D
E
F
G
U5
LED
1
2
3
4
5
6
7
A
B
C
D
E
F
G
 Khi sử dụng 7 chân a,b,c,d,e,f,g sẽ được nối tới IC giải mã 7447. Khi 
chân nào ở mức thấp sẽ làm cho đèn đó hiển thị. 
II.2.4. Động cơ 
Động cơ sử dụng trong mạch là một động cơ một chiểu có điện áp tối đa đặt 
vào động cơ là 24V. Trên trục động cơ có gắn một đĩa tròn, trên đĩa tròn khoét 
1 lỗ cho ánh sang đi qua 
II.2.5. Cảm biến 
 Cảm biến là hai đèn Led phát và thu hồng ngoại được gắn với nhau 
thành 1 bộ. Đĩa được đặt vào trong khe của bộ phát thu hồng ngoại này. Bộ 
 19
phát thu hồng ngoại có nhiệm vụ đếm số xung/vòng quay khi động cơ quay. 
Sau đó dãy xung này sẽ được đưa về vi điểu khiển để xử lý. 
II.2.6. Bộ khuếch đại thuật toán 
 Sử dụng IC LM324 là 1 IC có chứa 4 bộ khuếch đại thuật toán có nhiệm 
vụ so sánh hai mức điện áp ở ngõ vào để cho ra điện áp ở ngõ ra là mức cao 
hay thấp. 
+
-
U1A
LM324
3
2
1
4
11
III. Nguyên lý hoạt động và thiết kế mạch điện. 
 III.1. Nguyên lý đo tốc độ của động cơ 
Để đo tốc độ của động cơ, ta sử dụng phương pháp đo số xung phản hồi 
từ động cơ. Bằng cách gắn đồng trục với động cơ 1 đĩa ,trên đĩa có đục một lỗ 
nhỏ cho phép ánh sang đi qua . Đĩa này được đặt vào khe của một bộ phát thu 
hồng ngoại. Khi động cơ quay làm cho đĩa quay theo. Xung phát ra từ bộ hồng 
ngoại sẽ mức “1” khi không có vật chắn giữa mắt phát và thu, mức “0” khi bị 
phần liền chắn mặt hồng ngoại. Xung này sẽ được vi điều khiển để xử lý và 
đưa ra tốc độ hiện tại của động cơ. 
 Như vậy, ta có: 
 1vòng quay tạo ra 1 xung 
 Trong 1 phút có n vong quay (n vong/phut) sẽ tạo ra n xung. 
 Giả sử trong 60 giay ta đếm được a xung. 
 Vậy ta có tốc độ hiện tại của động cơ sẽ là n (vong/phut) 
Bằng cách sử dụng bộ định thời có chức năng đếm xung, ta có thể đếm 
số xung phản hồi về trong một thời gian xác định trước. 
 III.2.Thiết kế cụ thể 
 III.2.1.Cảm biến 
Cảm biến phải có phần phát và phần thu. Phần phát phát ra ánh sáng 
hồng ngoại và phần thu hấp thụ ánh sáng hồng ngoại vì ánh sáng hồng ngoại có 
đặc điểm là ít bị nhiễu so với các loại ánh sáng khác. Khi có vật cản đi qua giữa 
phần phát và phần thu, ánh sáng hồng ngoại bị che LED thu sẽ không thông, 
hai mức điện áp khác nhau sẽ được đưa tới hai chân của bộ khuếch đại thuật 
toán và ở đầu ra của bộ khuếch đại thuật toán sẽ có hai mức điện áp khác nhau 
tương ứng với hai trạng thái thông, ngắt của LED thu. Tín hiệu này được đưa 
tới đầu vào bộ đếm của vi xử lí và vi xử lí tiến hành đếm. 
 20
Sơ đồ khối của phần phát và phần thu là: 
D1
PHOTODIODE
D2
LED
+
-
U1A
LM324
3
2
1
4
11
R1
R
R2
R
R3
R
U2
GND
U4
GND
U5
GND
U6
GND
U7
VCC
U9
VCC
U10
VCC U11
VCC
R4
R
Hình 1.4: Sơ đồ nguyên lý của mạch thu phát 
IV.Sơ đồ nguyên lý mạch điện: 
 21
 Hình 3.4: Sơ đồ toàn mạch 
IV.1.Hoạt động của mạch: 
 Ban đầu khi động cơ bắt đầu quay, ánh sang hồng ngoại do Led phát phát 
ra bị che khuất không đến được Led thu, lúc này Led thu không cho dòng điện 
đi qua, chân (-) của bộ khuếch đại thuật toán được nối lên dương nguồn trong 
khi chân (+) của nó được nối với hai điện trở phân áp và mức điện áp đặt vào 
nó luôn nhỏ hơn 5V dẫn đến đầu ra của bộ khuếch đại thuật toán ở mức thấp,vi 
xử lí chưa đếm. Khi động cơ quay được 1 vòng đến vị trí đĩa gắn trên trục động 
cơ bị đục lỗ ánh sáng hồng ngoại chiếu xuyên qua, Led thu thu được ánh sáng 
này đồng thời cho dòng điện đi qua. Điện trở nối với Led thu gây ra sụt áp lớn 
làm cho điện áp ngõ vào (+) lớn hơn điện áp ngõ vào (-) dẫn đến đầu ra bộ 
khuếch đại ở mức cao đưa đến vi xử lí và vi xử lí bắt đầu đếm. 
 Tiến hành đếm đến đâu vi xử lí chuyển đổi giá trị đếm về dạng thập phân 
và đưa ra IC giải mã 7447 giải mã hiển thị ra Led 7 thanh. 
 Vi xử lí tiến hành đếm số xung vào cho đến khi được 1 phút thì ghi lại giá 
trị số xung vào trong phút đó và đưa ra IC giải mã cho Led hiển thị cố định giá 
trị này. 
 Khi bấm công tắc Reset quá trình trên lại được bắt đầu lại từ đầu đo số 
vòng quay của động cơ trong 1 phút mới. 
 22
V.Lưu đồ thuật toán và mã nguồn chương trình 
V.1. Lưu đồ thuật toán: 
 MAIN 
1 
 CHƯƠNG TRÌNH CON HIỂN THỊ 
 R1=R1+80H 
 R2=R2+40H 
 R3=R3+20H 
 P2=R1 
 P2=R2 
 P2=R3 
 CHƯƠNG TRÌNH CON ĐẾM XUNG 
 TH0 =0D8H 
 TL0 = 0EFH 
 SETB TR0 
XUNG = 0 
A = A+1 
 TF0=1 
 R7 =R7 -1 
 TF0 =0 
 TR = 0 
 R7 = 0 
1 
0 
 CHƯƠNG TRÌNH CON TÍNH TOÁN 
B := 100 ; DIV AB 
 R1 := A ; 
A:=B, B:=10, DIV AB , 
R2:=A , R3:=B 
 KHỞI TẠO 
 BỘ ĐỊNH THỜI 
 R7 = 200, A = 0 
0 
1 
0 
 23
V.2. Mã nguồn chương trình: 
 ;---------Chuong trinh chinh--------------------------------------------------------- 
Hundred equ 200D 
 ORG 00H ; Bat dau chuong trinh chinh 
MAIN: 
 CLR A ;Xoa thanh ghi A 
 MOV R5,#100 ;Khoi tao gia tri cho R5 
 MOV R1,#0H ; Xoa R1 
 MOV R2,#0H ; Xoa R2 
 MOV R3,#0H ; Xoa R3 
 LCALL DEM ; Goi chuong trinh con Dem 
 LCALL TINH ; Goi chuong trinh con Tinh 
 LCALL HIENTHI ; Goi chuong trinh con Hien thi 
 SJMP MAIN ; Tro ve dau chuong trinh chinh 
;----------------------------------------------------------------------------------- 
;---------Chuong trinh dem--------------------------------------------------------- 
DEM: 
 SETB P1.1 ;dua tin hieu vao cong P1.1 
 MOV TMOD,#01H ; che do 1 bo dinh thoi 0 
 MOV R7,#hundred ; lap 100 lan 
AGAIN: MOV TH0,#03CH ; khi TF0 =1 thi ta duoc 10000 xung nhip 
=10000um 
 MOV TL0,#0AFH 
 SETB TR0 ; khoi tao bo timer 
WAIT: JB TF0,WAIT2 
 24
WAIT1: JNB P1.1,WAIT 
 INC A ; bien A dung de dem xung vao 
 JNB TF0,WAIT1 
WAIT2: CLR TF0 
 CLR TR0 
 DJNZ R7,AGAIN ; giam R7 di mot va nhay den AGAIN den khi nao 
 ; R7 = 0 thi dung lai 
 RET 
;----------------------------------------------------------------------------------- 
;----------Tinh toan so lieu-------------------------------------------------------- 
TINH : MOV B,#10 
 DIV AB 
 MOV B,#100 
 DIV AB 
 MOV R1,A ; Luu so hang tram vao R1 
 MOV A,B 
 MOV B,#10 
 DIV AB 
 MOV R2,A ; Luu so hang chuc vao R2 
 MOV R3,B ; Luu so hang don vi vao R3 
 RET 
;----------------------------------------------------------------------------------- 
;--------------Dua ra LED------------------------------------------------------------ 
HIENTHI: 
LOOP: 
 MOV A,R1 
 ADD A,#10000000B 
 MOV P2,A ; Dua so hang tram ra LED thu nhat 
 LCALL DELAY 
 MOV A,R2 
 ADD A,#01000000B 
 MOV P2,A ; Dua so hang chuc ra LED thu hai 
 LCALL DELAY 
 MOV A,R3 
 ADD A,#00100000B 
 MOV P2,A ; Dua so hang don vi ra LED thu ba 
 LCALL DELAY 
 25
 ADD P2,#0E0H 
HERE: 
 DJNZ R5,LOOP 
 RET 
;----------------------------------------------------------------------------------- 
;------------------------------------------------------------------ 
; Chuong trinh hoan 
DELAY : 
 MOV R0,#200 
LOOP1 : MOV R4,#50 
LOOP2 : 
 NOP 
 DJNZ R4,LOOP2 
 DJNZ R0,LOOP1 
 RET 
;----------------------------------------------------------------------------------- 
END 
            Các file đính kèm theo tài liệu này:
 bai_tap_lon_dc_3428.pdf bai_tap_lon_dc_3428.pdf