Upload
huuhuy1987
View
98
Download
0
Embed Size (px)
Citation preview
1Pham Quoc Thinh, ictu.edu.vn.
Lập trình Timer và ngắtLập trình Timer và ngắt
│ Chương 3 Vi điều khiển 8051 và lập trình hợp ngữ
│
ICTU – 04-2010
2Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Lập trình timer
So sánh ngắt và hỏi vòng “polling”
Xử lý ngắt
Các ngắt của 8051
Mục đích của bảng vector ngắt
Cho phép và không cho phép các ngắt
Timer sử dụng ngắt
Ưu tiên ngắt
Thiết kế chương trình ngắt
Nội dung bài giảng….Nội dung bài giảng….
3Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Lập trình timer(1/10)
8051 có hai bộ timer: Timer 0 và Timer 1
Có thể sử dụng để tạo một khoảng thời gian trễ hay đếm các sự kiện xẩy ra bên ngoài vi điều khiển
Timer 0 và Timer là 2 bộ timer 16 bit
Chúng được truy cập như hai thanh ghi, byte thấp và byte cao. (TL0 & TH0 cho Timer 0 và TL1 & TH1 cho timer 1)
4Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Lập trình timer(2/10)
Co 3 thanh ghi chức năng đặc biệt cho việc thiết lập timer
1. Các thanh ghi Timer (Timer 0 & Timer 1) – lưu giữ giá trị bắt đầu của Timer 0 & Timer 1. Mỗi bộ timer là thanh ghi 16 có thể được chia thành 2 byte (THx & TLx).
TH0 TL0
D15
D14D13
D12
D11
D10
D9
D8 D7 D6 D5 D4 D3 D2D1
D0
Thanh ghi Timer 0 (16 Bit) TH1 TL1
D15
D14D13
D12
D11
D10
D9
D8 D7 D6 D5 D4 D3 D2D1
D0
Thanh ghi Timer 1 (16 Bit)
5Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Lập trình timer(3/10)2. Thanh ghi điều khiển timer(TCON) – sử dụng để ON/OFF timer và
điều khiển ngắt. TCON là thanh ghi 8 bit, được định địa chỉ bit và chỉ có 4 bit cao sử dụng cho việc điều khiển timer.
Các bit điều khiển ON/OFF Timer
(MSB)
(LSB)
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TR1 –Bit điều khiển Timer 1 chạy. TR1=1 Timer ON và TR1=0 Timer OFF
TF1 – Cờ tràn Timer 1 được set khi timer tràn FFFFH trở về 0000H
Được xoá bởi chương trình!.
TR0 – Bit điều khiển Timer 0 chạy. TR0=0 Timer ON và TR0=0 Timer OFF
TF0 – Cờ tràn Timer 0 được set khi timer tràn FFFFH trở về 0000H
Được xoá bởi chương trình!
IE1 and IT1 – Đặt chế độ kích hoạt ngắt ngoài ngắt 1
IE0 and IT0 – Đặt chế độ kích hoạt ngắt ngoài ngắt 0
Các bit điều khiển ngắt ngoài
6Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Lập trình timer(4/10)
3. Timer Mode Register (TMOD) – sử dụng để thiết lập các chế độ hoạt động của bộ timer. TMOD là thanh ghi 8 bit, được định địa chỉ bit
Timer 1
(MSB)
(LSB)
GATE
C/T M1 M0 GATE
C/T M1 M0
GATE – Bit đieu khien cổng của Timer. GATE = 1, Timer/counter enbled chỉ khi chân /INTx ở mức cao và điều khiển TRx được set. GATE = 0, Timer chạy khi TRx được set
C/T – Bit chọn chế độ Counter/Timer (đếm sự kiện hay định thời)
C/T = 1 : Đếm sự kiện (dùng xung clock nhận từ ngõ vào Tx)
C/T = 0 : Định thời (dùng xung clock qua bộ chia từ thạch anh)M1 & M0 – Các bit chọn chế độ
Timer 0
7Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Lập trình timer(5/10)M1 & M0 – Các bit chọn chế độ
M1 M0 Mode Mode hoạt động
0 0 0 Chế độ timer/counter13-bitKhoảng giá trị timer từ 0000H đến 1FFFH trong TH
- TL
0 1 1 Chế độ timer/counter16-bitKhoảng giá trị timer từ 0000H đến FFFFH trong TH -
TL
1 0 2 Chế độ timer/counter 8-bit tự nạp lạiTHx giữa giá trị nạp lại TLx mỗi khi timer tràn
1 1 3 Chế độ chia tách
Chế độ 1 & 2 được sử dụng rộng rãi nhất
8Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Timer / Counter chế độ 0 : 13 Bit Counter using Timer 1
9Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Timer / Counter chế độ 1 : 16 Bit Counter using Timer 1
TL1(8 Bits)
Khoảng giá trị timer từ 0000H đến FFFFH trong TL1 – TH1
10Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Timer / Counter chế độ 2 : 8 Bit tự nạp lại
11Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Timer / Counter chế độ 3 : Chế độ chia tách
12Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Vi dụ 1Vi dụ 1
Giải pháp: Chuyển giá trị từ hex ra binary:(a) TMOD = 0000 0001, Timer 0 ở mode 1(b)TMOD = 0010 0000, Timer 1 ở mode 2(c) TMOD = 0001 0010, Timer 0 ở mode 2 và Timer 1 ở mode 1
Chỉ ra chế độ hoạt động của timer trong những thiết lập sau dây.
(a) MOV TMOD, #01H(b) MOV TMOD, #20H(c) MOV TMOD, #12H
Lập trình timer(6/10)
13Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Ví dụ 2:Ví dụ 2:
Giải pháp:(1)MOV TMOD, #01H ; Timer 0 mode 1, C/T = 0 dùng XTAL
; nguồi xung clock, Gate = 0 để sử dụng ON/OFF
; timer bằng chương trình
MOV TL0, #0ABH ; TL0 =ABHMOV TH0, #0F0H ; TH0 =F0HSETB TR0 ; Cho Timer 0 khởi động
1. Viết các lệnh thực hiện thiết đặt sau:a. Set Timer 0 ở mode 1, sử dụng XTAL 8051 cho nguồn xung clock,
các lệnh khởi động và dùng bộ định thời, b. Đặt giá trị F0ABH trong Timer 0.c. Cho chạy Timer 0
2. Xác định thời gian Timer 0 tràn nếu XTAL = 12 MHz.
Lập trình timer(7/10)
14Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Lập trình timer(8/10)
Giải pháp:(2)
Số đếm đếm để timer tràn = Đếm từ F0ABH đến FFFFH tràn về 0
Số chu kỳ đồng hồ Timer = (FFFFH – F0ABH + 1) = 0F55H = 3925 (hệ thập
phân)
Thời gian để Timer 0 tràn = 3925 x 1 s = 3925 s #
Một xung timer = 1 chu kỳ máy= s1s12x10x12
16
Giả sử tần số thạch anh 12 MHz
65536 10 – F0ABH
15Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Ví dụ 3Ví dụ 3
Giải pháp:Chu kỳ của xung vuông, T = 1/50 Hz = 20 ms½ của nó cho mức cao hoặc mức thấp = 10 ms10 ms/ 1s = 10,000 chu kỳ timer cần cho mỗi xung.
Giá trị Timer 1 được set= 65536 – 10000 = 55536 (hệ 10) = D8F0HTH1 = D8H và TL1 = F0H ( Cần bộ đếm 16 bit)
MOV TMOD, #10H ; Timer 1, mode 1 AGAIN: MOV TL1, #0F0H ; TL1 =F0H
MOV TH1, #0D8H ; TH1 =D8H SETB TR1 ; bắt đầu Timer 1
BACK: JNB TF1, BACK ; ở đây cho tới khi trànCLR TR1 ; Dừng Timer 1CPL P1.3 ; Đảo P1.3 để set Hi, LowCLR TF1 ; Xoá cờ Timer bằng chương trìnhSJMP AGAIN
Giả sử XTAL = 12 MHz, viết chương trình phát xung vuông tần sô 50 Hz trên chân P1.3 sử dụng timer 1để điều khiển
Lập trình(9/10)
20ms
65535 – 10000 + 1
Đảo P1.3 sau mỗi 10ms
16Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Ví dụ 4Ví dụ 4
; Chương trình con delay MOV TMOD, #10H ; Timer 1, mode 1 MOV R3, #200
AGAIN: MOV TL1, #08H ; TL1 =08H MOV TH1, #01H ; TH1 =01H SETB TR1 ; bắt đâu Timer 1
BACK: JNB TF1, BACK ; Chờ tràn timerCLR TR1 ; Dừng Timer 1CLR TF1 ; Xoá cờ tràn DJNZ R3, AGAIN ; Lập lại cho đến khi R3 = 0RET
Ví dụ chương trình con delay. Tìm thời gian delay. (XTAL = 12 MHz)
Lập trình timer(10/10)
Giải pháp :
Giá trị Timer = 0108H = 264(hệ 10), Bộ đếm tràn= 65536 – 264 = 65272 (hệ 10)
Số chu kỳ timer của Timer = 65272
Tổng số chu kỳ timer của chương trình con = [2 + 1 + (5 + 65272 + 4) x 200 + 2] = 13056205
Tổng thời gian delay: 13056205 x 1s = 13056.2 ms
Machine cycles2122121122
17Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
18Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Một vi điều khiển luôn kết nối với vài thiết bị ngoại vi thông qua các cổng I/O
Có 2 cách để các thiết bị ngoại vi yêu cầu dịch vụ từ vi điều khiển
Hỏi vòng
Ngắt
Ngắt và hỏi vòng ”Polling”Ngắt và hỏi vòng ”Polling”
19Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Vi điều khiển liên tục giám sát tình trạng của một số lượng nhất định các thiết bị theo một thứ tự
Dịch vụ cho một thiết bị nếu đặt trước với điều kiện nào đó
Sau khi thực hiện dịch vụ tương ứng với một thiết bị, vi điều khiển sẽ chuyển sang theo dõi tình trạng của một thiết bị khác cho đến khi tất cả các thiết bị phục vụ
Hoạt động được miêu tả như vậy được gọi là “polling”
Lập trình I/O (Polling)Lập trình I/O (Polling)
20Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Bất cứ khi nào thiết bị bất cứ nhu cầu các dịch vụ, nó thông báo cho vi điều khiển bằng cách gửi nó một yêu cầu ngắt (IR) trong khi vi điều khiển đang làm công việc khác
Vi điều khiển dừng công việc đang làm để phục vụ các thiết bị
Chú ý mỗi IR liên kết với một chương trình con phục vụ (interrupt service routine (ISR))
Interrupt I/O (Interrupt)Interrupt I/O (Interrupt)
21Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
So sách giữa Interrupt và PollingSo sách giữa Interrupt và Polling
Interrupt PollingPhương pháp Các thiết bị thông
báo tới vi điều khiển bằng cách gửi một tín hiệu ngắt đến trong
VĐK
MCU liên tục giám sát các thiết bị để
xác định xem thiết bị cần dịch
vụ nào
Thời gian đáp ứng
Nhanh hơn Chậm hơn
Cần thời gian của CPU
Less More
Thiết lập ưu tiên
Yes No
22Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Các bước trong xử lý một yêu cầu ngắt
Lệnh hiện tại sẽ được kết thúc PC được ghi lại trong stack Trạng thái ngắt hiện tại được ghi lại PC được nạp với địa chỉ vector của ISR từ bảng
vector ngắt(nhảy tới thực thi ISR) ISR thực thi và kết thúc với lệnh RETI (trở về từ
ngắt) Trở về chương trình chính bởi lấy PC từ stack
Khi một ngắt kích hoạt và được chấp nhận bởi các MCU, chương trình chính bị gián đoạn. Những hành động sau đây xảy ra:
23Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Thực thi chương trình với các ngắt
Main Main Main
ISR ISR
stack
PC ghi trong trong stack
PC lấy từ stack
Các chương trình thực hiện ứng với một ngắt được gọi là chương trình con phục vụ ngắt - interrupt service routine (ISR)ISR thực thi để đáp ứng ngắtvà thường thực hiện I/O hoạt động cho một thiết bị
24Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Có 6 ngắt trong 8051
Các ngắt trong 8051Các ngắt trong 8051
Reset – khi chân reset được kích hoạt, 8051 sẽ reset tất cả các thanh ghi và các cổng sau đó nhảy tới địa chỉ 0000H bắt đầu thực thi.
2 ngắt ngoài – Các ngắt cứng ngoài (INT0 và INT1) ở chân12 & 13 được sử dụng để nhận các tín hiệu ngắt từ các thiết bị ngoài.
2 ngắt timer –Timer 0 và Timer 1 đưa ra tín hiệu ngắt khi bộ đếm tràn về 0
1 ngắt cổng nối tiếp - được sử dụng cho việc nhận và truyền trong suốt quá trình truyền thông.
Ngoài reset, chỉ có 5 ngắt có sẵn cho người sử dụng
25Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Bảng vector ngắt cho 8051
Ưu tiên
Ngắt Cờ Định vị trong ROM
Chân
1 Reset RST 0000H 9
2External 0 (INT0)
IE0 0003H P3.2 (12)
3 Timer 0 TF0 000BH ---
4External 1 (INT1)
IE1 0013H P3.3 (13)
5 Timer 1 TF1 001BH ---
6 Serial port RI or TI 0023H ---
Bảng vector ngắt giữ địa chỉ của ISR
26Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Cho phép và không cho phép một ngắt
Tại thời điểm reset, tất cả các ngắt không được cho phép
Các ngắt phải được cho phép bởi chương trình
Thanh ghi IE (interrupt enable) – được định địa chỉ bit, cho phép ngắt hoặc không cho phép các ngắt
Bit IE. 7 phải được set lên mức cao để cho phép các ngắt EA = 1 ; Cho phép ngắt toàn cục EA = 0 ; Không cho phép ngắt toàn cục
IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0
EA -- ET2 ES ET1 EX1 ET0 EX0
Thanh ghi IE (interrupt enable)
27Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Cho phép và không cho phép các ngắt
Bit Ký hiệu Miêu tả (1=Cho phép, 0=Không cho phép)
IE.7 EA Cho phép/không cho phép ngắt toàn cục
IE.6 -- Dành cho tương lai
IE.5 ET2 Không dùng cho 8051 (chỉ cho 8052)
IE.4 ES Cho phép/không cho phép ngắt nối tiếp
IE.3 ET1 Cho phép/không cho phép ngắt timer 1
IE.2 EX1 Cho phép/không cho phép ngắt ngoài 1
IE.1 ET0 Cho phép/không cho phép ngắt timer 0
IE.0 EX0 Cho phép/không cho phép ngắt ngoài 0
28Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
29Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Ví dụ 5Ví dụ 5
Giải pháp:(a) MOV IE, #10010110B ; enable serial, Timer 0, EX1 interrupts or
SETB IE.7 ; EA=1, Cho phép ngắt toàn cụcSETB IE.4 ; Cho phép ngắt nối tiếpSETB IE.1 ; Cho phép ngắt Timer 0SETB IE.2 ; Cho phép ngắt ngoài 1
(b) CLR IE.1 ; Không cho phép ngắt Timer 0(c) CLR IE.7 ; Không cho phép tất cả các ngắt
Viết các lệnh để thực hiện các yêu cầu sau
(a) Cho phép ngăt nối tiếp, ngắt Timer 0 và ngắt ngoài 1(b) Chỉ không cho phép Timer 0(c) Không cho phép tất cả các ngắt một lệnh
30Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Ngắt Timer
Khi timer tràn thì cờ TF của nó được đặt lên 1
Nếu ngắt timer trong thanh ghi IE cho phép, bất cứ khi nào TF được thiết lập, vi điều khiển sẽ bị gián đoạn và nhảy vào bảng vector ngắt với dịch vụ ISR tương ứng
Với ngắt timer được cho phép, vi điều khiển có thể làm việc khác mà không cần giám sát cờ khi nó tràn
TF0 Vector ngắt Timer 0
1 Nhảy đến 000BH
TF1 Vector ngắt Timer 1
1 Nhảy đến 001BH
31Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Write a program to generate a square wave of 50 Hz on pin P1.3. This is similar to Example 8.3 except that it uses an interrupt for Timer 1.
Ví dụ 6Ví dụ 6
Giải pháp:ORG 0000H
LJMP MAIN ;nhảy qua bảng vector ngắt; ISR cho Timer 1 để phát xung vuông
ORG 001BH LJMP ISR_T1 ; nhảy tới ISR_T1
; Khởi tạo chương trình chính ORG 30HMAIN: MOV TMOD, #10H ; Timer 1, mode 1
MOV TL1, #0F0H ; TL1 =F0HMOV TH1, #0D8H ; TH1 =D8HMOV IE, #88H ; Cho phép ngắt Timer 1 SETB TR1 ;khởi động Timer 1
HERE: SJMP HERE; Timer 1 ISR ISR_T1: CPL P1.3 ; đảo P1.3 để đặt mức cao, thấp
MOV TL1, #0F0H ; nạp giá trị cho timerMOV TH1, #0D8H ; SETB TR1 ; khởi động Timer 1RETI END
Giá trị set timer 1 = 65536 – 10000 = 55536 (hệ 10)= D8F0H
Viết một chương trình phát một xung vuông 50 Hz trên chân P1.3. Giống ví dụ 3 nhưng sử dụng ngắt cho timer 1.
Ví dụ 3 (use TIMER)
32Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Ưu tiên ngắt
Sau khi reset, ưu tiên của nguồn ngắt giảm dần từ trên xuống dưới được ghi trong bảng 1,vi dụ. Nếu INT0 và INT1 được kích hoạt tại cùng một thời điểm, INT0 sẽ thực hiện trước
Bảng 1: 8051 độ ưu tiên ngắt sau Reset
Ngắt ngoài 0 (INT0)
Ngắt Timer 0 (TF0)
Ngắt ngoài 1 (INT1)
Ngắt Timer 1 (TF1)
Ngắt truyền thông nối tiếp (RI+TI)
Độ ưu tiên cao nhất
Độ ưu tiên thấp nhất
INT0 > TF0 > INT1 > TF1 > SERIAL(RI+TI)
33Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Thiết đặt độ ưu tiên ngắt với thanh ghi IP
Thứ tự ưu tiên có thể được thay đổi bởi việc gán một độ ưu tiên cao cho bất kỳ một trong các ngắt.
Nó được thực hiện bằng cách thiết lập mức cao tại bit tương ứng trong thanh ghi ưu tiên ngắt IP (interrupt priority).
IP.7 IP.6 IP.5 IP.4 IP.3 IP.2 IP.1 IP.0
-- -- PT2 PS PT1 PX1 PT0 PX0
Thanh ghi IE (interrupt priority) được định địa chỉ bit
Bit độ ưu tiên= 1 (gán độ ưu tiên cao) Bit độ ưu tiên = 0 (gán độ ưu tiên thấp)
PT2,– Timer 2 (8052 only), PT1 & PT0 –Các ngắt Timer 1 & Timer 0PX1 & PX0– Các ngắt ngoài 1 & 0, PS – ngắt truyền thông nối tiếp
34Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Thiết đặt độ ưu tiên ngắt với thanh ghi IP
Ví dụ 7:
(a) Lập trình gán độ ưu tiên cao nhất cho INT1,
(b) Thảo luân nếu INT0, INT1 và TF0 kích hoạt ở cùng một thời điểm.
Solution :
(a) MOV IP, #00000100B ; set IP.2=1 INT1 có độ ưu tiên cao nhất
hay SETB IP.2
(b) Độ ưu tiên của ngắt được thay đổi INT1 > INT0 > TF0
The 8051 đáp ứng INT1 đầu tiên sau đó là INT0 và TF0.
(Bit INT0 và TF0 trong IP là 0, độ ưu tiên của nó theo thứ tự trong bảng 1)
35Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Thiết đặt độ ưu tiên ngắt với thanh ghi IP
Ví dụ 8:
Thanh ghi IP được set bởi lệnh “MOV IP, #00001100B” sau khi reset. Thảo luận về thứ tự ưu tiên các ngắt.
Giải pháp :
MOV IP, #00001100B sẽ set INT1 & TF1tới độ ưu tiên cao hơn so với các ngắt con lại.
Độ ưu tiên của các ngắt sẽ là
INT1 > TF1 > INT0 > TF0 > Serial
Độ ưu tiên mạc định: INT0 > TF0 > INT1 > TF1 > SERIAL(RI+TI)
36Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Ví dụ 9
Chân INT1 nối với một công tắc bình thường ở mức cao. Khi ấn công tắc, bật đèn LED. LED kết nối với P1.3 và bình thường thì tắt. Khi được bật LED sẽ sáng trong một thời gian rùi tắt.
to LED
80515v
0v
P1.3
INT1 1=ON0=OFF
37Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Ví dụ 9– Giải pháp
ORG 0000H LJMP MAIN ;Nhẩy qua bảng vector ngắt
; ISR for INT1 ORG 0013H LJMP ISR_INT1 ; Nhẩy tới ISR_INT1
; Chương trình chính ORG 30H
MAIN: MOV IE,#10000100B ;Cho phép ngắt INT 1 + GLOBALHERE: SJMP HERE ;chờ ngắt
; INT1 ISR ISR_INT1: SETB P1.3 ;bật đènLED
MOV R3,#255BACK: DJNZ R3, BACK ;giữ LED bật trong một khoảng thời gian
CLR P1.3 ;tắt LED RETI
END
38Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
Thiết kế chương trình ngắt
Chương trình phục vụ ngắt kích thước nhỏ hơn <=8 byte
Chương trình phục vụ ngắt kích thước lớn hơn > 8 byte
39Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
40Pham Quoc Thinh, ictu.edu.vn.
Department of Electronics & Telecommunications
CTCON_1:
;
RET
CTCON_2:
;
RET
;Các chương trinh phục vụ ngắt
EXT0_ISR:
;
RETI
T0_ISR:
;
RETI
END
ORG 0000H
LJMP MAIN ;nhảy đến chương trình chính
ORG 0003H
LJMP EXT0_ISR ; Nhảy đến chương trình ISR
;ngắt ngoài 0
ORG 000BH
LJMP T0_ISR
;
ORG 0030H ; Bắt đầu chương trình chính
MAIN:
;
;
;SJMP $
;Cac chuong trinh con
Chương trình phục vụ ngắt kích thước lớn hơn 8 byte
1Pham Quoc Thinh, ictu.edu.vn.
ICTU – 04-2010
│ END of Lecture 8 │
Timer Programming and InterruptsTimer Programming and Interrupts