Tải bản đầy đủ (.pdf) (8 trang)

vi xử lý hệ thống điều khiển ngắt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (541.71 KB, 8 trang )


KHOA CÔNG NGHỆ ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP




T
T
À
À
I
I


L
L
I
I


U
U


H
H
Ư
Ư



N
N
G
G


D
D


N
N


T
T
H
H
Í
Í


N
N
G
G
H
H
I
I



M
M


-
-


T
T
H
H


C
C


H
H
À
À
N
N
H
H




















J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).
Giáo trình thực hành vi xử lý. 2 Biên soạn: Phạm Quang Trí

A. MỤC ĐÍCH:

• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển và sử dụng mô
hình thí nghiệm để kiểm chứng.
• Điều khiển thiết bị ngoại vi bằng các port của vi điều khiển.
• Thiết kế các ứng dụng điều khiển thực tế có sử dụng ngắt (Interrupt).
• So sánh ưu và nhược điểm của các chương trình điều khiển có sử dụng ngắt và không sử dụng ngắt.

B. YÊU CẦU:


• Nắm vững tập lệnh của vi điều khiển MCS-51.
• Tham khảo trước hoạt động của ngắt (Interrupt) ở các chế độ khác nhau.
• Nắm được phương pháp lập trình và điều khiển có sử dụng các ngắt.



J. H THNG IU KHIN NGT (INTERRUPT).
Bi 1: Chng trỡnh iu khin to súng vuụng tun hon cú tn s 10 Hz (s dng ngt Timer) ti chõn P0.0
v hin th mc logic ti chõn ny lờn LED0 (LED0 c ni vi P0.0) cú s dng b m o.
Giỏo trỡnh thc hnh vi x lý. 3 Biờn son: Phm Quang Trớ
1 Trỡnh t tin hnh thớ nghim:
1.1 Kt ni thit b thớ nghim.
Tt ngun cp cho mụ hỡnh thớ nghim.
Dựng dõy bus 8 ni J64 (PORT0 / DATA) khi vi iu khin vi J12 (BAR LED 2) khi dóy LED.
Dựng dõy bus 3 ni J103 (POWER) khi dóy LED vi ngun +5V khi ngun.
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS

1.2 S nguyờn lý ca h thng:
D7
D0
D1
D2
D3
D4
D5
D6
AD7 AD7

AD0
D0AD0 AD0
AD1 AD1
AD2 AD2
AD3 AD3
AD4 AD4
AD5 AD5
AD6 AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
D7
D6
D5
D4
D3
D2
D1
D0
D1
D2
D3
D4
D5
D6
D7

D0
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0

1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1

15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V

D1
R2
330
+5V
D2
R3
330
+5V
D3
R4
330
+5V
D4
R5
330
+5V
D5
R6
330
+5V
D6
R7
330
+5V
D7
R8
330
+5V
D8
R9

330
+5V
1B
1
2B
2
3B
3
4B
4
5B
5
6B
6
7B
7
8B
8
1C
18
2C
17
3C
16
4C
15
5C
14
6C
13

7C
12
8C
11
COM
10
U2
ULN2803
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MAẽCH ẹIEU KHIEN NGAẫT (NGAẫT TIMER)
MAẽCH ẹIEU KHIEN NGAẫT (NGAẫT TIMER)MAẽCH ẹIEU KHIEN NGAẫT (NGAẫT TIMER)
MAẽCH ẹIEU KHIEN NGAẫT (NGAẫT TIMER)
2
3
4
5
6
7

8
9
1
RP2
10K
+5V
A
B

J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).
Bài 1: Chương trình điều khiển tạo sóng vuông tuần hoàn có tần số 10 Hz (sử dụng ngắt Timer) tại chân P0.0
và hiển thị mức logic tại chân này lên LED0 (LED0 được nối với P0.0) có sử dụng bộ đệm đảo.
Giáo trình thực hành vi xử lý. 4 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
BEGIN
(ORG 30H)
KHỞI ĐỘNG TIMER
(TIMER 0, MODE 1)
(TMOD) = 01H
NẠP GIÁ TRỊ CHO TIMER
(T
DELAY
= 50000.T
MÁY
)
(TH0/TL0) = -50000 = 3CB0H
CHO TIMER HOẠT ĐỘNG
(TR0) = 1
CHO PHÉP NGẮT TIMER0
(IE) = 10000010B = 82H

MAIN:
J1
END
T0ISR
(ORG 0BH)
T0ISR:
TẠO XUNG (ĐẢO TRẠNG THÁI)
CPL P0.0
RETI

