Tải bản đầy đủ (.docx) (32 trang)

báo cáo thí nghiệm vi xử lab 4 lab 4 1 lập trình sử dụng 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 (2.1 MB, 32 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC BÁCH KHOA</b>

<b>KHOA ĐIỆN-ĐIỆN TỬ🙞···☼···🙞</b>

<b>Lớp :L05_nhóm:09</b>

<b>Sinh viên thực hiệnMã số sinh viên</b>

Huỳnh Nguyễn Minh HuyHuỳnh Văn Quỳnh

Võ Huỳnh Quang Lập

2211179 2212885 1913926

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>BÁO CÁO LAB 4</b>

b) Kết nối PC0 vào oscilloscope để đo dạng sóng

c) (Lưu ý: tần số xung clock cho CPU trên kit thí nghiệm là 8Mhz)

HD: Mỗi lần xảy ra ngắt cộng số đếm lên 1, nếu số đếm bằng 5 thì đảo PC0 và resetsố đếm về 0.

c) Biên dịch chương trình và quan sát oscilloscope để kiểm tra chương trình.

<b><small>BÀI 3</small></b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<small>a)</small> Kết nối các tín hiệu cần thiết để điều khiển khối LED 7 đoạn.

<small>b)</small> Sử dụng ngắt COMPARE_MATCH của timer 1 như ở Bài 2 để xuất số 1-2-3-4 ra 4LED 7 đoạn với tần số quét 50 Hz. Để đo tần số quét, đảo chân PC0 mỗi lần chuyểnsang LED kết tiếp và đo xung này trên oscilloscope.

(Tham khảo Chương 4, tài liệu hướng dẫn thí nghiệm)

Hướng dẫn:

Sử dụng ngắt UART để nhận ký tự. Trong ngắt UART tăng biến đếm (16 bit), chuyển

<b>số này thành số BCD và ghi vào 4 byte LED7segValue. Ví dụ số đếm đang là 500, ta</b>

ghi 0-5-0-0 vào 4 byte này.

Phần quét LED giữ nguyên như ở bài 3.

Tham khảo chương 4, phần 4.4, tài liệu hướng dẫn thí nghiệm.

<b><small>BÀI 5</small></b>

<small>a)</small> Kết nối thêm các tín hiệu I2C vào module RTC. Đưa tín hiệu MFP của RTC vào 1chân ngắt ngoài. Thêm vào bài 4 các chức năng sau:

<small>b)</small> Khởi động RTC với thời gian hiện hành, xuất tín hiệu MFP tần số 1 Hz.

<small>c)</small> Sử dụng ngắt ngoài của AVR, cứ mỗi khi có ngắt thì đọc thời gian giờ:phút:giây từRTC và xuất ra dòng 2 của LCD

Lưu ý: Các chức năng ở bài 4 vẫn được giữ nguyên.

<b><small>BÀI 6</small></b>

<small>a)</small> Kết nối các tín hiệu cần thiết để điều khiển LED ma trận. (gỡ bỏ các dây nối đếnLCD, Led 7 đoạn, RTC, UART).

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<small>b)</small> Sử dụng chương trình mẫu, chỉnh sửa nếu cần thiết để hiển thị chữ ‘A’ lên LED matrận. Quét LED ma trận sử dụng ngắt timer với tần số quét 25 Hz.

<small>c)</small> Chỉnh sửa chương trình để đạt tần số quét là 125Hz.

<small>d)</small> Viết chương trình để hiển thị Logo Trường ĐH Bách Khoa lên LED ma trận.

<b><small>BÀI 1</small></b>

1. Trả lời các câu hỏi

a) Với chế độ Normal mode, mỗi khi vào ngắt Overflow ta có phải khởi động lại thanh ghi đếm hay không?

