Professional Documents
Culture Documents
Muốn sử dụng timer 0 ở chế độ 2 , counter 1 ở chế độ 1 thì thanh ghi TMOD có giá trị bằng
bao nhiêu?
TMOD= 0101 0010 (0x52)
Câu 2.
A, sơ đồ khối
BUS Control khối điều khiển các Bus địa chỉ (Address Bus), Bus dữ liệu (Address Data), Bus
điều khiển (Control Bus).
I/O Port Cổng vào/ra (P0, P1, P2, P3: 8 bit ~ 8 chân).
Serial port Cổng truyền thông nối tiếp
cpu Bộ xử lý của vi điều khiển
Câu 2
A, sơ đồ khối
TH XUNG
CẢNH BÁO
(led đơn)
TỐC ĐỘ
encoder
đếm số sản phẩm trên bang tải với cảm biến quang sử dụng ngắt timer.
Câu 2.
A, sơ đồ khối
Thiết bị ngoại vi sử dụng trong hệ thống :
RAM Bộ nhớ dữ liệu (lưu trữ dữ liệu tạm thời, thanh ghi đặc biệt)
TIMER/COUNTER Bộ đếm thời gian/bộ đếm xung
BUS Control khối điều khiển các Bus địa chỉ (Address Bus), Bus dữ liệu (Address Data), Bus
điều khiển (Control Bus).
I/O Port Cổng vào/ra (P0, P1, P2, P3: 8 bit ~ 8 chân).
Serial port Cổng truyền thông nối tiếp
cpu Bộ xử lý của vi điều khiển
Câu 2.
A, sơ đồ khối
RAM Bộ nhớ dữ liệu (lưu trữ dữ liệu tạm thời, thanh ghi đặc biệt)
BUS Control khối điều khiển các Bus địa chỉ (Address Bus), Bus dữ liệu (Address Data), Bus
điều khiển (Control Bus).
I/O Port Cổng vào/ra (P0, P1, P2, P3: 8 bit ~ 8 chân).
Serial port Cổng truyền thông nối tiếp
cpu Bộ xử lý của vi điều khiển
Câu 2
A, sơ đồ khối
TH XUNG
CẢNH BÁO
(led đơn)
TỐC ĐỘ
encoder
RAM Bộ nhớ dữ liệu (lưu trữ dữ liệu tạm thời, thanh ghi đặc biệt)
BUS Control khối điều khiển các Bus địa chỉ (Address Bus), Bus dữ liệu (Address Data), Bus
điều khiển (Control Bus).
I/O Port Cổng vào/ra (P0, P1, P2, P3: 8 bit ~ 8 chân).
Serial port Cổng truyền thông nối tiếp
cpu Bộ xử lý của vi điều khiển
Câu 2.
A, sơ đồ khối
đếm số sản phẩm trên bang tải với cảm biến quang sử dụng ngắt timer.
Câu 2
A, sơ đồ khối
TH XUNG
CẢNH BÁO
(led đơn)
TỐC ĐỘ
encoder
RAM Bộ nhớ dữ liệu (lưu trữ dữ liệu tạm thời, thanh ghi đặc biệt)
BUS Control khối điều khiển các Bus địa chỉ (Address Bus), Bus dữ liệu (Address Data), Bus
điều khiển (Control Bus).
I/O Port Cổng vào/ra (P0, P1, P2, P3: 8 bit ~ 8 chân).
Serial port Cổng truyền thông nối tiếp
cpu Bộ xử lý của vi điều khiển
Câu 2
A, sơ đồ khối
TH XUNG
CẢNH BÁO
(led đơn)
TỐC ĐỘ
encoder
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. có
độ dài 8 bits, có địa chỉ là E0H
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. 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 là một thanh ghi có địa chỉ 81H, 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 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.
Dưới đây là những bước hoạt động của timer ở chế độ 1:
Đây là bộ định thời 16 bit, do vậy nó cho phép các giá trị 0000 đến FFFFHđược nạp vào các
thanh ghi TL và TH của bộ định thời.
Sau khi TL và TH được nạp một giá trị khởi tạo 16 bit thì bộ định thời phải được khởi động.
Điều này được thực hiện bởi việc SET bit TR0 đối vớiTimer 0 và SET bit TR1 đối
với Timer 1.
Sau khi bộ định thời được khởi động, nó bắt đầu đếm lên. Nó đếm lên cho đến khi đạt được
giới hạn FFFFH của nó. Sau đó, khi nó quay từ FFFFH về 0000thì nó bật lên bit
cờ TF được gọi là cờ bộ định thời. Cờ bộ định thời này có thể được hiển thị. Khi cờ bộ định
thời này được thiết lập, để dừng bộ định thời: ta thực hiện xóa các bit TR0 đối với Timer
0 hoặc TR1 đối với Timer 1. Ở đây cũng cần phải nhắc lại là đối với mỗi bộ định thời đều có
cờ TF riêng của mình: TF0 đối với Timer 0 và TF1 đối với Timer 1.
Sau khi bộ định thời đạt được giới hạn của nó là giá trị FFFFH, muốn lặp lại quá trình thì
các thanh ghi TH và TL phải được nạp lại với giá trị ban đầu và cờTF phải được xóa về 0
Câu 2
a, Sơ đồ khối
Encoder
Hiển thi lcd ( led 7 thanh)
Đồng hồ đo xung
C, giả sử đường kính truyền động là 10mm
pi=3,14
chu vi hình tròn= pi x d= 31,4mm
mà số xung/vòng= 100 xung
số mm/xung= 31,4/100= 0,314mm
1 xung -> 0,314mm
X xung ->H/1000 m
H= x/1000
Đề 1
A, Nguyên lý đo nhiệt độ, đề xuất phương pháp xử lý tín hiệu ra từ lm35 và tính toán nhiệt độ
-Nguyên lý đo nhiệt độ : Sử dụng cảm biến nhiệt độ lm35 để đo nhiệt độ, lm35 sẽ đo nhiệt độ
môi trường và xuất giá trị Analog dạng điện áp 0-1.5V ,tuy nhiên giá trị điện áp này khá nhỏ, để
tăng độ chính xác ta đưa tín hiệu điện áp này qua khối chuẩn hóa rồi đến khối ADC đến VXL để
VXl có thể đọc, tính toán được giá trị nhiệt độ để hiển thị và cảnh báo
B,Sơ đồ khối
A, Nguyên lý đo nhiệt độ, đề xuất phương pháp xử lý tín hiệu ra từ lm35 và tính toán nhiệt độ
-Nguyên lý đo nhiệt độ : Sử dụng cảm biến nhiệt độ lm35 để đo nhiệt độ, lm35 sẽ đo nhiệt độ
môi trường và xuất giá trị Analog dạng điện áp 0-1.5V ,tuy nhiên giá trị điện áp này khá nhỏ, để
tăng độ chính xác ta đưa tín hiệu điện áp này qua khối chuẩn hóa rồi đến khối ADC đến VXL để
VXl có thể đọc, tính toán được giá trị nhiệt độ để hiển thị và cảnh báo
B,Sơ đồ khối
ĐỀ 4
A,Nguyên lý đo, phương pháp xử lý tín hiệu và tính toán chiều dài
-Encoder được gắn đồng trục với trục quay của máy cắt, gọi đường kính trục quay là D. Khi tấm tôn đi
qua và trục quay, encoder sẽ bắt đầu đếm xung ,Khi trục quay quay được 1 vòng thì enconder cũng quay
được 1 vòng = 100 xung, và chiều dài của tấm tôn đi qua bằng với chu vi của trục quay C= Pi*D
Ta đưa chân tín hiệu của encoder vào chân ngắt ngoài của VXL để đếm xung. VD số xung đếm được
là P
Chiều dài tấm tôn L = P/100*C (m)
B,Sơ đồ khối
-Khối cảm biến: Encoder gắn đồng trục với trục quay để chuyển đổi giá trị độ dài ( Không điện), thành tín
hiệu xung ( điện ) sau đó gửi đến
-Khối vi điều khiển để tính toán giá trị chiều dài và xuất tín hiệu lến khối LED 7 thanh để hiển thị,giám
sát
C.Lưu đồ thuật toán
ĐỀ 6
A,Nguyên lý đo mức, Phương pháp xử lý tín hiệu ra từ cảm biến và tính toán mức
-Hệ thống sử dụng cảm biến mức ( Dạng que) có đầu ra dạng Analog ( Điện áp) từ 0-2,5V tương ứng với
chiều cao của mức nước 0-5m. Do tín hiệu ra của cảm biển nhỏ Cho tín hiệu đó đưa qua khối chuẩn
hóa tín hiệu về 0-5V. Sau đo đưa qua khối ADC 0804 để chuyển đổi về tín hiệu số 0-255 để vi xử lý có
thể đọc và tính toán ra mực nước để hiển thị lên LCD
B,
A,Nguyên lý đo lưu lượng và xác định các tín hiệu điều khiển xuất từ vđk đến các ngoại vi
- Hệ thống đo lưu lượng trên sử dụng cảm biến lưu lượng với dải đo 0-15 lít/s tương ứng với ngõ ra
dạng xung vuông có tần số 0-1kHz. TÍn hiệu từ cảm biến sẽ được đưa vào chân ngắt ngoài 0 P3.2
để đọc và xử lý, tính toán ra giá trị của lưu lượng
- Các tín hiệu điều khiển xuất từ VĐK tới các ngoại vi gồm:
+ Tín hiệu điều khiển các led 7 thanh theo phương pháp quét led để hiện thị giá trị lưu lượng
+ Tín hiệu điều khiển led đơn để cảnh báo khi giá trị lưu lượng vượt ngưỡng 14l/s
B, Sơ đồ khối
-Khối cảm biển: Nhận biết và chuyển đổi tín hiệu lưu lượng ( KHông điện ) thành tín hiệu dạng xung
( Điện) để vi điều khiển có thể nhận biết và tính toán được
-Khối vi điều khiển: Nhận tín hiệu từ cảm biến để tính toán, xuất tín hiệu đến led 7 thanh và led đơn để
hiển thị và cảnh báo
-Khối hiển thị, cảnh báo: Hiển thị giá trị lưu lượng để giám sát, quản lý cũng như cảnh báo khi giá trị lưu
lượng vượt ngưỡng cho phép
Khối cảnh báo:
ĐỀ 12
A,Nguyên lý đo mức, Phương pháp xử lý tín hiệu ra từ cảm biến và tính toán mức
-Hệ thống sử dụng cảm biến mức ( Dạng que) có đầu ra dạng Analog ( Điện áp) từ 0-5V tương ứng với
chiều cao của mức nước 0-5m. . Sau đo đưa qua khối ADC 0804 để chuyển đổi về tín hiệu số 0-255 để vi
ử lý có thể đọc và tính toán ra mực nước để hiển thị lên LCD
B,SƠ ĐỒ KHỐI
B,Sơ đồ khối
A, Nguyên lý đo nhiệt độ, đề xuất phương pháp xử lý tín hiệu ra từ lm35 và tính toán nhiệt độ
-Nguyên lý đo nhiệt độ : Sử dụng cảm biến nhiệt độ để đo nhiệt độ, Cảm biếnsẽ đo nhiệt độ môi
trường và xuất giá trị Analog dạng điện áp 0-5V ,ta đưa tín hiệu điện áp này qua khối ADC đến
VXL để VXl có thể đọc, tính toán được giá trị nhiệt độ để hiển thị
-Để tính toán giá trị nhiệt độ
+ Vin = data*Vref/255
1V=a (độC)= 160 độ C
Nhiệt độ: T= 160*data*5/255
Data là dữ liệu đọc từ ADC
B, Sơ đồ khối
Nguyên
tắc:
LCD thực chất là 1 màn hình đi kèm IC điều khiển chuyên dụng. Việc hiển thị lên LCD
chẳng qua chỉ là việc giao tiếp với IC điều khiển đó, và IC sẽ tự đảm nhiệm phần công
việc đưa các dữ liệu hiển thị lên màn hình. Việc giao tiếp với LCD là dạng giao tiếp song
song. Có 2 chế độ giao tiếp 8 bít và 4 bít. Với codevisionAVR sẽ cấu hình giao tiếp chế
độ 4 bit.
Mỗi kí tự trên màn hình được cấu tạo từ một ma trận điểm 5x7 ( 5 cột, 7 hàng) như hình
bên, chữ b được hiển thị dưới dạng ma trận.
Khả năng hiển thị : 2 hàng, mỗi hàng có thể hiển thị được 16 kí tự (1602)
Các kí tự có thể hiển thị trên LCD1602 ( theo bảng mã ascii)
Các hàm trong điều khiển LCD:
lcd_gotoxy(unsigned char x, Hàm định tọa độ X là giá trị vị trí theo chiều ngang (0-
unsigned char y) con trỏ trong LCD >15), y là giá trị theo chiều dọc (0-
>1)
lcd_putchar(char c) Ghi một kí tự lên C là kí tự cần hiển thị, VD chữ ‘A’
LCD
lcd_puts(char *str) Ghi một chuỗi kí *str là một chuỗi kí tự ( lưu trong bộ
tự lên LCD nhớ RAM)
lcd_clear(void) Hàm xóa LCD
lcd_init() Hàm khởi tạo LCD
Lưu ý : Xem thêm tài liệu Datasheet LCD1602 để hiểu rõ hơn về giao tiếp và điều khiển
loại màn hình này.
1. Viết lại chương trình thực hiện hiển thị giá trị của biến đếm counter ( giống ví dụ số
2) nhưng tổ chức chương trình theo các chương trình con.
o 1 chương trình con tăng biến counter và kiểm tra giá trị của nó
o 1 chương trình con tách số
o 1 chương trình con hiển thị các giá trị vừa tách.
2. Có 6 phím đầu vào ( P.3_0 đến P3_6) . Viết chương trình quét phím và hiển thị số thứ
tự của phím lên LCD. VD nếu phím 1 được bấm sẽ hiển thị “Nut 1”, nếu phím 2 được
bấm sẽ hiển thị “ Nut 2”.
3. Viết chương trình hiển thị số lần bấm phím lên LCD. Với phím bấm nối vào P3_0.
4. Khi hiển thị số đếm Counter lên màn hình, nếu số đếm <10 ta sẽ thấy số hiển thị trên
màn hình là 008, 009… nếu số đếm <100 sẽ hiển thị như 045, 046.. Hãy viết chương
trình loại bỏ các số 0 thừa khi hiển thị trên màn hình.
Thảo luận : Xây dựng lưu đồ giải thuật chương trình.
Hãy xem xét đoạn chương trình hiển thị số đếm counter lên màn hình LCD. Phân tích các công
việc của đoạn mã cho bài tập này ta thấy:
1. Phải khai báo biến, xác lập cho việc hiển thị LCD.
2. Thực hiện việc đếm tăng biến
3. Thực hiện tách số cần đếm thành những kí tự đơn
4. Hiển thị lên màn LCD
5. Lặp lại từ bước thứ 2.
Ta có thể xây dựng được 1 lưu đồ, miêu tả quá trình thực hiện bài toán như sau:
Lưu đồ giải thuật này mô tả lại thứ tự công việc thực hiện trong vòng main (chương trình
chính).
Gọi chương trình con tách số
Từng chương trình con lại có thể viết ra lưu đồ thuật toán riêng, ví dụ như sau sẽ nêu ra
lưu đồ giải thuật cho việc quét phím đầu vào.
Lặp lạiCó
bước
nút2bấm ? Sai
Đúng
Nếu có led 7 thanh loại dương chung ( cực dương của các bóng led trong đó được nối chung
với nhau và nối với cực A, chân số 3 và 8 của led). Như thế, muốn led sáng được ta phải có 2
điều kiện:
Đưa mức 0 tương ứng với số cần hiển thị vào các thanh đoạn a,b,c,d,e,f,g
Đưa mức 1 vào cực dương chung ( chân số 3 và 8 của led)
VD: hiển thị số 2 lên màn hình 7 thanh, ta sẽ đưa vào các thanh đoạn a->g như sau:
abcdefgh=00100101( dạng nhị phân) đồng thời đưa mức 1 vào cực dương chung.
7 3
a A
6 8
b A
4
c
2
d
1
e
9
f
10
g
5
DP
DS?
Cùng nhận xét bài lập trình hiển thị số 0 ra led 7 thanh. ( loại led đơn)
Cực dương chung của led được nối P3 các thanh đoạn được nối vào P2.
Mảng font_7seg có 10 phần tử, chứa mã led 7 thanh của các số từ 0 đến 9. Mảng này là 1
mảng hằng số. Vị trí của các phần tử trong mảng được đánh số từ 0 đến 9. Phần tử số 0
chứa mã led 7 của số 0, phần tử số 1 chứa mã led 7 của số 1….
Muốn truy cập đến phần tử nào ta phải dùng chỉ số của nó trong mảng. VD, muốn lấy mã
của số 8 ra để hiển thị trên màn hình, ta truy cập thông qua vị trí số 8 trong bảng mã, số 8
trong ngoặc chỉ thị vị trí thứ 8 trong bảng mã led 7 thanh như sau:
o P2=font_7seg[8]; - Lấy mã 7 thanh của số 8 trong bảng mã 7 thanh gán ra P2 để
hiển thị
Ta cũng có thể gán trực tiếp mã led của số cần hiển thị ra led 7 thanh:
o P2=0b00000011; - Hiển thị số 0
Cần lưu ý việc lập mã led 7 thanh, cần xem xét lại mạch kết nối như thế nào. Nếu bít cao
nhất của P2 nối với thanh a của led, mã số 0 sẽ là 0b00000011, nếu bít thấp nhất nối với
thanh a của led thì mã số 0 sẽ là 0b11000000.
Quét led 7 thanh:
+5
U1 +5
3
19 20
2 OE VCC
1
1 DIR +5 Q1
I/O32J1 2 18 11 12 R14 A1
A1 B1 a A1
I/O31 GND 3 17 7 9 1K
A2 B2 b DIG1 DIG2 DIG3 DIG4 A2
I/O30 4 16 4 8
A3 B3 c DP3 A3 +5 Q2
I/O29 5 15 2 6
A4 B4 d A4 R2
I/O28 6 14 1 A2
A5 B5 e
I/O27 7 13 10 1K
A6 B6 f DP2
I/O26 8 12 5
A7 B7 g +5 Q3
I/O25 9 11 3
A8 B8 DP R3 A3
10 DS1 1K
GND
+5 Q4
74HC245AD
GND R4 A4
1K
7SEG
Hoạt động:
Để dễ hình dung hoạt động của một ngắt chúng ta xem xét 2 ví dụ sau:
Trong một lớp học, giáo viên đang giảng bài rất say sưa, sinh viên chăm chú nghe
giảng, chính là vòng (main) hay đó là chương trình chính trong bài lập trình. Nếu
không có chuyện gì xảy ra, giáo viên cứ tiếp tục công việc của mình và sinh viên vẫn cứ
chăm chú nghe giảng cho đến hết giờ. Đột nhiên mất điện. Các sinh viên nói chuyện
rầm rầm trong lớp, giảng viên cũng ngừng không giảng nữa. Khi nào có điện, giáo viên
lại tiếp tục bài giảng của mình ( tiếp tục từ lúc mất điện), và sinh viên lại chăm chú nghe
giảng.Thời điểm mất điện là không được báo trước, nó xảy ra đột ngột. Việc sinh
viên ồn ào khi mất điện, đó là điều tất nhiên sẽ xảy ra, đã biết trước. Có thể coi việc
mất là 1 sự kiện ngắt, nó ngắt tạm thời việc giảng dạy của giáo viên. Sau khi có điện
trở lại, giáo viên sẽ lại tiếp tục bài giảng của mình đúng thời điểm đang giảng lúc
trước.Việc giáo viên ngừng giảng và học sinh nói chuyện là chương trình phục vụ
ngắt.
Bộ vi điều khiển 8051 thường có 2 nguồn ngắt ngoài tại chan P3.2 và P3.3
Chương trình ví dụ mẫu
Thảo luận : Ngắt và đáp ứng ngắt.
Nếu dùng ngắt, khi có tín hiệu cảm biến thì bộ vi xử lý sẽ tự nó dừng toàn bộ công việc
đang làm và lập tức tắt bơm nước – một cách hoàn toàn tự động- và không bao giờ xảy ra
tình trạng bể nước đầy tràn.
Như thế, với những ứng dụng cần phải đáp ứng nhanh nhạy, với những công việc cần độ
ưu tiên cao, việc sử dụng ngắt là cực kì hiệu quả.
Với những công việc cần sự tuần tự, lặp lại liên tục sau 1 khoảng thời gian nhất định ta
sẽ cần đến ngắt timer, VD như bạn muốn nhấp nháy 1 bóng đèn báo mỗi giây 1 lần, hoặc
phát một xung có tần số cố định nào đó.
Chủ đề 5 :
1.5 Chân EA
Chân cho phép chốt địa chỉ ALE là chân đầu ra tích cực cao. Khi nối 8051 tới bộ nhớ ngoài thì
cổng P0 dùng để trao đổi cả địa chỉ và dữ liệu. Hay nói cách khác 8051 dồn cả địa chỉ và dữ liệu qua
cổng P0 để tiết kiệm số chân. Chân ALE được sử dụng để phân kênh địa chỉ và dữ liệu.
2. Các chân cổng
Port 0: từ chân 32 ðến chân 39 (P0.0 _P0.7). Port 0 có 2 chức nãng: trong các thiết kế
cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức nãng nhý các ðýờng IO, ðối với thiết kế lớn
có bộ nhớ mở rộng nó ðýợc kết hợp giữa bus ðịa chỉ và bus dữ liệu.
Port 1: từ chân 1 ðến chân 9 (P1.0 _ P1.7). Port 1 là port IO dùng cho giao tiếp với
thiết bị bên ngoài nếu cần.
Port 2: từ chân 21 ðến chân 28 (P2.0 _P2.7). Port 2 là một port có tác dụng kép 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 bị dùng bộ nhớ
mở rộng.
Port 3: từ chân 10 ðến chân 17 (P3.0 _ P3.7). Port 3 là port có tác dụng kép. Các chân
của port này có nhiều chức nãng, có công dụng chuyển ðổi có liên hệ ðến các ðặc tính ðặc
biệt của 89S52 nhý ở bảng sau:
TÊN THANH GHI TÁC DỤNG ĐỊA CHỈ ĐỊA CHỈ HÓA BIT
TMOD Chọn kiểu cho các bộ đếm – định thời 89h Không
7 GATE 1 GATE=0 :Timer 1 bật khi TR1=1. GATE=1 :Timer 1 bật khi TR1=1
và chân INT1=1
6 C/T 1 C/T=1 : Chọn đếm sự kiện. C/T=0 : Chọn ghi giờ cho timer 1
3 GATE 0 GATE=0 :Timer 0 bật khi TR0=1. GATE=1 :Timer 0 bật khi TR0=1
và chân INT0=1
2 C/T 0 C/T=1 : Chọn đếm sự kiện. C/T=0 : Chọn ghi giờ cho timer 0
M1 M0 CHẾ ĐỘ MÔ TẢ
1 0 2 Chế độ timer 8 bit, còn TH dùng để nạp lại giá trị khởi đầu cho TL khi
TL tràn
1 1 3 TL0 và TH0 được sử dụng như hai timer độc lập. TL0 được điều khiển
bằng các bit của timer 0,TH0 được điều khiển bằng các bit timer 1.
TCON.7 TF1 8Fh Bit tràn của timer 1. Khi xảy ra tràn, TF1 tự động bật lên.
( timer
Flag)
TCON.5 TF0 8Dh Bit tràn của timer 0. Khi xảy ra tràn, TF0 tự động bật lên.
TCON.3 IE1 8Bh Cờ cạnh ngắt ngoài 1. Được bật khi có cạnh xuống ở chân
INT1. Được xoá khi thoát khỏi ngắt cứng định hướng đến thủ
tục phục vụ ngắt ngoài 1.
TCON.2 IT1 8Ah Cờ kiểu ngắt 1 ngoài. Nếu cờ này bật, ngắt ngoài sẽ được kích
hoạt khi có cạnh xuống ở chân INT1. Nếu không thì ngắt
ngoài sẽ được bật khi có mức thấp ở chân INT1.
TCON.1 IE0 89h Cờ cạnh ngắt ngoài 0 Được bật khi có cạnh xuống ở chân
INT0. Được xoá khi thoát khỏi ngắt cứng định hướng đến thủ
tục phục vụ ngắt ngoài 0.
TCON.0 IT0 88h Cờ kiểu ngắt 0 ngoài. Nếu cờ này bật, ngắt ngoài sẽ được kích
hoạt khi có cạnh xuống ở chân INT0. Nếu không thì ngắt
ngoài sẽ được bật khi có mức thấp ở chân INT0.
TÊN THANH GHI TÁC DỤNG ĐỊA CHỈ ĐỊA CHỈ HÓA BIT
Khi Reset thì tất cả mọi ngắt đều bị cấm (bị che), có nghĩa là không có ngắt nào được bộ
vi điều khiển đáp ứng nếu chúng được kích hoạt. Các ngắt phải được cho phép bằng phần mềm
để bộ vi điều khiển có thể đáp ứng được. Có một thanh ghi được gọi là cho phép ngắt (Interrupt
Enable) chịu trách nhiệm về việc cho phép (không che) và cấm (che) các ngắt.
Thanh ghi IE
IE.5 ET2 Bit enable hoặc disable ngắt tràn của Timer2
Mỗi một nguyên nhân ngắt được lập trình riêng để có một trong hai mức ưu tiên thông
qua thanh ghi chức năng đặc biệt được định địa chỉ bit, thanh ghi ưu tiên ngắt IP (interrupt
priority), thanh ghi này có địa chỉ byte là 0B8H như mô tả dưới đây.
Thanh ghi IP
Khi hệ thống được thiết lập lại trạng thái ban đầu, thanh ghi IP sẽ mặc định đặt tất cả
các ngắt ở mức ưu tiên thấp. Ý tưởng “các mức ưu tiên” cho phép một trình phục vụ ngắt được
tạm thời dừng bỏi một ngắt khác nếu ngắt mới này có mức ưu tiên cao hơn mức ưu tiên của ngắt
hiện đang được phục vụ. Điều này hoàn toàn hợp lý đối với 8051 vì ta chỉ có 2 mức ưu tiên. Nếu
có ngắt với mức ưu tiên cao xuất hiện, trình phục vụ ngắt cho ngắt có mức ưu tiên thấp phải
tạm dừng (nghĩa là bị ngắt). Ta không thể tạm dừng một chương trình phục vụ ngắt có mức ưu
tiên cao.
Chương trình chính do được thực thi ở mức nền và không được kết hợp với một ngắt nào
nên luôn luôn bị ngắt cho dù các ngắt này có mức ưu tiên thấp hay cao. Nếu có 2 ngắt với mức
ưu tiên ngắt khác nhau xuất hiện đồng thời, ngắt có ưu tiên cao sẽ được phục vụ trước.
Nếu có 2 ngắt có cùng mức ưu tiên xuất hiện đồng thời, chuỗi vòng cố định sẽ xác định
ngắt nào được phục vụ trước. Chuỗi vòng này sẽ là: ngắt ngoài 0, ngắt do bộ định thời 0, ngắt
ngoài 1, ngắt do bộ định thời 1, ngắt do port nối tiếp, ngắt do bộ định thời 2.
5. Vecto ngắt
Khi một ngắt được chấp nhận, giá trị được nạp cho bộ đếm chương trình được gọi là
vector ngắt. Vector ngắt là địa chỉ bắt đầu của trình phục vụ ngắt của nguyên nhân ngắt tương
ứng. Các vector ngắt được cho ở bảng sau.
SCON.1 TI 99h Cờ truyền. Giá trị sẽ tự set lên 1 khi đã truyền xong byte
SCON.0 RI 98h Cờ nhận. Giá trị sẽ tự set lên 1 khi đã nhận xong 1 byte
Đây là thanh ghi giá trị truyền/ nhận của 8051. Nó vừa dùng làm bộ đệm truyền – Khi
muốn truyền đi 1 byte giá trị, hoặc là 1 bộ đệm nhận- sau khi nhận được 1 byte truyền về, giá
trị của byte sẽ được lưu trong nó.
Lưu đồ thuật toán bài toán đo ADC0808 /0804 hiển thị led 7 thanh
HÀM MAIN
KHỞI TẠO ADC0808
-Clock: Cấp cung
-ADDA,B,C; Chọn địa chỉ Analog ngõ vào
-ALE : Chốt địa chỉ Analog ngõ vào
-Start : Ra lệnh cho ADC bắt đầu chuyển đổi
-EOC( End of change): Kết thúc quá trình chuyển đổi
-OE (OUTPUT Enable): Cho phép mở đệm đầu ra để đọc kết quả
-Đầu ra của ADC0808 max=OUT1 OUT 8. Ngược với 8051: Max=P3.7 P3.0
DÙNG ADC0804 HIỂN THỊ LCD
Lưu đồ thuật toàn bài toán sử dụng ngắt ngoài và ngắt
timer
SƠ ĐỒ KHỐI
-Chức năng các khối:
+Khối cảm biến : Đo nhiệt độ và xuất tín hiệu Analog (Volt) đến chân của ADC0808 để đọc.
+Khối ADC 0808: Đọc tín hiệu tương tự từ cảm biến chuyển đổi thành tín hiệu số để VXL có thể hiểu và
tính toán.
+Khối vi điều khiển 8051: Nhận tín hiệu Digital từ khối ADC ,xử lý, tính toán ra giá trị thực. Điểu khiển
các led 7 thanh(Màn hình LCD),led đơn…, để hiển thị,cảnh báo giá trị đo.
+Khối LCD(led 7 thanh): Hiển thị giá trị đo từ cảm biến để giám sát
+Khối thạch anh (12Mhz): tạo xung clock cấp cho vi xử lý