;***************************************************
;CHUONG TRINH DIEU KHIEN TAO SONG VUONG TAI P0.0 CO SU DUNG NGAT TIMER0
;***************************************************
;KET NOI: 8 LED -> PORT0
;***************************************************
ORG 00H ;DIEM NHAP RESET
SJMP MAIN
ORG 0BH ;DIEM NHAP ISR TIMER0
T0ISR:
CPL P0.0 ;DAO TRANG THAI P0.0 (TAO XUNG)
RETI
ORG 30H ;DIEM NHAP CHUONG TRINH CHINH
MAIN:
MOV TMOD,#01H ;TIMER0 -> TIMER 16 BIT
MOV TH0,#(-50000) ;THOI GIAN TRE = 50 MS (THOI GIAN XUNG O MUC THAP HOAC MUC CAO)
MOV TL0,#(-50000) ;CHU KY = 2 x 50 = 100 MS -> F = 10 Hz
SETB TR0 ;CHO TIMER BAT DAU CHAY
MOV IE,#82H ;CHO PHEP NGAT TIMER0 HOAT DONG
SJMP $ ;DUNG YEN
END

1.4 Lưu chương trình và biên dịch chương trình.
1.5 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.6 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.7 Nạp chương trình vào vi điều khiển.
1.8 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.9 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)
J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).
Bài 2: Chương trình điều khiển đếm số xung tại chân INT0 (sử dụng ngắt ngồi) và hiển thị số xung này (tối đa
là 255 lần) lên ba LED 7 đoạn (LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1, PULSE
được nối với chân INT0).
Giáo trình thực hành vi xử lý. 5 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 4 nối J64 (PORT1) ở khối vi điều khiển với J1 (SEL IN1) ở khối LED 7 đoạn (chú ý là ta
chỉ nối 4 bit thấp của J64 với J1)
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối giải mã.
• Dùng dây bus 1 nối J33 (PULSE) ở khối tạo xung với J66 (PORT3 / FUNCTION) ở khối vi điều khiển
(chú ý là ta chỉ nối bit 2 (chân INT0\) của J66 và J33 lại với nhau).
• Dùng dây bus 3 nối J113 (POWER) ở khối tạo xung và J110 (POWER) ở khối LED 7 đoạn với nguồn
+5V ở khối nguồn.

1.2 Sơ đồ ngun lý của hệ thống:
AD7
AD0

AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
A
B
C
D
E
F
G
A
B
C
D
E
F
G
AD0 A
AD1 B

AD2 C
AD3 D
AD4 E
AD5 F
AD6 G
A
B
C
D
E
F
G
A
B
C
D
E
F
G
P1.3
P1.0
P1.1
P1.2
P1.3
P1.0
P1.1
P1.2
XTAL2
18
XTAL1

19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2

3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8

21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
2
3
4
5
6
7
8
9
1

RP1
10K
+5V
MẠCH ĐIỀU KHIỂN NGẮT (NGẮT NGOÀI)
MẠCH ĐIỀU KHIỂN NGẮT (NGẮT NGOÀI)MẠCH ĐIỀU KHIỂN NGẮT (NGẮT NGOÀI)
MẠCH ĐIỀU KHIỂN NGẮT (NGẮT NGOÀI)
LED7
Q1
A1015
+5V
LED6
Q2
A1015
+5V
R2
1K
R3
1K
R4
56
R5
56
R6
56
R7
56
R8
56
R9
56

R10
56
LED5
Q3
A1015
+5V
LED4
Q4
A1015
+5V
R11
1K
R12
1K
C3
10uF
R1
10k
+5V
U1(P3.2/INT0)
A
B


J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).
Bài 2: Chương trình điều khiển đếm số xung tại chân INT0 (sử dụng ngắt ngoài) và hiển thị số xung này (tối đa
là 255 lần) lên ba LED 7 đoạn (LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1, PULSE
được nối với chân INT0).
Giáo trình thực hành vi xử lý. 6 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.