Trong chế độ Normal mode, khi xảy ra ngắt Overflow, thanh ghi đếm (TCNTx) sẽ tự động được khởi động lại từ giá trị 0. Vì vậy, ta không cần thiếtphải khởi động lại thanh ghi đếm trong ngắt Overflow.

b) Giải thích các giá trị ghi vào các thanh ghi cấu hình timer và prescaler.<small>2. </small>Mã nguồn chương trình với chú thích

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b><small>BÀI 2</small></b>

1. Trả lời các câu hỏi

a. Với chế độ CTC mode, mỗi khi vào ngắt COMPARE_MATCH ta có phảikhởi động lại thanh ghi đếm hay không?

Trong chế độ CTC mode của AVR, khi xảy ra ngắt COMPARE_MATCH thì giá trịcủa thanh ghi đếm sẽ khơng bị khởi động lại. Thay vào đó, thanh ghi đếm sẽ giữnguyên giá trị và bắt đầu đếm lại từ đó.

b. Điểm tiện lợi của chế độ này so với cách cấu hình ở bài 1 là như thế nào?- Chế độ CTC mode cho phép đếm thời gian bằng cách so sánh giá trị củathanh ghi đếm với giá trị của thanh ghi so sánh (OCRnx). Chế độ này đơngiản, dễ hiểu và tiết kiệm bộ nhớ hơn chế độ normal mode, vì ta chỉ cần cấuhình một thanh ghi so sánh duy nhất thay vì phải cấu hình hai thanh ghi nhưtrong chế độ normal mode.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

-Ở chế độ CTC mode, ta có thể sử dụng ngắt COMPARE MATCH hoặc ngắtOVERFLOW để kích hoạt các tác vụ khác nhau. Trong khi đó, trong chế độnormal mode, ta chỉ có thể sử dụng ngắt OVERFLOW để kích hoạt ngắt. Từđó, ở chế độ CTC mode sẽ linh hoạt hơn trong việc chọn cách sử dụng ngắt.- Trong chế độ CTC mode, ta có thể cấu hình thanh ghi đếm để đếm lên hoặcđếm xuống. Trong khi đó, trong chế độ normal mode, ta chỉ có thể đếm lên.c. Giải thích các giá trị ghi vào các thanh ghi cấu hình timer và prescaler.2. Mã nguồn và chú thích

.EQU

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b><small>BÀI 3</small></b>

1. Trả lời các câu hỏi

a. Để đạt được tần số quét 50Hz thì 1 LED sẽ sáng trong bao lâu?

Để đạt được tần số quét 50Hz, thời gian mỗi chu kỳ là 1/50 = 0.02 giây= 20ms. Vậy 1 LED sẽ sáng trong 20ms/4 = 5ms.

b. Khi đó, chân PC0 (đảo mỗi khi chuyển LED) sẽ có tần số là baonhiêu?

Tần số của chân PC0 sẽ có tần số là 100Hz.

c. Số lần xảy ra ngắt cần thiết để chuyển LED là bao nhiêu?Để chuyển LED cần 16 lần ngắt.

2. Mã nguồn và chú thích

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

.EQU LED7=PORTA

.EQU LED7_DR=DDRA.EQU CONT=PORTB.EQU CONT_DR=DDRB.EQU DATA=0

.EQU POS=1

.EQU OSC_PORT=PORTC.EQU OSC_DR=DDRC.EQU OSC=0

.DEF COUNT=R20.ORG 0

RJMP MAIN.ORG 0x001A

RJMP TIMER1_COMPA.ORG 0x0020

RJMP TIMER0_COMPA.ORG 0x40

MAIN: //STACK

LDI R16,HIGH(RAMEND); đưa stack lên vùng caoOUT SPH,R16

LDI R16,LOW(RAMEND)OUT SPL,R16

//7SEGSER R16

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

OUT LED7_DR,R16; port A = output;CONT

LDI R16,(1<<DATA)|(1<<POS)OUT CONT_DR,R16

LDI R16,(1<<OSC)OUT OSC_DR,R16//COUNT

