Câu hỏi ôn tập môn học: Vi xử lý và vi điều khiển
lượt xem 35
download
Nhằm giúp các bạn có thêm tài liệu phục vụ nhu cầu học tập và nghiên cứu, mời các bạn cùng tham khảo nội dung tài liệu câu hỏi ôn tập môn học "Vi xử lý và vi điều khiển" dưới đây. Nội dung tài liệu cung cấp cho cac bạn 9 câu hỏi bài tập có hướng dẫn lời giải giúp các bạn củng cố lại kiến thức đã học và làm quen với dạng bài tập.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Câu hỏi ôn tập môn học: Vi xử lý và vi điều khiển
- CÂU HỎI ÔN TẬP MÔN HỌC VI XỬ LÝ VÀ VI ĐIỀU KHIỂN Tất cả các chip trong họ AVR đều bao gồm 32 thanh ghi Register File có địa chỉ tuyệt đối từ 0x0000 đến 0x001F. Và phần nằm ngay sau register file, phần này bao gồm 64 thanh ghi được gọi là 64 thanh ghi nhập/xuất (64 I/O register) hay còn gọi là vùng nhớ I/O (I/O Memory). Vùng nhớ I/O là cửa ngõ giao tiếp giữa CPU và thiết bị ngoại vi Câu 1. Sự khác nhau giữa Vi điều khiển 8 bit và 16 bit? Thanh ghi là các ô nhớ đặc biệt,được sử dụng để lưu trữ tạm thời các lệnh và dữ liệu thông qua việc lưu trữ các giá trị 0 và 1. Vdk 8 bit là vdk có những thanh ghi có 8 bit nhớ và bộ xử lí số học trên các toán hạng 8 bit (trừ trường hợp ghép 2 thanh ghi High và Low để được 16 bit),vdk 16bit có những thanh ghi có 16 bit nhớ và bộ xử lí số học trên các toán hạng 16 bit là chủ yếu. Câu 2.So sánh Vi điều khiển có kiến trúc VonNeumann và Vi điều khiển có kiến trúc Havard? VonNeuman: Trong kiến trúc von Neumann không phân biệt vùng chứa dữ liệu và mã chương trình. Cả chương trình và dữ liệu đều được truy nhập theo cùng một đường. Điều này cho phép đưa dữ liệu vào vùng mã chương trình ROM, và cũng có thể lưu mã chương trình vào vùng dữ liệu RAM và thực hiện từ đó. Kiến trúc Havard tách/phân biệt vùng lưu mã chương trình và dữ liệu. Mã chương trình chỉ có thể được lưu và thực hiện trong vùng chứa ROM và dữ liệu cũng chỉ có thể lưu và trao đổi trong vùng RAM. Ưu điểm nổi bật của cấu trúc bộ nhớ Harvard so với kiến trúc von Neumann là có hai kênh tách biệt để truy nhập vào vùng bộ nhớ mã chương trình và dữ liệu nhờ vậy mà mã chương trình và dữ liệu có thể được truy nhập đồng thời và làm tăng tốc độ luồng trao đổi với bộ xử lý. Câu 3.Truyền nhận nối tiếp UART giữa hai Vi điều khiển ,giữa vdk và máy tính Truyền thông nối tiếp :dữ liệu được truyền từng bit trên 1 (hoặc một ít) đường truyền. Khái niệm “đồng bộ” để chỉ sự “báo trước” trong quá trình truyền Truyền thông “không đồng bộ” chỉ cần một đường truyền cho một quá trình. “Khung dữ liệu” đã được chuẩn hóa bởi các thiết bị nên không cần đường xung nhịp báo trước dữ liệu đến. Baud rate (tốc độ Baud):Phải giống nhau trên các thiết bị Frame (khung truyền): Khung truyền bao gồm các quy định về số bit trong mỗi lần truyền, số lượng các bit trong 1 data ,các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity;tuân theo 1 quy tắc nhất định để tránh mất hoặc sai dữ liệu. Start bit: bit đầu tiên,báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới. Data: là thông tin chính mà chúng ta cần gởi và nhận. Trang 1/14
- Parity bit: parity là bit dùng kiểm tra dữ liệu truyền đúng không. Stop bits: là một hoặc các bit báo cho thiết bị nhận rằng một gói dữ liệu đã được gởi xong. *)Truyền thông nối tiếp không đồng bộ với AVR (UART) Gồm:chân xung nhịp XCK, chân truyền dữ liệu – TxD (Transmitted Data) và chân nhận dữ liệu – RxD (Reveived Data). 1. Thanh ghi: Cũng như các thiết bị khác trên AVR, tất cả hoạt động và tráng thái của module USART được điều khiển và quan sát thông qua các thanh ghi trong vùng nhớ I/O. Có 5 thanh ghi được thiết kế riêng cho hoạt động và điều khiển của USART, đó là: UDR: hay thanh ghi dữ liệu, là 1 thanh ghi 8 bit chứa giá trị nhận được và phát đi của USART. Thực chất thanh ghi này có thể coi như 2 thanh ghi TXB (Transmit data Buffer) và RXB (Reveive data Buffer) có chung địa chỉ. Đọc UDR thu được giá trị thanh ghi đệm dữ liệu nhận, viết giá trị vào UDR tương đương đặt giá trị vào thanh ghi đệm phát, chuẩn bị để gởi đi. Chú ý trong các khung truyền sử dụng 5, 6 hoặc 7 bit dữ liệu, các bit cao của thanh ghi UDR sẽ không được sử dụng UCSRA (USART Control and Status Register A): là 1 trong 3 thanh ghi điều khiển hoạt động của module USART. Thanh ghi UCSRA chủ yếu chứa các bit trạng thái như bit báo quá trình nhận kết thúc (RXC), truyền kết thúc (TXC), báo thanh ghi dữ liệu trống (UDRE), khung truyền có lỗi (FE), dữ liệu tràn (DOR), kiểm tra parity có lỗi (PE). +UDRE (USART Data Register Empty) khi bit bày bằng 1 nghĩa là thanh ghi dữ liệu UDR đang trống và sẵn sàng cho một nhiệm vụ truyền hay nhận tiếp theo. Vì thế nếu bạn muốn truyền dữ liệu đầu tiên bạn phải kiểm tra xem bit UDRE có bằng 1 hay không, sau khi chắc chắn rằng UDRE=1 hãy viết dữ liệu vào thanh ghi UDR để truyền đi. +U2X là bit chỉ định gấp đôi tốc độ truyền, khi bit này được set lên 1, tốc độ truyền so cao gấp 2 lần so với khi bit này mang giá trị 0. +MPCM là bit chọn chế độ hoạt động đa xử lí (multiprocessor). UCSRB (USART Control and Status Register B): đây là thanh ghi quan trọng điều khiển USART. Vì thế chúng ta sẽ khảo sát chi tiết từng bit của thanh ghi này. +RXCIE (Receive Complete Interrupt Enable) là bit cho phép ngắt khi quá trình nhận kết thúc. Việc nhận dữ liệu truyền bằng phương pháp nối tiếp không đồng bộ thường được thực hiện Trang 2/14
- thông qua ngắt, vì thế bit này thường được set bằng 1 khi USART được dung nhận dữ liệu. TXCIE (Transmit Complete Interrupt Enable) bit cho phép ngắt khi quá trình truyền kết thúc. UDRIE (USART Data Register Empty Interrupt Enable) là bit cho phép ngắt khi thanh ghi dữ liệu UDR trống. RXEN (Receiver Enable) là một bit quan trọng điều khiển bộ nhận của USART, đề kích hoạt chức năng nhận dữ liệu bạn phải set bit này lên 1. TXEN (Transmitter Enable) là bit điều khiển bộ phát. Set bit này lên 1 bạn sẽ khởi động bộ phát của USART. UCSZ2 (Chracter size) bit này kết hợp với 2 bit khác trong thanh ghi UCSRC quy định độ dài của dữ liệu truyền/nhận. Chúng ta sẽ khảo sát chi tiết khi tìm hiểu thanh ghi UCSRC. RXB8 (Receive Data Bit 8) gọi là bit dữ liệu 8. Bạn nhớ lại rằng USART trong AVR có hỗ trợ truyền dữ liệu có độ dài tối đa 9 bit, trong khi thanh ghi dữ liệu là thanh ghi 8 bit. Do đó, khi có gói dữ liệu 9 bit được nhận, 8 bit đầu sẽ chứa trong thanh ghi UDR, cần có 1 bit khác đóng vai trò bit thứ chín, RXD8 là bit thứ chín này. Bạn chú ý là các bit được đánh số từ 0, vì thế bit thứ chín sẽ có chỉ số là 8, vì lẽ đó mà bit này có tên là RXD8 (không phải RXD9). TXB8 (Transmit Data Bit 8), tương tự như bit RXD8, bit TXB8 cũng đóng vai trò bit thứ 9 truyền thông, nhưng bit này được dung trong lúc truyền dữ liệu. UCSRC (USART Control and Status Register C): thanh ghi này chủ yếu quy định khung truyền và chế độ truyền. Tuy nhiên, có một rắc rối nho nhỏ là thanh ghi này lại có cùng địa chỉ với thanh ghi UBRRH (thanh ghi chứa byte cao dùng để xác lập tốc độ baud), nói một cách khác 2 thanh ghi này là 1. Vì thế bit 7 trong thanh ghi này, tức bit URSEL là bit chọn thanh ghi. Khi URSEL=1, thanh ghi này được chip AVR hiểu là thanh ghi điều khiển UCSRC, nhưng nếu bit URSEL=0 thì thanh ghi UBRRH sẽ được sử dụng. Các bit còn lại trong thanh ghi UCSRC được mô tả như sau: UMSEL (USART Mode Select) là bit lựa chọn giữa 2 chế độ truyền thông đồng bộ và không đồng bộ. Nếu UMSEL=0, chế độ không đồng bộ được chọn, ngược lại nếu UMSEL=1, chế độ đồng bộ được kích hoạt. Hai bit UPM1 và UPM0( Parity Mode) được dùng để quy định kiểm tra pariry. Nếu UPM1:0=00, parity không được sử dụng (mode này khá thông dụng), UPM1:0=01 không được sử dụng, UPM1:0=10 thì parity chẵn được dùng, UPM1:0=11 parity lẻ được sử dụng (xem thêm bảng 1). Bảng 1: chọn kiểm tra parity. Trang 3/14
- USBS (Stop bit Select), bit Stop trong khung truyền bằng AVR USART có thể là 1 hoặc 2 bit, nếu USBS=0 thì Stop bit chỉ là 1 bit trong khi USBS=1 sẽ có 2 Stop bit được dùng. Hai bit UCSZ1 và UCSZ2 (Character Size) kết hợp với bit UCSZ2 trong thanh ghi UCSRB tạo thành 3 bit quy định độ dài dữ liệu truyền. Bảng 2 tóm tắt các giá trị có thể có của tổ hợp 3 bit này và độ dài dữ liệu truyền tương ứng. Bảng 2: độ dài dữ liệu truyền. UCPOL (Clock Pority) là bit chỉ cực của xung kích trong chế độ truyền thông đồng bộ. nếu UCPOL=0, dữ liệu sẽ thay đổi thay đổi ở cạnh lên của xung nhịp, nếu UCPOL=1, dữ liệu thay đổi ở cạnh xuống xung nhịp. Nếu bạn sử dụng chế độ truyền thông không đồng bộ, hãy set bit này bằng 0.. UBRRL và UBRRH (USART Baud Rate Register): 2 thanh ghi thấp và cao quy định tốc độ baud. Nhắc lại là thanh ghi UBRRH dùng chung địa chỉ thanh ghi UCSRC, bạn phải set bit này bằng 0 nếu muốn sử dụng thanh ghi UBRRH. Như bạn quan sát trong hình trên, chỉ có 4 bit thấp của UBRRH được dùng, 4 bit này kết hợp với 8 bit trong thanh ghi UBRRL tạo thành thanh ghi 12 bit quy định tốc độ baud. Chú ý là nếu bạn viết giá trị vào thanh ghi UBRRL, tốc độ baud sẽ tức thì được cập nhật, vì thế bạn phải viết giá trị vào thanh ghi UBRRH trước khi viết vào thanh ghi UBRRL. Giá trị gán cho thanh ghi UBRR không phải là tốc độ baud, nó chỉ được USART dùng để tính tốc độ baud. Để sử dụng module USART trên AVR bạn phải thực hiện 3 việc quan trọng, đó là: cài đặt tốc độ baud (thanh ghi UBRR), định dạng khung truyền (UCSRB, UCSRC) và cuối cùng kích hoạt bộ truyền, bộ nhận, ngắt… *)Truyền nhận nối tiếp UART giữa hai Vi điều khiển Đấu chéo TxD của vdk này với RxD của vdk khác và ngược lại. Truyền dữ liệu: void uart_tx_setup(){ //set baud,f=8Mhz UBRRH=0; Trang 4/14
- UBRRL=51; //9600 bps //set khung truyen va kich hoat bo nhan du lieu UCSRA=0x00; UCSRC=(1
- + Các lối vào phải có điện dung 3kΩ và
- Cách 1: #define F_CPU 12000000UL #include _delay_us(100); Cách 2: #define F_CPU 12000000UL For(uint16_t i=0;i
- MAX luôn là 0xFF (tức 255 trong hệ thập phân), với bộ T/C 16 bit thì MAX bằng 0xFFFF (65535). Như thế MAX là giá trị không đổi trong mỗi T/C. TOP: là giá trị mà khi T/C đạt đến nó sẽ thay đổi trạng thái, giá trị này không nhất thiết là số lớn nhất 8 bit hay 16 bit như MAX, giá trị của TOP có thể thay đổi bằng cách điều khiển các bit điều khiển tương ứng hoặc có thể nhập trừ tiếp thông qua một số thanh ghi. Chúng ta sẽ hiểu rõ về giá trị TOP trong lúc khảo sát T/C1. Việc còn lại và cũng là việc quan trọng nhất là việc tính toán giá trị chia (prescaler) cho xung nhịp của T/C0 và việc xác định giá trị khởi đầu cần gán cho thanh ghi TCNT0 để có được 1 khoảng thời gian định thì chính xác như mong muốn. Trước hết chúng ta sẽ chọn prescaler sao cho hợp lí nhất (chọn giá trị chia bằng cách set 3 bit CS02,CS01,CS00). Giả sử nguồn xung clock “nuôi” chip của chúng ta là clkI/O=1MHz tức là 1 nhịp mất 1us, nếu chúng ta để prescaler=1, tức là tần số của T/C0 (tạm gọi là fT/C0) cũng bằng clkI/O=1MHz, cứ 1us T/C0 được kích và TCNT0 sẽ tăng 1 đơn vị. Khi đó giá trị lớn nhất mà T/C0 có thể đạt được là 256 x 1us=256us, giá trị này nhỏ hơn 1ms mà ta mong muốn. Nếu chọn prescaler=8 (xem bảng 1) nghĩa là cứ sau 8 nhịp (8us) thì TCNT0 mới tăng 1 đơn vị, khả năng lớn nhất mà T/C0 đếm được là 256 x 8us=2048us, lớn hơn 1ms, vậy ta hoàn toàn có thể sử dụng prescaler=8 để tạo ra một khoảng định thì 1ms. Bước tiếp theo là xác định giá trị khởi đầu của TCNT0 để T/C0 đếm đúng 1ms (1000us). Ứng với prescaler=8 chúng ta đã biết là cứ 8us thì TCNT0 tăng 1 đơn vị, dễ dàng tính được bộ đếm cần đếm 1000/8=125 lần để hết 1ms, do đó giá trị ban đầu của TCNT0 phải là 256125=131. Bạn có thể quan sát hình 2 để hiểu thấu đáo hơn. Hình 2. Quá trình thực hiện. 2. Timer/Counter1: Timer/Counter1 là bộ T/C 16 bits, đa chức năng. Đây là bộ T/C rất lý tưởng cho lập trình đo lường và điều khiển vì có độ phân giải cao (16 bits) và có khả năng tạo xung điều rộng PWM (Pulse Width Modulation – thường dùng để điều khiển động cơ). Thanh ghi: có khá nhiều thanh ghi liên quan đến T/C1. Vì là T/C 16 bits trong khi độ rộng bộ nhớ dữ liệu của AVR là 8 bit (xem lại bài 2) nên đôi khi cần dùng những cặp thanh ghi 8 bits tạo thành 1 thanh ghi 16 bit, 2 thanh ghi 8 bits sẽ có tên kết thúc bằng các ký tự L và H trong đó L là thanh ghi chứa 8 bits thấp (LOW) và H là thanh ghi chứa 8 bits cao (High) của giá trị 16 bits mà chúng tạo thành. TCNT1H và TCNT1L (Timer/Counter Register): là 2 thanh ghi 8 bit tạo thành thanh ghi 16 bits (TCNT1) chứa giá trị vận hành của T/C1. Cả 2 thanh ghi này cho phép bạn đọc và ghi giá trị một cách trực tiếp. 2 thanh ghi được kết hợp như sau: Trang 8/14
- TCCR1A và TCCR1B (Timer/Counter Control Register): là 2 thanh ghi điều khiển hoạt động của T/C1. Tất cả các mode hoạt động của T/C1 đều được xác định thông qua các bit trong 2 thanh ghi này. Tuy nhiên, đây không phải là 2 byte cao và thấp của một thanh ghi mà là 2 thanh ghi hoàn toàn độc lập. Các bit trong 2 thanh ghi này bao gồm các bit chọn mode hay chọn dạng sóng (Waveform Generating Mode – WGM), các bit quy định dạng ngõ ra (Compare Output Match – COM), các bit chọn giá trị chia prescaler cho xung nhịp (Clock Select – CS)…Cấu trúc của 2 thanh ghi được trình bày như bên dưới. Nhìn chung để “thuộc” hết cách phối hợp các bit trong 2 thanh ghi TCCR1A và TCCR1B là tương đối phức tạp vì T/C1 có rất nhiều mode hoạt động, chúng ta sẽ khảo sát chúng trong phần các chế độ hoạt động của T/C1 bên dưới. Ở đây, trong thanh ghi TCCR1B có 3 bit khá quen thuộc là CS10, CS11 và CS12. Đây là các bit chọn xung nhịp cho T/C1 như truong T/C0. Bảng 2 sẽ tóm tắt các chế độ xung nhịp trong T/C1. Bảng 2: chức năng các bit CS12, CS11 và CS10. OCR1A và OCR1B (Ouput Compare Register A và B): có một số khái niệm mới mà chúng ta cần biết khi làm việc với T/C1, một trong số đó là Ouput Compare (sorry, I don’t wanna translate it to Vietnamese). Trong lúc T/C hoạt động, giá trị thanh ghi TCNT1 tăng, giá trị này được liên tục so sánh với các thanh ghi OCR1A và OCR1B (so sánh độc lập với từng thanh ghi), việc so sánh này trên AVR gọi là gọi là Ouput Compare. Khi giá trị so sánh bằng nhau thì 1 “Match” xảy ra, khi đó một ngắt hoặc 1 sự thay đổi trên chân OC1A (hoặc/và chân OC1B) xảy ra (đây là cách tạo Trang 9/14
- PWM bởi T/C1). Tại sao lại có A và B? Đó là vì người thiết kế AVR muốn mở rộng khả năng ứng dụng T/C1 cho bạn. A và B đại diện cho 2 kênh (channel) và B. Cũng vì điều này mà chúng ta có thể tạo 2 kênh PWM bằng T/C1. Tóm lại, cơ bản 2 thanh ghi này chứa các giá trị để so sánh, chức năng và các chế độ hoạt động cụ thể của chúng sẽ được khảo sát trong các phần sau. ICR1 (InputCapture Register 1): khái niệm mới thứ 2 của T/C1 là Input Capture. Khi có 1 sự kiện trên chân ICP1 (chân 14 trên Atmega8), thanh ghi ICR1sẽ “capture” giá trị của thanh ghi đếm TCNT1. Một ngắt có thể xảy ra trong trường hợp này, vì thế Input Capture có thể được dùng để cập nhật giá trị “TOP” của T/C1. TIMSK (Timer/Counter Interrupt Mask Register): các bộ T/C trên AVR dùng chung thanh ghi mặt nạ ngắt, vì thế TIMSK cũng được dùng để quy định ngắt cho T/C1. Có điều lúc này chúng ta chỉ quan tâm đến các bit từ 2 đến 5 của TIMSK. Có tất cả 4 loại ngắt trên T/C1 (nhớ lại T/C0 chỉ có 1 loại ngắt tràn) TOIE1, bit quy định ngắt tràn cho thanh T/C1 (tương tự trường hợp của T/C0). OCIE1B là bit cho phép ngắt khi có 1 “Match” xảy ra trong việc so sánh TCNT1 với OCR1B. OCIE1A là bit cho phép ngắt khi có 1 “Match” xảy ra trong việc so sánh TCNT1 với OCR1A. TICIE1 là bit cho phép ngắt trong trường hợp Input Capture được dùng. Cùng với việc set các bit trên, bit I trong thanh ghi trạng thái phải được set nếu muốn sử dụng ngắt. TIFR (Timer/Counter Interrupt Flag Register): là thanh ghi cờ nhớ cho tất cả các bộ T/C. Các bit từ 2 đến 5 trong thanh ghi này là các cờ trạng thái của T/C1. Các mode hoạt động: có tất cả 5 chế độ hoạt động chính trên T/C1. Các chế độ hoạt động cơ bản được quy định bởi 4 bit Waveform Generation Mode (WGM13, WGM12, WGM11 Trang 10/14
- WGM10) và một số bit phụ khác. 4 bit Waveform Generation Mode lại được bố trí nằm trong 2 thanh ghi TCCR1A và TCCR1B (WGM13 là bit 4, WGM12 là bit 3 trong TCCR1B trong khi WGM11 là bit 1 và WGM10 là bit 0 trong thanh ghi TCCR1A) vì thế cần phối hợp 2 thanh ghi TCCR1 trong lúc điều khiển T/C1. Các chế độ hoạt động của T/C1 được tóm tắt trong bảng sau 3: Bảng 3: các bit WGM và các chế độ hoạt động của T/C1. Định thì 1ms với T/C0. #define F_CPU 8000000UL Void timer0(){ TCCR0=(1
- TIMSK |=(1
- Hình 2. Kết nối ngắt ngoài cho atmega8. Giả sử chúng ta kết nối các ngắt ngoài trên AVR mega8 như phía trái hình 2, các button dùng tạo ra các ngắt. Có 4 khả năng (tạm gọi là các MODES) có thể xảy ra khi chúng ta nhấn và thả các button. Nếu không nhấn, trạng thái các chân INT là HIGH do điện trở kéo lên, khi vừa nhấn 1 button, sẽ có chuyển trạng thái từ HIGH sang LOW, chúng ta gọi là cạnh xuống Falling Edge, khi button được nhấn và giữ, trạng thái các chân INT được xác định là LOW và cuối cùng khi thả các button, trạng thái chuyển từ LOW sang HIGH, gọi là cạnh lên – Rising Edge. Trong những trường hợp cụ thể, 1 trong 4 MODES trên đều hữu ích, ví dụ trong các ứng dụng đếm xung (đếm encoder của servo motor chẳng hạn) thì 2 MODE “cạnh” phải được dùng. Thanh ghi MCUCR chứa các bits cho phép chúng ta chọn 1 trong 4 MODE trên cho các ngắt ngoài. Dưới đây là cấu trúc thanh ghi MCUCR được trích ra từ datasheet của chip atmega8. MCUCR là một thanh ghi 8 bit nhưng đối với hoạt động ngắt ngoài, chúng ta chỉ quan tâm đến 4 bit thấp của nó (4 bit cao dùng cho Power manager và Sleep Mode). Bốn bit thấp là các bit Interrupt Sense Control (ISC) trong đó 2 bit ISC11:ISC10 dùng cho INT1 và 2 bit ISC01:ISC00 dùng cho INT0. Hãy nhìn vào bảng tóm tắt bên dưới để biết chức năng của các bit trên, đây là bảng “chân trị” của 2 bit ISC11, ISC10. Bảng chân trị cho các bit ISC01, ISC00 hoàn toàn tương tự. Bảng 2: INT1 Sense Control Thật dễ dàng để hiểu chức năng của các bit Sense Control, ví dụ bạn muốn set cho INT1 là ngắt cạnh xuống (Falling Edge) trong khi INT0 là ngắt cạnh lên (Rising Edge), hãy đặt dòng lệnh MCUCR =0x0B (0x0B = 00001011 nhị phân) trong chương trình của bạn. Trang 13/14
- Thanh ghi điều khiển ngắt chung – GICR (General Interrupt Control Register) (chú ý trên các chip AVR cũ, như các chip AT90Sxxxx, thanh ghi này có tên là thanh ghi mặt nạ ngắt thông thường GIMSK, bạn tham khảo thêm datasheet của các chip này nếu cần sử dụng đến). GICR cũng là 1 thanh ghi 8 bit nhưng chỉ có 2 bit cao (bit 6 và bit 7) là được sử dụng cho điều khiển ngắt, cấu trúc thanh ghi như bên dưới (trích datasheet). INT1 gọi là bit cho phép ngắt 1(Interrupt Enable), set bit này bằng 1 nghĩa bạn cho phép ngắt INT1 hoạt động, tương tự, bit INT0 điều khiển ngắt INT0. Thanh ghi cờ ngắt chung – GIFR (General Interrupt Flag Register) có 2 bit INTF1 và INTF0 là các bit trạng thái (hay bit cờ Flag) của 2 ngắt INT1 và INT0. Nếu có 1 sự kiện ngắt phù hợp xảy ra trên chân INT1, bit INTF1 được tự động set bằng 1 (tương tự cho trường hợp của INTF0), chúng ta có thể sử dụng các bit này để nhận ra các ngắt, tuy nhiên điều này là không cần thiết nếu chúng ta cho phép ngắt tự động, vì vậy thanh ghi này thường không được quan tâm khi lập trình ngắt ngoài. Cấu trúc thanh ghi GIFR được trình bày trong hình ngay bên dưới. Code #include Void interrupt_avr(){ DDRD=0x00; //khai báo PORTD là Input để sử dụng 2 chân ngắt. PORTD=0xFF; //sử dụng điện trở nội kéo lên. MCUCR|=(1
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Ngân hàng câu hỏi ôn tập môn học công nghệ chế tạo máy
24 p | 2048 | 557
-
Câu hỏi ôn tập môn học Cơ sở truyền động điện
3 p | 907 | 296
-
Câu hỏi trắc nghiệm môn điện tử công suất
122 p | 1044 | 206
-
Câu hỏi ôn tập môn học Máy điều khiển số và công nghệ CNC
1 p | 422 | 139
-
Ngân Hàng đề thi Điện tử - Môn Điện tử tương tự - Học viện công nghệ bưu chính viễn thông
68 p | 487 | 124
-
Câu hỏi đồ án môn học Chi tiết máy
6 p | 456 | 104
-
Câu hỏi ôn tập Hệ thống điện - ĐHSPKT TP.HCM
4 p | 612 | 95
-
Câu hỏi ôn tập môn Đại cương về Kỹ thuật (MEC 201)
3 p | 751 | 92
-
Đề cương ôn tập Môn Cấp thoát nước
18 p | 273 | 57
-
Câu hỏi ôn tập công nghệ lạnh thực phẩm
3 p | 631 | 49
-
Câu hỏi Ôn tập và Thi Môn học: Công trình Biển cố định 1
5 p | 320 | 47
-
Câu hỏi ôn tập môn Kinh tế xây dựng
48 p | 170 | 18
-
50 câu hỏi ôn tập môn Điện tử công suất (có đáp án)
32 p | 87 | 15
-
Câu hỏi ôn tập môn: Thi công công trình
2 p | 192 | 14
-
Câu hỏi ôn tập môn Thực tập kỹ thuật điện tử học kỳ I năm học 2020-2021
5 p | 31 | 3
-
Câu hỏi ôn tập môn Trường điện trường năm 2020-2021
3 p | 9 | 2
-
Câu hỏi ôn tập môn Công nghệ lạnh thực phẩm
3 p | 39 | 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