;***************************************************
;CHUONG TRINH DIEU KHIEN DEM SO XUNG TAI CHAN INT0 (SU DUNG NGAT NGOAI INT0)
;***************************************************
;KET NOI: 7 SEG -> PORT0 SEL LED -> PORT1 PULSE -> INT0
;***************************************************
ORG 00H ;DIEM NHAP RESET
SJMP MAIN
ORG 03H ;DIEM NHAP ISR NGOAI 0
EX0ISR:
INC 40H ;TANG GIA TRI XUNG KICH
RETI
ORG 30H ;DIEM NHAP CHUONG TRINH CHINH
MAIN:
MOV 40H,#0 ;NAP GIA TRI XUNG KICH BAN DAU
MOV IE,#81H ;CHO PHEP NGAT NGOAI 0 HOAT DONG
SETB IT0 ;DAT CHE DO NGAT NGOAI KICH KHOI CANH
MP1:
MOV R7,40H ;SO LUONG XUNG KICH
ACALL BIN8TOBCD ;CHUYEN DOI BIN SANG BCD
ACALL BCD4TO7SEG ;CHUYEN DOI BCD SANG 7 DOAN
ACALL DISP7SEGMUL4 ;HIEN THI
SJMP MP1
;***************************************************
BIN8TOBCD: ;CTC CHUYEN DOI SO BINARY 8 BIT (<= 255) SANG SO BCD.
PUSH ACC
PUSH B
MOV B,#10
MOV A,R7
DIV AB ;LAY R7 CHIA CHO 10

PUSH B ;CAT SO HANG DON VI
MOV B,#10
DIV AB ;LAY KET QUA TREN CHIA TIEP CHO 10
MOV R7,A ;R7 = TRAM
MOV A,B ;LAY SO HANG CHUC
SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO
POP B ;LAY SO HANG DON VI TU STACK
ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON VI
MOV R6,A ;R6 = CHUC - DON VI
POP B
POP ACC
J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).
Bài 2: Chương trình điều khiển đếm số xung tại chân INT0 (sử dụng ngắt ngoài) và hiển thị số xung này (tối đa
là 255 lần) lên ba LED 7 đoạn (LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1, PULSE
được nối với chân INT0).
Giáo trình thực hành vi xử lý. 7 Biên soạn: Phạm Quang Trí
RET
;***************************************************
BCD4TO7SEG: CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (2 SO BCD NEN).
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN

MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO


MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO

POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;***************************************************
DISP7SEGMUL4: ;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN)
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0F7H ;MA QUET
MOV R0,#63H ;DIA CHI VUNG MA HIEN THI
DISP:

MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL:
MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL

POP 01H
POP 00H
RET
END
J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).
Bài 2: Chương trình điều khiển đếm số xung tại chân INT0 (sử dụng ngắt ngoài) và hiển thị số xung này (tối đa
là 255 lần) lên ba LED 7 đoạn (LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1, PULSE
được nối với chân INT0).
Giáo trình thực hành vi xử lý. 8 Biên soạn: Phạm Quang Trí
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.

2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển đếm số lần nhấn nút nhấn KEY1 (sử dụng ngắt ngoài) và hiển thị
số lần nhấn nút này (tối đa là 255 lần) lên ba LED 7 đoạn (LED4, LED5 và LED6). Tự lựa chọn phương
pháp kết nối nút nhấn và LED 7 đoạn.
• Bài 2: Hãy viết chương trình điều khiển đếm số lần nhấn nút nhấn KEY1 và KEY2 (sử dụng hai ngắt
ngoài) và hiển thị số lần nhấn nút KEY1 (tối đa là 255 lần) lên ba LED 7 đoạn (LED0, LED1 và LED2),
hiển thị số lần nhấn nút KEY2 (tối đa là 255 lần) lên ba LED 7 đoạn (LED5, LED6 và LED7). Tự lựa chọn
phương pháp kết nối nút nhấn và LED 7 đoạn.
• Bài 3: Hãy viết chương trình điều khiển tạo sóng vuông tuần hoàn có tần số 5 Hz (sử dụng ngắt Timer) tại
chân P1.0 và hiển thị mức logic tại chân này lên LED0. Tự lựa chọn phương pháp kết nối LED.
• Bài 4: Hãy viết chương trình điều khiển tạo sóng vuông tuần hoàn có tần số 1 Hz (sử dụng ngắt Timer) tại
chân P1.0 và hiển thị mức logic tại chân này lên LED0. Tự lựa chọn phương pháp kết nối LED.
• Bài 5: Hãy viết chương trình điều khiển đồng thời tạo hai sóng vuông tuần hoàn có tần số 1 Hz và 5 Hz (sử
dụng ngắt Timer) tại chân P1.0 và P1.1, hiển thị mức logic tại các chân này lên LED0 và LED1. Tự lựa
chọn phương pháp kết nối LED.
• Bài 6: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Chế độ Counter:
o Sử dụng ngắt ngoài 0. Mỗi lần nhấn nút là một lần tác động cho ngắt.
o Chương trình phục vụ ngắt ngoài 0 sẽ làm công việc tăng nội dung ô nhớ chứa kết quả lên 1 đơn
vị.
o Chương trình chính sẽ liên tục lấy nội dung của ô nhớ chứa kết quả đổi sang mã BCD nén và hiển
thị lên LED 7 đoạn.



×