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.. Bài 1: Chương trình điều khiển tạo són
Trang 1KHOA CÔNG NGHỆ ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
TÀI LIỆU HƯỚNG DẪN THÍ NGHIỆM - THỰC HÀNH
Trang 2J HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT)
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
Trang 3J 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
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 8 nối J64 (PORT0 / DATA) ở khối vi điều khiển với J12 (BAR LED 2) ở khối dãy LED
• Dùng dây bus 3 nối J103 (POWER) ở khối dãy LED với nguồn +5V ở khối nguồn
1.2 Sơ đồ nguyên lý của hệ thống:
AD7 AD7
AD0
D0 AD0 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
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
P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 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
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
2 3 4 5 6 7 8 9
1
RP2
10K +5V
A
B
Trang 4J 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
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 (TDELAY= 50000.TMÁ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
;***************************************************
SJMP MAIN
T0ISR:
CPL P0.0 ;DAO TRANG THAI P0.0 (TAO XUNG)
RETI
MAIN:
SETB TR0 ;CHO TIMER BAT DAU CHAY
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)
Trang 5J 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)
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ơ đồ nguyên lý của hệ thống:
AD7
AD0
AD0 AD2 AD4 AD6
AD7 AD5 AD3 AD1
A C E F G
A C E F G
A C E F G
A C E F G
P1.3
P1.0
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
C1
33p
C2
33p
X1
12MHz
2 4 6 8
1
RP1
10K
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)
Trang 6J 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)
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
;***************************************************
EX0ISR:
RETI
MAIN:
SETB IT0 ;DAT CHE DO NGAT NGOAI KICH KHOI CANH
MP1:
ACALL BIN8TOBCD ;CHUYEN DOI BIN SANG BCD
ACALL BCD4TO7SEG ;CHUYEN DOI BCD SANG 7 DOAN
ACALL DISP7SEGMUL4 ;HIEN THI
SJMP MP1
;***************************************************
PUSH ACC
PUSH B
MOV A , R7
POP B
POP ACC
Trang 7J 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)
RET
;***************************************************
PUSH DPL
PUSH ACC
MOVC A , @A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOVC A , @A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOVC A , @A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOVC A , @A+DPTR ;LAY MA 7 DOAN TUONG UNG
POP DPL
POP DPH
RET
;***************************************************
PUSH 00H
DISP:
MOV P0, @R0 ;XUAT MA HIEN THI
LCALL DELAYLED
POP ACC
RET
;***************************************************
PUSH 00H
PUSH 01H
MOV R1 ,#5
DEL:
Trang 8J 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)
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