CLR COUNT

LDI R16,38;DELAY 5MSOUT OCR0A,R16

OUT TCCR0A,R16

LDI R16,5;PRE-SCALE=1024OUT TCCR0B,R16

LDI R16,(1<<OCIE0A)STS TIMSK0,R16LDI R17,4

LDI R18,1CLR R20

LDI R16,(1<<OSC)HERE_TN3:

RJMP HERE_TN3TIMER0_COMPA:

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

RCALL OUT_LEDCLC

LSL R18DEC R17

BRPL CONTINUE_TIMER0LDI R17,4

LDI R18,1

CONTINUE_TIMER0:EOR R20,R16

OUT OSC_PORT,R20RETI

TIMER1_COMPA:INC COUNTCPI COUNT,5

BRNE CONTINUE_TIMER2EOR R17,R16

OUT OSC_PORT,R17CLR COUNT

CONTINUE_TIMER2: RETI

OUT_LED: //OFFET:R17 POS:R18; giao tiếp LEDPUSH R18

PUSH R17COM R18OUT LED7,R18

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

SBI CONT,POSCBI CONT,POS

LDI ZH,HIGH(TABLE<<1) ;LDI ZL,LOW(TABLE<<1)ADD ZL,R17

LPM R17,ZOUT LED7,R17SBI CONT,DATACBI CONT,DATAPOP R17

POP R18RET

.ORG 0X200TABLE: .DB

0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b><small>BÀI 4</small></b>

1. Trả lời các câu hỏi

a. Mô tả các kết nối trên kit.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

b. Mơ tả cách cấu hình UART Baud rate 9600, 8 bit data

c. Chuyển đổi số đếm thành số BCD để ghi vào bộ đệm hiển thị LEDnhư thế nào?

- Chia số đếm cho 10, lấy phần nguyên và phần dư. Phần dư này sẽtương ứng với chữ số cuối cùng của số đếm (hàng đơn vị).

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

- Tương tự, lấy phần nguyên của kết quả ở bước trước và chia cho 10,lấy phần nguyên và phần dư. Phần dư này sẽ tương ứng với chữ số thứhai của số đếm (hàng chục).

- Lặp lại việc lấy phần nguyên và phần dư cho đến khi phần nguyênVề 0. Những phần dư lấy được trong các lần chia sẻ từ phải sang tráitạo thành số BCD tương ứng với số đếm.

- Ghi kết quả các chữ số này vô bộ đệm hiển thị LED theo yêu cầu.2. Mã nguồn và chú thích

.EQU LCD=PORTB

.EQU LCD_DR=DDRB.EQU RS=0

.EQU RW=1.EQU E=2

.EQU LED=PORTA.EQU LED_DR=DDRA.EQU CONT=PORTD.EQU CONT_DR=DDRD.EQU DATA=6

.EQU POS=7

.DEF COUNT_H=R23.DEF COUNT_L=R24.ORG 0

RJMP MAIN//.ORG 0x0020

//RJMP TIMER0_COMPA.ORG 0x28

RJMP USART0_RX.ORG 0x40

LDI R16,HIGH(RAMEND); đưa stack lên vùng cao

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

OUT SPH,R16

LDI R16,LOW(RAMEND)OUT SPL,R16

RCALL OUT_LED//LCD

SER R16

OUT LCD_DR,R16CBI LCD,RSCBI LCD,RWCBI LCD,E

RCALL RESET_LCD

LDI R18,0x28 ; 2 dòng font 5x8, 4 bit LDI R19,0x01 ; clear display

LDI R20,0x0C ; display on, off control

LDI R21,0x06 ; con trỏ dịch phải, địa chỉ DDRAM tăng 1 khi ghi data,màn hình khơng dịch (06H)

RCALL INIT_LCDSTART:

RCALL DIV_1000MOV R17,R6LDI R18,1

RCALL OUT_LED

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

RCALL DELAYMOV R17,R7LDI R18,2

RCALL OUT_LEDRCALL DELAYMOV R17,R8LDI R18,4

RCALL OUT_LEDRCALL DELAYMOV R17,R9LDI R18,8

RCALL OUT_LEDRCALL DELAYRJMP START//HERE: RJMP HEREDIV_1000://R9:R8:R7:R6

//R17:R16=1000MOV R1,COUNT_HMOV R0,COUNT_LLDI R17,HIGH(1000)LDI R16,LOW(1000)CLR R9

THOUSAND: SUB R0,R16 ; lấy giá trị hàng ngànSBC R1,R17

BRCS END_THOUSANDINC R9

RJMP THOUSAND

END_THOUSAND: ADD R0,R16ADC R1,R17

//R17:R16=100

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

LDI R17,HIGH(100)LDI R16,LOW(100)CLR R8

HUNDRED: SUB R0,R16 ; lấy giá trị hàng trămSBC R1,R17

BRCS END_HUNDREDINC R8

RJMP HUNDRED

END_HUNDRED: ADD R0,R16ADC R1,R17

//R16=10LDI R16,10CLR R7

DOZEN: SUB R0,R16BRCS END_DOZENINC R7

RJMP DOZEN

END_DOZEN: ADD R0,R16MOV R6,R0

RETINIT_UART:

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

POINTER_SETUP: //DATA: R17PUSH R17

LDI R17,0x80CBI LCD,RS

RCALL OUT_LCD4LDI R16,1

RCALL DELAY_USPOP R17

SBI LCD,RS

RCALL OUT_LCD4LDI R16,1

RCALL DELAY_USRET

USART0_RX:LDS R17,UDR0

RCALL POINTER_SETUPINC COUNT_L

BRNE SKIP_HINC COUNT_H

SKIP_H: CPI COUNT_L,LOW(1001)BRNE END_INT

CPI COUNT_H,HIGH(1001)BRNE END_INT

CLR COUNT_HCLR COUNT_L

END_INT: //OUT PORTC,COUNT_LRETI

OUT_LED: //DATA:R17 POS:R18COM R18

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

OUT LED,R18SBI CONT,POSCBI CONT,POS

LDI ZH,HIGH(TABLE<<1)LDI ZL,LOW(TABLE<<1)ADD ZL,R17

LPM R17,ZOUT LED,R17SBI CONT,DATACBI CONT,DATARET

OUT_LCD4:LDI R16,1

RCALL DELAY_USIN R16,LCD

ANDI R16,(1<<RS)PUSH R16

PUSH R17ANDI R17,0xF0OR R17,R16

RCALL OUT_LCDLDI R16,1

RCALL DELAY_USPOP R17

POP R16SWAP R17ANDI R17,0xF0OR R17,R16

RCALL OUT_LCDRET

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

OUT LCD,R17SBI LCD,ECBI LCD,ERET

LDI R17,0x30 ; ghi lệnh $30 lần 1

RCALL OUT_LCD ;/-strong/-heart:>:o:-((:-hLDI R16,41 ; delay 4.1ms

RCALL DELAY_USCBI LCD,RS

LDI R17,0x30 ; ghi lệnh $33 lần 2RCALL OUT_LCD

RCALL DELAY_USCBI LCD,RS

LDI R17,0x30RCALL OUT_LCD

RCALL DELAY_USCBI LCD,RS

LDI R17,0x32 ; ghi lệnh $32 lần 3RCALL OUT_LCD4

//FUNCTION SET

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

CBI LCD,RSMOV R17,R18RCALL OUT_LCD4MOV R17,R19RCALL OUT_LCD4

RCALL DELAY_USMOV R17,R20RCALL OUT_LCD4MOV R17,R21RCALL OUT_LCD4RET

DELAY_US: ; Delay R16*100usMOV R15,R16

LDI R16,200

LP1: MOV R14,R16LP2: NOP

DEC R14BRNE LP2DEC R15BRNE LP1RET

DELAY: //R20, R21PUSH R20PUSH R21LDI R20,10

LZP1: LDI R21,250LZP2: NOP

DEC R21BRNE LZP2DEC R20

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

BREQ LZP1POP R21POP R20RET

.ORG 0x200TABLE: .DB

<b><small>BÀI 5</small></b>

1. Trả lời các câu hỏia. Mô tả kết nối trên kit

b. Để xảy ra ngắt 1s 1 lần thì ngắt ngồi cấu hình như thế nào?

Sử dụng chế độ Normal với độ chia Prescaler được cấu hình sao cho tần sốđếm lên là 1Hz. Cấu hình thanh ghi OCR để so sánh với giá trị đếm tươngứng và tạo ra ngắt. Sau đó, ta bật cờ ngắt cho ngắt ngoài trên thanh ghiEICRA và set bit EIMSK.

c. Hiện tượng gì sẽ xảy ra nếu ta cấu hình ngắt ngồi tích cực theo mức thấp?Nếu ta cấu hình ngắt ngồi tích cực theo mức thấp, điều kiện kích hoạtngắt là đầu vào ngắt có mức điện áp thấp (tức là logic 0). Khi ngắt đượckích hoạt, vi điều khiển sẽ ngắt q trình thực hiện chương trình chính vàthực hiện tác vụ được gắn với ngắt. Nếu không có tín hiệu ngắt nào đượcđưa vào ngõ vào ngắt, giá trị mặc định trên đầu vào sẽ là giá trị cao (tức làlogic 1). Trong trường hợp này, ngắt sẽ khơng được kích hoạt và chươngtrình sẽ tiếp tục thực hiện các lệnh khác trong chương trình chính.

<small>2.</small> Mã nguồn chương trình với chú thích

<b><small>BÀI 6</small></b>

1. Trả lời các câu hỏia. Mô tả kết nối trên kit

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

b. Để có tần số qt 25Hz thì một cột LED sáng trong bao lâu?

Để có tần số quét 25Hz, thời gian giữa hai lần quét liên tiếp là 1/25 =0,04s. Vì ma trận LED 8x8 có 8 cột LED, thời gian hiển thị cho mỗi cộtLED sẽ là 0,04 s / 8 = 0,005s = 5ms.

c. Sự khác nhau khi quét ở tần số 25Hz và 125Hz

Ma trận LED ở tần số 125Hz sẽ quét nhanh hơn làm cho đèn LED hiển thịrõ ràng, không bị chập chờn.

2. Mã nguồn chương trình với chú thích.EQU SHIFT_DDR=DDRA

.EQU SHIFT_PORT=PORTA

.EQU SDI=0 ; DS // SDI - A[0] -> SDI

.EQU SRCLK=1 ; SH-CP // CLK - A[1] -> SRCLK

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

.EQU RCLK=2 ; ST-CP // LATCH - A[2] -> RCLK.ORG 0

RJMP MAIN .ORG $1A

RJMP ISR_TIMER1_COMPA.ORG $40

MAIN : // TN -> COMMON ANODE --- MP -> COMMON CATHODE

// khai bao B output-off, kiem soat chon led sang theo Cot (column) - quet Cot

LDI R16,$00 ; theo Cot -> de off led -> muc 1 (TN)OUT DDRB,R16 ; ma cac bit qua bo dem ULN2803 ->dao bit ->muc0 lam tat led (TN)

LDI R16,$00 ; ///MP : $FF - TN : $00OUT PORTB,R16 ; B is output - off, tat led

// khai bao PA[2:0] output, kiem soat xuat Ma led theo Cot (colmun) -> dung IC 535

LDI R16,$07

OUT SHIFT_DDR,R16LDI R16,$00

OUT SHIFT_PORT,R16 ; PA[2:0] is output - off// cac bien can thiet

LDI R17,$01 ; xac dinh Cot, quet led thu 1 truoc ///MP : $FE - TN : $01

LDI R18,$00 ; 8 lan quet Cot// khoi tao Timer 1, mode CTC (4), clk/64

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

LDI R16,$00STS TCNT1H,R16

STS TCNT1L,R16 ; thanh ghi dem TCNT1 = 00LDI R16,$00

STS TCCR1A,R16 ; mode CTC (4), clk/64LDI R16,HIGH(124)

LDI R16,(1<<OCIE1A)

STS TIMSK1,R16 ; enable Ngat OCFA Timer 1

LOOP :

RJMP LOOP

//Cac chuong trinh ngat :/*ISR_TIMER1_COMPA :INPUT : NONE

NOP

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

//Cac chuong trinh con /*LOOKUP :

INPUT : R18OUTPUT : R19

DESCRIPTION : R18 dai dien cho Ma led o Cot thu n, R19 chua MA led*/

LOOKUP :

LDI ZH,HIGH(LETTER_A<<1)LDI ZL,LOW(LETTER_A<<1)ADD ZL,R18

LPM R19,Z+RET

/*SHIFT_MA_LED :INPUT : R19

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

ROL R19

BRCC BIT_0 ; co C=0 -> BIT_0 -> xuat ra IC595 bit 0SBI SHIFT_PORT,SDI

RJMP NEXTBIT_0:

CBI SHIFT_PORT,SDINEXT:

SBI SHIFT_PORT,SRCLKNOP

CBI SHIFT_PORT,SRCLK ; dua bit vao thanh ghi cua IC595DEC R16

BRNE AGAIN

SBI SHIFT_PORT,RCLKNOP

LETTER_A : .DB $00,$3F,$4C,$8C,$8C,$4C,$3F,$00///MP : $FF,$C0,$B3,$74,$74,$B3,$C0,$FF

///TN : $00,$3F,$4C,$8C,$8C,$4C,$3F,$00

BACH_KHOA: .DB $0E,$11,$6D,$92,$92,$6D,$11,$0E//MP : $F1,$EE,$92,$6D,$6D,$92,$EE,$F1

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

//TN : $0E,$11,$6D,$92,$92,$6D,$11,$0E/*GHI CHU :

MP : mo phongTN : thi nghiem*/

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

<b>LAB 4-2</b>

<b>GIAO TIẾP I/O VÀ CÁC LỆNH TÍNH TỐN</b>

 Hiểu và sử dụng được ngắt timer

 Hiểu cách điều khiển và đo tốc độ động cơ

<small>●</small> Kết nối động cơ vào kit thí nghiệm

<small>●</small> Kết nối tín hiệu từ 2 switch trên dipswitch vào 2 chân port của AVR<small>●</small> Kết nối tín hiệu từ 2 nút nhấn vào 2 chân port của AVR

<small>●</small> Kết nối tín hiệu từ chân OC0B ra 1 kênh đo của khối test point

<small>●</small> Kết nối tín hiệu từ 2 chân port điều khiển chiều quay thuận/ngược raled đơn để kiểm tra trạng thái.

<small>b.</small> Biên dịch, thực thi và kiểm tra hoạt động của chương trình bằng cách đo dạngsóng trên oscilloscope và quan sát trạng thái các LED khi thay đổi dip switchvà khi nhấn các nút nhấn tăng/giảm tốc độ.

<small>c.</small> Kết nối tín hiệu PWM vào MOTOR_ENABLE, tín hiệu điều khiển chiều quayvào MOTOR_CTRL1, MOTOR_CTRL2 trên J76 của khối DC_MOTOR. <small>d.</small> Kiểm tra hoạt động của hệ thống.

class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

<b>LAB 4-2</b>

<b>GIAO TIẾP I/O VÀ CÁC LỆNH TÍNH TỐN</b>


×