
Bài giảng Vi xử lý: Chương 10 - Nguyễn Lý Thiên Trường
lượt xem 1
download

Bài giảng "Vi xử lý" Chương 10 - Ngắt (Interrupts), được biên soạn gồm các nội dung chính sau: Giới thiệu; Tổ chức ngắt của ATmega324P; Lập trình ngắt Timer; Lập trình ngắt USART; Lập trình ngắt ngoài. Mời các bạn cùng tham khảo!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Vi xử lý: Chương 10 - Nguyễn Lý Thiên Trường
- Chương 10 Ngắt (Interrupts) Tài liệu tham khảo: 1. Chương 10: Ngắt (Interrupts) (Giáo trình VXL) 2. Muhammad Ali Mazidi, AVR Microcontroller and Embedded Systems: Using Assembly and C, Pearson New International Edition, 2014. 3. Datasheet ATmega324P 4. https://nicerland.com/avr/ 5. http://www.hocavr.com/ 6. https://www.youtube.com/watch?v=Fr2K9pzec8g&list=PLgwJf8NK- 2e55CdbY_WnY6pejPHoojCkJ Nguyễn Lý Thiên Trường 1
- 10.1 Giới thiệu 10.2 Tổ chức ngắt của ATmega324P 10.3 Lập trình ngắt Timer 10.3.1 Ngắt Timer tràn 10.3.2 Ngắt kết quả so sánh Timer, bắt ngõ vào Timer1 10.4 Lập trình ngắt USART 10.5 Lập trình ngắt ngoài 10.5.1 Ngắt ngoài ngõ INT2:INT0 10.5.2 Ngắt đổi trạng thái chân (PCINT: Pin Change Interrupt) Nguyễn Lý Thiên Trường 2
- 10.1 Giới thiệu ▪ Ngắt cho phép đáp ứng tức thời 1 yêu cầu, gọi là yêu cầu ngắt (interrupt request), chương trình chính sẽ tạm thời dừng và chuyển sang phục vụ ngay đoạn chương trình đáp ứng theo yêu cầu ngắt, gọi là trình phục vụ ngắt (ISR: Interrupt Service Routine). ▪ Sau khi thực hiện ISR xong, MCU sẽ trở về tiếp tục thực hiện chương trình chính tại điểm dừng trước đó. ➢ Ngắt là một tác động bất đồng bộ, có thể điều khiển chương trình chính dừng bất kỳ tại thời điểm nào để chuyển sang trình phục vụ yêu cầu ngắt (ISR). Nguyễn Lý Thiên Trường 3
- So sánh giữa ngắt (Interrupt) và hỏi vòng (Polling) ❖ Chương trình hỏi vòng không đáp ứng được hai vấn đề quan trọng: 1. Không đáp ứng được yêu cầu tức thời. 2. MCU mất thời gian chờ (ví dụ: chờ trạng thái nút nhấn, cờ báo,…) mà không xử lý được các công việc khác → hiệu suất làm việc của MCU không cao. ❖ Chương trình sử dụng ngắt đáp ứng được hai vấn đề quan trọng: 1. Đáp ứng được yêu cầu tức thời (bất đồng bộ) bất kỳ lúc nào xảy ra yêu cầu ngắt. 2. MCU không mất thời gian chờ các dấu hiệu xảy ra ngắt → hiệu suất làm việc của MCU rất cao. Nguyễn Lý Thiên Trường 4
- So sánh giữa ISR (chương trình phục vụ ngắt) và CTCon ISR và chương trình con khác biệt nhau ở các điểm sau: ▪ ISR lưu các trạng thái yêu cầu ngắt hiện hành (nếu có) và mức ưu tiên ngắt. ▪ Kết thúc ISR là lệnh RETI (Return from Interrupt), thay vì RET đối với chương trình con. Ngoài việc phục hồi lại địa chỉ điểm dừng trong chương trình chính, còn phục hồi lại các trạng thái yêu cầu ngắt hiện hành và mức ưu tiên ngắt được lưu trước đó. ▪ ISR bắt đầu tại một địa chỉ cố định của Flash ROM gọi là vector ngắt (do nhà sản xuất quy định), còn chương trình con có thể bắt đầu tại bất kỳ địa chỉ nào trong vùng Flash ROM khả dụng. ▪ ISR có thể thực hiện tại bất kỳ thời điểm nào trong chương trình chính khi có tín hiệu yêu cầu ngắt, miễn là có khai báo cho phép ngắt tương ứng. Còn chương trình con chỉ thực hiện khi có lệnh gọi, nghĩa là phải theo dạng hỏi vòng. Nguyễn Lý Thiên Trường 5
- 10.2 Tổ chức ngắt của ATmega324P Có tất cả 31 nguồn ngắt được phân thành 6 nhóm chính như sau: 1. Ngắt hệ thống: 3 nguồn ngắt gồm ngắt khởi động RESET, ngắt Timer giám sát WDT, ngắt sẵn sàng lưu bộ nhớ chương trình SPM_READY. 2. Ngắt Timer: 10 nguồn ngắt gồm ngắt báo tràn, ngắt báo kết quả so sánh kênh A/B Timer0/1/2, ngắt bắt ngõ vào Timer1. 3. Ngắt cổng nối tiếp: 8 nguồn ngắt gồm ngắt cổng USART0/1, ngắt SPI, ngắt TWI (I2C). 4. Ngắt tương tự: 2 nguồn ngắt gồm ngắt ADC, ngắt ACOMP. 5. Ngắt ngoài: 7 nguồn ngắt gồm ngắt ngõ ngoài INTx (x=0-2), ngắt chuyển đổi trạng thái chân PCINTn (n=0-3). 6. Ngắt bộ nhớ EEPROM: 1 nguồn ngắt EEPROM. Nguyễn Lý Thiên Trường 6
- ❖ Các nguồn ngắt và cờ báo ngắt STT Nguồn ngắt Cờ báo ngắt Thanh ghi_bit Sự kiện 1 Tràn Timer0 TOV0 TIFR0_0 Timer0 tràn 2 So sánh kênh A Timer0 OCF0A TIFR0_1 TCNT0=OCR0A 3 So sánh kênh B Timer0 OCF0B TIFR0_2 TCNT0=OCR0B 4 Tràn Timer2 TOV2 TIFR2_0 Timer2 tràn 5 So sánh kênh A Timer2 OCF2A TIFR2_1 TCNT2=OCR2A 6 So sánh kênh B Timer2 OCF2B TIFR2_2 TCNT2=OCR2B 7 Tràn Timer1 TOV1 TIFR1_0 Timer1 tràn 8 So sánh kênh A Timer1 OCF1A TIFR1_1 TCNT1=OCR1A 9 So sánh kênh B Timer1 OCF1B TIFR1_2 TCNT1=OCR1B 10 Bắt ngõ vào Timer1 ICF1 TIFR1_5 ICP/ACO tích cực 11 Thu USART0 RXC0 UCSR0A_7 Thu xong ký tự USART0 12 Phát USART0 TXC0 USCR0A_6 Phát xong ký tự USART0 13 Đệm phát USART0 UDRE0 USCR0A_5 Bộ đệm phát trống USART0 14 Thu USART1 RXC1 UCSR1A_7 Thu xong ký tự USART1 15 Phát USART1 TXC1 USCR1A_6 Phát xong ký tự USART1 16 Đệm phát USART1 UDRE1 USCR1A_5 Bộ đệm phát trống USART1 17 Truyền dữ liệu SPI SPIF0 SPSR0_7 Truyền dữ liệu SPI xong 18 Truyền dữ liệu TWI(I2C) TWINT(*) TWCR_7 Truyền dữ liệu TWI xong 7
- STT Nguồn ngắt Cờ báo ngắt Thanh ghi_bit Sự kiện 19 ADC ADIF ADCSRA_4 ADC chuyển đổi xong 20 So sánh tương tự(ACOMP) ACI ACSR_4 Ngõ ra ACO tích cực 21 Ngắt ngoài ngõ INT0 INTF0 EIFR_0 Tín hiệu kích ngõ vào INT0 22 Ngắt ngoài ngõ INT1 INTF1 EIFR_1 Tín hiệu kích ngõ vào INT1 23 Ngắt ngoài ngõ INT2 INTF2 EIFR_2 Tín hiệu kích ngõ vào INT2 Ngắt ngoài ngõ Thay đổi logic các ngõ vào 24 PCIF0 PCIFR0_0 PCINT0..PCINT7(PA0..PA7) PCINT0..PCINT7 Ngắt ngoài ngõ Thay đổi logic các ngõ vào 25 PCIF1 PCIFR0_1 PCINT8..PCINT15(PB0..PB7) PCINT8..PCINT15 Ngắt ngoài ngõ Thay đổi logic các ngõ vào 26 PCIF2 PCIFR0_2 PCINT16..PCINT23(PC0..PC7) PCINT16..PCINT23 Ngắt ngoài ngõ Thay đổi logic các ngõ vào 27 PCIF3 PCIFR0_3 PCINT24..PCINT31(PD0..PD7) PCINT24..PCINT31 28 EEPROM EEPE(**) EECR_1 Ghi vào EEPROM xong 29 Timer giám sát WDT WDIF WDTCSR_7 Hết giờ Timer giám sát JTRF MCUSR_4 Reset JTAG WDRF MCUSR_3 Reset Timer giám sát(WDT) 30 Reset (xem chương 2) BORF MCUSR_2 Reset Vcc dưới ngưỡng EXTRF MCUSR_1 Reset tín hiệu ngoài PORF MCUSR_0 Reset bật nguồn Vcc SPMEN Sẵn sàng lưu chương trình 31 SPM (Store Program Memory) SPMCSR_0 (***) (Boot loader) (*): TWINT không tự động xóa về 0 khi MCU chuyển điều khiển vào ISR (xem chương 8). (**): EEPE=0 tạo ngắt EEPROM. EEPE = 1: cho phép ghi, phần cứng xóa EEPE về 0 sau khi ghi xong dữ liệu vào ô nhớ EEPROM. (***): SPMEN=0 tạo ngắt SPM. 8
- ❖ Bảng vector ngắt mặc định Địa chỉ (**) STT Nguồn ngắt Định nghĩa ngắt chương trình Thứ tự ưu tiên ngắt 1 $0000(*) RESET Reset JTAG,WDT,Vcc dưới ngưỡng, ngõ reset ngoài,bật nguồn Vcc 2 $0002 INT0 Ngõ ngoài INT0(PD2) 3 $0004 INT1 Ngõ ngoài INT1(PD3) 4 $0006 INT2 Ngõ ngoài INT2(PB2) 5 $0008 PCINT0 Thay đổi logic các ngõ PCINT0..PCINT7(PA0..PA7) 6 $000A PCINT1 Thay đổi logic các ngõ PCINT8..PCINT15(PB0..PB7) 7 $000C PCINT2 Thay đổi logic các ngõ PCINT16..PCINT23(PC0..PC7) 8 $000E PCINT3 Thay đổi logic các ngõ PCINT24..PCINT31(PD0..PD7) 9 $0010 WDT Hết giờ Timer giám sát WDT 10 $0012 TIMER2_COMPA Kết quả so sánh Timer2 kênh A 11 $0014 TIMER2_COMPB Kết quả so sánh Timer2 kênh B 12 $0016 TIMER2_OVF Timer2 tràn 13 $0018 TIMER1_CAPT Bắt ngõ vào Timer1 14 $001A TIMER1_COMPA Kết quả so sánh Timer1 kênh A 15 $001C TIMER1_COMPB Kết quả so sánh Timer1 kênh B 16 $001E TIMER1_OVF Timer1 tràn 17 $0020 TIMER0_COMPA Kết quả so sánh Timer0 kênh A 18 $0022 TIMER0_COMPB Kết quả so sánh Timer0 kênh B 19 $0024 TIMER0_OVF Timer0 tràn Xem tiếp slide sau. Nguyễn Lý Thiên Trường 9
- Địa chỉ (**) STT Nguồn ngắt Định nghĩa ngắt chương trình Thứ tự ưu tiên ngắt 20 $0026 SPI_STC Truyền dữ liệu SPI xong 21 $0028 USART0_RX Thu USART0 xong 22 $002A USART0_UDRE Bộ đệm phát USART0 trống 23 $002C USART0_TX Phát USART0 xong 24 $002E ANALOG_COMP Ngõ ra ACOMP tích cực 25 $0030 ADC ADC chuyển đổi xong 26 $0032 EE_READY EEPROM sẵn sàng 27 $0034 TWI Truyền dữ liệu TWI xong 28 $0036 SPM_READY Sẵn sàng lưu bộ nhớ chương trình 29 $0038 USART1_RX Thu USART1 xong 30 $003A USART1_UDRE Bộ đệm phát USART1 trống 31 $003C USART1_TX Phát USART1 xong (*): Khi lập trình cầu chì BOOTRST, reset sẽ nhảy đến địa chỉ Boot Loader (xem thêm data sheet). (**) Bit IVSEL thuộc thanh ghi MCUCR đặt lên 1, bảng vector ngắt sẽ bắt đầu ở phần Boot Flash. ❖ Địa chỉ reset và vùng địa chỉ bắt đầu của bảng vector ngắt theo BOOTRST và IVSEL BOOTRST IVSEL Địa chỉ reset Địa chỉ bắt đầu bảng vector ngắt 1 0 0x0000 0x0002 (mặc định) 1 1 0x0000 Địa chỉ Boot Reset + 0x0002 0 0 Địa chỉ Boot Reset(*) 0x0002 0 1 Địa chỉ Boot Reset(*) Địa chỉ Boot Reset + 0x0002 (*) Xem thêm Chương 2 và data sheet. Nguyễn Lý Thiên Trường 10
- ▪ Do bảng vector ngắt từ địa chỉ 0x0002 đến 0x003C và khoảng cách giữa 2 vector ngắt kế tiếp nhau là 4 byte, nên để đảm bảo dự trữ vùng địa chỉ vector ngắt phục vụ cho các nguồn ngắt, lệnh đầu tiên tại điểm reset chương trình là lệnh nhảy ra khỏi vùng địa chỉ vector ngắt và bắt đầu chương trình chính tại địa chỉ 0x0040. .ORG 0 ;địa chỉ reset RJMP MAIN ;nhảy đến MAIN …. .ORG 0X0040 ;địa chỉ bắt đầu chương trình chính MAIN: …. ▪ Cũng do khoảng cách giữa 2 vector ngắt kế tiếp nhau là 4 byte, nếu ISR dài quá 4 byte sẽ chiếm hết địa chỉ vector ngắt của các nguồn ngắt kế tiếp, đương nhiên không thể thực hiện các nguồn ngắt này được. Do đó lệnh đầu tiên trong ISR tại địa chỉ vector ngắt thường là lệnh JMP (4 byte) hay RJMP (2 byte) chuyển địa chỉ bắt đầu thực sự của ISR ra ngoài vùng địa chỉ vector ngắt và có thể đặt bất kỳ ở điểm nào trong vùng bộ nhớ chương trình khả dụng. Nguyễn Lý Thiên Trường 11
- Ví dụ 1: Khai báo 2 ISR tương ứng nguồn ngắt Timer0 tràn và Timer2 so sánh kênh A. .ORG 0 ;địa chỉ reset RJMP MAIN ;nhảy đến MAIN .ORG 0X0012 ;điểm vào ISR Timer2 COMPA RJMP TIMER2_COMPA_ISR ;nhảy đến Timer2_ COMPA .ORG 0X0024 ;điểm vào ISR Timer0 tràn RJMP TIMER0_OVF_ISR ;nhảy đến Timer0_OVF .ORG 0X0040 ;địa chỉ bắt đầu chương trình chính MAIN: …. …. ;----------------------------------------------------------- TIMER0_OVF_ISR: ;bắt đầu ISR Timer0 tràn …. …. RETI ;----------------------------------------------------------- TIMER2_COMPA_ISR: ;bắt đầu ISR Timer2 COMPA …. …. RETI Nguyễn Lý Thiên Trường 12
- ❖ Cho phép và cấm các nguồn ngắt Việc khai báo cho phép các nguồn ngắt thông qua 2 bước: 1. Cờ I (bit 7 thanh ghi SREG): Cho phép/cấm toàn cục. ▪ Khi đặt I=1 cho phép các nguồn ngắt với điều kiện nguồn ngắt cục bộ (riêng biệt) được cho phép. ▪ Nếu xóa I=0 cấm toàn bộ các nguồn ngắt. 2. Bit cho phép/cấm cục bộ: các bit này nằm tập trung trong một số thanh ghi thuộc chức năng của các phần cứng như Timer, cổng nối tiếp, ADC…, cho phép/cấm từng nguồn ngắt riêng biệt. 0x3F (0x5F) I T H S V N Z C SREG (0x6E) - - - - - OCIE0B OCIE0A TOIE0 TIMSK0 Ví dụ Timer0 có thanh ghi TIMSK0 chứa 3 bit OCIE0B, OCIE0A, TOIE0 lần lượt cho phép /cấm các nguồn ngắt Timer0 COMPB, Timer0 COMPA, Timer0 tràn khi được đặt lên 1/xóa về 0. Nguyễn Lý Thiên Trường 13
- ❖ Các bit cấm/cho phép cục bộ và vị trí trong thanh ghi Nguồn ngắt Bit cho phép(1)/cấm(0) Thanh ghi_Bit Địa chỉ MEM/(I/O) INT0 INT0 EIMSK_0 0X3D/(0X1D) INT1 INT1 EIMSK_1 0X3D/(0X1D) INT2 INT2 EIMSK_2 0X3D/(0X1D) PCINT0 PCIE0 PCICR_0 0X68 PCINT1 PCIE1 PCICR_1 0X68 PCINT2 PCIE2 PCICR_2 0X68 PCINT3 PCIE3 PCICR_3 0X68 WDT WDIE WDTCSR_6 0X60 TIMER2_COMPA OCIE2A TIMSK2_1 0X70 TIMER2_COMPB OCIE2B TIMSK2_2 0X70 TIMER2_OVF TOIE2 TIMSK2_0 0X70 TIMER1_CAPT ICIE1 TIMSK1_5 0X6F TIMER1_COMPA OCIE1A TIMSK1_1 0X6F TIMER1_COMPB OCIE1B TIMSK1_2 0X6F TIMER1_OVF TOIE1 TIMSK1_0 0X6F Nguyễn Lý Thiên Trường 14
- ❖ Các bit cấm/cho phép cục bộ và vị trí trong thanh ghi Nguồn ngắt Bit cho phép(1)/cấm(0) Thanh ghi_Bit Địa chỉ MEM/(I/O) TIMER0_COMPA OCIE0A TIMSK0_1 0X6E TIMER0_COMPB OCIE0B TIMSK0_2 0X6E TIMER0_OVF TOIE0 TIMSK0_0 0X6E SPI_STC SPIE0 SPCR0_7 0X4C/(0X2C) USART0_RX RXCIE0 UCSR0B_7 0XC1 USART0_UDRE UDRIE0 UCSR0B_5 0XC1 USART0_TX TXCIE0 UCSR0B_6 0XC1 ANALOG_COMP ACIE ACSR_3 0X50/(0X30) ADC ADIE ADCSRA_3 0X7A EE_READY EERIE EECR_3 0X3F/(0X1F) TWI TWIE TWCR_0 0XBC SPM_READY SPMIE SPMCSR_7 0X57/(0X37) USART1_RX RXCIE1 UCSR1B_7 0XC9 USART1_UDRE UDRIE1 UCSR1B_5 0XC9 USART1_TX TXCIE1 UCSR1B_6 0XC9 Nguyễn Lý Thiên Trường 15
- Ví dụ 2: Khai báo cho phép 3 nguồn ngắt Timer0 tràn, Timer2 COMPA, ADC. SEI ;cho phép ngắt toàn cục LDI R16, (1
- ❖ Các bước thực thi ngắt Khi có tín hiệu yêu cầu ngắt xảy ra và được cho phép ngắt, MCU sẽ thực hiện các bước như sau: 1. Thực thi xong lệnh hiện hành và cất địa chỉ lệnh kế tiếp (nội dung PC hiện hành) vào stack, cất các trạng thái ngắt hiện hành và mức ưu tiên ngắt (nếu có). Lưu ý: trường hợp lệnh đang thực thi là lệnh RET mà xảy ra yêu cầu ngắt thì sau khi thực thi xong lệnh RET quay về chương trình chính, MCU thực thi xong thêm 1 lệnh nữa thì mới chuyển đến ISR. 2. PC được nạp địa chỉ cố định tương ứng từng loại nguồn ngắt gọi là vector ngắt, đây chính là địa chỉ bắt đầu trình phục vụ ngắt ISR. Xóa cờ báo ngắt bằng phần cứng (Lưu ý: cờ TWINT phải xóa bằng phần mềm bằng cách ghi 1 vào vị trí bit này; xóa cờ UDREn bằng cách ghi dữ liệu vào UDRn; xóa cờ RXCn bằng cách đọc dữ liệu từ UDRn), đồng thời xóa cờ I=0 cấm các nguồn ngắt khác thực thi. 3. MCU thực thi các lệnh trong ISR cho đến khi gặp lệnh RETI báo kết thúc ISR. 4. MCU thực thi lệnh RETI phục hồi lại địa chỉ tại điểm dừng trước đó bằng cách lấy ra từ stack nạp lại cho PC, và phục hồi lại các trạng thái ngắt hiện hành và mức ưu tiên ngắt (nếu có), đặt cờ I=1 cho phép ngắt được tiếp tục. Chương trình tiếp tục thực thi tại điểm dừng trước đó. ➢ Lưu ý: Bước 4 rất quan trọng, MCU phải phục hồi đúng địa chỉ điểm dừng của chương trình chính trước đó lấy từ stack! Do đó ta phải hết sức chú ý trong ISR khi có các lệnh gọi chương trình con và PUSH, POP phải đảm bảo số lệnh PUSH đúng bằng số lệnh POP và nguyên tắc vào sau ra trước của stack!!! Nguyễn Lý Thiên Trường 17
- Ví dụ hoạt động ngắt ngoài INT0 PC6 PC5 Code PD0 ATmega324P PC4 Address .ORG 0 PD1 PC3 0000 RJMP MAIN (INT0) PD2 PC2 0002 .ORG 0x02 (INT1) PD3 0002 PC1 0002 RJMP EX0_ISR PC0 0003 MAIN: LDI R20,HIGH(RAMEND) PD4 0004 OUT SPH,R20 VCC GND 0005 LDI R20,LOW(RAMEND) GND PB7 0006 OUT SPL,R20 PB6 AVCC 0007 LDI R20,0x2 ;make INT0 falling 0008 STS EICRA,R20 PB7 PC: 0013 0014 0015 0004 000F 0006 000E 000D 0012 0011 000B 000A 0008 0007 0000 0005 0003 000C PB5 000A SBI PORTD,2 ;pull-up activated PD5 PB4 000B LDI R20,1
- ❖ Mức ưu tiên ngắt ▪ Nguồn ngắt nào có vector ngắt địa chỉ thấp hơn sẽ ưu tiên cao hơn. Thứ tự mức ưu tiên từ cao đến thấp theo thứ tự từ trên xuống dưới của bảng vector ngắt (nguồn ngắt RESET mức ưu tiên cao nhất, kế đến là ngắt INT0, …, và ưu tiên thấp nhất là nguồn ngắt phát USART1 USART1_TX). ▪ Khi hai hay nhiều nguồn ngắt xảy ra cùng một thời điểm, nguồn ngắt nào có mức ưu tiên cao hơn sẽ được thực hiện trước và nguồn ngắt có mức ưu tiên thấp hơn sẽ được thực hiện sau. ▪ Khi MCU chuyển điều khiển đến vector ngắt bắt đầu ISR của nguồn ngắt tương ứng, phần cứng tự động xóa cờ I=0 để đảm bảo trong thời gian thực thi ISR của một nguồn ngắt không cho phép các nguồn ngắt khác thực thi, tránh xung đột hoặc lặp vòng ngắt không mong muốn (MCU vẫn lưu trạng thái báo ngắt nếu có nguồn ngắt khác phát tín hiệu yêu cầu ngắt). Chỉ đến khi thực thi lệnh RETI kết thúc ISR, phần cứng mới đặt cờ I=1 trở lại cho phép ngắt tiếp tục. ➢ Lưu ý: Mức ưu tiên ngắt chỉ xác định khi hai hay nhiều nguồn ngắt xảy ra cùng thời điểm. Nguyễn Lý Thiên Trường 19
- Ví dụ 3: Giả sử chương trình sau đây đã khai báo các PORT, Timer1, ADC hợp lệ và cho phép hai nguồn ngắt Timer1 COMPB và ADC. Tại thời điểm thực thi dòng lệnh IN R17,PORTB cờ OCF1B và ADIF được đặt lên 1. Hãy mô tả hoạt động của MCU324P từ thời điểm này. .ORG 0 ;---------------------------------------- RJMP MAIN TIMER1_COMPB_ISR: .ORG 0X001C … RJMP TIMER1_COMPB_ISR … .ORG 0X0030 … RJMP ADC_CONV_ISR … .ORG 0X0040 RETI MAIN: … ;---------------------------------------- … ADC_CONV_ISR: START: LDI R16,1 … IN R17,PORTB … EOR R17,R16 … OUT PORTB,R17 … RJMP START RETI Nguyễn Lý Thiên Trường 20

CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng vi xử lý: Chương 1 - Hồ Trung Mỹ
135 p |
251 |
20
-
Bài giảng vi xử lý: Chương 3 (3.1, 3.2, 3.3) - Hồ Trung Mỹ
101 p |
93 |
8
-
Bài giảng vi xử lý: Chương 3 (3.6) - Hồ Trung Mỹ
39 p |
88 |
7
-
Bài giảng Vi xử lý - Chương 0: Giới thiệu học phần
4 p |
21 |
6
-
Bài giảng Vi xử lý - Chương 2: Phần cứng 8051
91 p |
17 |
5
-
Bài giảng Vi xử lý - Chương 3: Lập trình 8051
126 p |
22 |
5
-
Bài giảng Vi xử lý - Chương 1: Giới thiệu Vi xử lý
104 p |
15 |
5
-
Bài giảng Vi xử lý - Chương 4: Các chức năng họ 8051
99 p |
20 |
5
-
Bài giảng Vi xử lý - Chương 5: Giao tiếp
166 p |
12 |
4
-
Bài giảng Vi xử lý: Chương 3 - Nguyễn Lý Thiên Trường
28 p |
1 |
1
-
Bài giảng Vi xử lý: Chương 7 - Nguyễn Lý Thiên Trường
161 p |
4 |
1
-
Bài giảng Vi xử lý: Chương 1 - Lưu Phú
29 p |
1 |
1
-
Bài giảng Vi xử lý: Chương 3 - Nguyễn Trọng Luật
62 p |
2 |
1
-
Bài giảng Vi xử lý: Chương 8 - Nguyễn Lý Thiên Trường
83 p |
1 |
1
-
Bài giảng Vi xử lý: Chương 2 - Nguyễn Lý Thiên Trường
50 p |
2 |
1
-
Bài giảng Vi xử lý: Chương 6 - Nguyễn Lý Thiên Trường
92 p |
2 |
1
-
Bài giảng Vi xử lý: Chương 9 - Nguyễn Lý Thiên Trường
67 p |
3 |
1


Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn
