



















Preview text:
lOMoAR cPSD| 37879319
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA -- --
BÁO CÁO LAB 1 VI XỬ LÝ
LỚP: L27 – NHÓM: 5
GVHD: NGUYỄN PHAN HẢI PHÚ
DANH SÁCH THÀNH VIÊN: HỌ VÀ TÊN MSSV
NGUYỄN TRƯỜNG GIANG 2113258 NGUYỄN TUẤN ANH 2210109 PHAN ANH MINH 1914174 NGUYỄN VĂN HÒA 2013253
Thành phố Hồ Chí Minh, ngày 06 tháng 03 năm 2024
Lab 1-1 giao tiếp I/O và các lệnh tính toán lOMoAR cPSD| 37879319 BÀI 1
1. Trả lời các câu hỏi
a. Lấy giá trị từ 2 nibble của PORTA như thế nào
Để lấy giá trị từ 2 nibble của PORTA, ta có thể sử dụng toán tử AND
(&) với một số hexa thích hợp để lấy giá trị của từng nibble.
LDI R16, 0xF0 ; chọn R16 = 0xF0
IN R17, PORTA ; đọc Port A ra R17
AND R16, R17 ; giá trị nibble byte cao
LDI R16, 0x0F ; chọn R16 = 0x0F
IN R17, PORTA ; đọc Port A ra R17
AND R16, R17 ; giá trị nibble byte thấp
b. Enable điện trở pullup như thế nào?
Để enable điện trở pullup trên một chân của PORTx, ta cần set bit tương
ứng trong thanh ghi PORTx về 1 LDI R16, 0xFF
OUT PORTA, R16 ; chọn Port A có điện trở kéo lên
c. Khi Switch ở trạng thái ON/OFF, giá trị chân Port bằng bao nhiêu? Khi
switch ở trạng thái ON, giá trị chân Port sẽ bằng 0. Khi switch ở
trạng thái OFF, giá trị chân Port sẽ bằng 1 (do đã enable pullup).
d. Khi chân port ở trạng thái 1, BAR LED sáng hay tắt?
Khi chân port ở trạng thái 1, BAR LED sáng. Khi chân port ở trạng thái 0, BAR LED tắt.
e. Mã nguồn với chú thích lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm:
;chọn hướng nhập cho PORT A .ORG 0 LDI R16, 0x00 OUT DDRA, R16 LDI R16, 0xFF
OUT PORTA, R16 ; PORT A có điện trở kéo lên
; chọn hướng xuất cho PORTB LDI R16, 0xFF OUT DDRB, R16 LOOP: ; Đọc nhập từ Port A IN R17, PINA ; Gửi giá trị ra Port B MOV R16, R17 OUT PORTB, R16 JMP LOOP lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm: BÀI 2
1. Trả lời các câu hỏi
a. Mã nguồn với chú thích
; Set up PORTA for input and enable pullups .org 0 ldi r16, 0x00 out DDRA, r16 ldi r16, 0xFF out PORTA, r16 ; Set up PORTB for output ldi r16, 0xFF lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm: out DDRB, r16 loop: ; Read input from PORTA in r17, PINA ; Add 5 to the input value ldi r18, 5 add r17,r18 ; Send output to PORTB mov r16, r17 out PORTB, r16 jmp loop lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm: BÀI 3
1. Trả lời các câu hỏi
a. Làm thế nào lấy giá trị từ 2 nibble của PORT A
Để lấy giá trị từ 2 nibble của PORT A, ta có thể sử dụng phép AND (&) với hằng
số 0x0F (0b0000_1111) để lấy nibble thấp và dịch phải 4 bit rồi lấy AND với 0x0F để lấy nibble cao.
LDI R16, 0x0F ; Khởi tạo giá trị hằng số 0x0F cho r16
LDI R17, 0 ; Khởi tạo giá trị ban đầu cho kết quả
IN R18, PORTA ; Đọc giá trị của PORTA
AND R17, R16 ; Lấy nibble thấp của PORTA và lưu vào r17
SWAP r18 ; Hoán đổi 4 bit cao và thấp của r18
AND R18, R16 ; Lấy nibble cao của PORTA và lưu vào r18
MUL R17, R18 ; Nhân 2 số không dấu 8 bit và lưu kết quả vào r1:r0
MOV R16, R0 ; Lấy byte thấp của kết quả và lưu vào r16 lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm:
OUT PORTB, R16 ; Xuất giá trị kết quả ra PORTB
b. Mã nguồn với chú thích .ORG 0 LDI R16,$00 OUT DDRA,R16 COM R16 OUT DDRB,R16 OUT PORTA,R16 LDI R18,$00 MAIN: RCALL DOC_SWICH MOV R19,R17 ANDI R19,0xF0 SWAP R19 ANDI R17,0x0F MUL R19,R17 OUT PORTB,R0 RJMP MAIN DOC_SWICH: LDI R16,100 DOC_PA: IN R17,PINA lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm: CPI R17,0x00 BREQ DK DEC R16 BRNE DOC_PA RET DK: OUT PORTB,R18 RJMP DOC_SWICH BÀI 4
1. Trả lời các câu hỏi
a. Mã nguồn với chú thích lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm: .ORG 0 lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm: LDI R16,$00 OUT DDRA, R16 LDI R16,$FF
OUT DDRB, R16 //CHỌN PORTA -> INPUT //CHỌN PORTB -> OUTPUT
OUT PORTA, R16 // PORT A CÓ ĐIỆN TRỞ KÉO LÊN
LDI R18, 1 // NẠP GIÁ TRỊ 1 CHO THANH GHI R18 MAIN: RCALL DIP_SW MOV R19, R17 ANDI R19, $F0 SWAP R19 ;HIGH NIBBLE ANDI R17, $0F ;LOW NIBBLE SBRC R19, 3 ORI R19, $F0 ;UNSIGNED -> SIGNED SBRC R17, 3 ORI R17, $F0 ;UNSIGNED -> SIGNED MULS R17, R19 OUT PORTB, R0 lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm: RJMP MAIN ;SET OUT PUT WITH DIP_SW: LDI R16, 50 DEBOUCING: IN R17, PINA CPI R17, 0XFF BREQ CLEAR BUTTON RELEASE DEC R16 BRNE DEBOUCING RET CLEAR: OUT PORTB, R18 RJMP DIP_SW lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm: BÀI 5
1. Trả lời các câu hỏi
a. Khi Switch ở trạng thái nhấn/nhả, giá trị chân Port bằng bao nhiêu?
Khi SW nhấn thì giá chị chân PORT là 1 và ngược lại khi SW nhả thì giá trị chân PORT là 0.
b. Để LED sáng, chân port xuất ra mức logic gì?
Để LED sáng chân PORT xuất ra mức logic 1
c. Mã nguồn với chú thích .ORG 0 //CONFIG lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm: CBI DDRA,0 SBI PORTA,0 ;PA0 INPUT SBI DDRA,1 ;PA1 OUTPUT MAIN: RCALL BUTTON RJMP MAIN BUTTON: LDI R16,50 ;DEBOUNCING TIME DEBOUNCING_PUSH: SBIC PINA,0 RJMP BUTTON DEC R16 BRNE DEBOUNCING_PUSH SBI PORTA,1 RELEASE: LDI R16,50 DEBOUNCING_PULL: SBIS PINA,0 RJMP RELEASE DEC R16 BRNE DEBOUNCING_PULL CBI PORTA,1 lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm: RET LAB1-2 lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm: BÀI 1
2. Trả lời các câu hỏi
f. Chụp ảnh dạng xung trên PA0
g. Tần số, thời gian tín hiệu bằng 1, thời gian tín hiệu bằng 0 là bao nhiêu?
Thời gian tín hiệu bằng 1: 2MC=2µs
Thời gian tín hiệu bằng 0: 4MC=4µs h.
Giải thích kết quả đo được.
Lệnh SBI tiêu tốn 2MC nên thời gian tín hiệu bằng 1 = 2MC
Lệnh CBI và RLMP tiêu tốn 4MC nên thời gian tín hiệu bằng 0 = 4MC BÀI 2
2. Trả lời các câu hỏi lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm:
b. Cách tính số chu kỳ máy để thực hiện chương trình con Delay1ms. Trình bày hình ảnh mô phỏng
Vì ATmega324PA sử dụng dao động RC với tần số 8MHz 1MC 0.125µs. Vậy
để tạo chương trình con Delay1ms ta phải tốn 1ms/0.125µs =8000 (MC) Ta có:
Lệnh LDI, DEC, NOP tốn 1MC, lệnh BRNE tốn 1/2MC và lệnh RET tốn
4MC Tổng thời gian của chương trình con: 250×8×4+3×8+4=8028 (MC) (Vì sai
số quá nhỏ so với tổng thời gian nên ta có thể bỏ qua c. Hình ảnh xung 1Khz trên PA0. d. Sai số là bao nhiêu? Sai số: lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm:
3. Mã nguồn câu 2.c với chú thích .ORG 0x00 LDI R16, $01
OUT DDRA, R16; set PORTA as output START: CBI PORTA,0; turn on LED CALL DELAY1MS; call delay SBI PORTA,0; turn off LED CALL DELAY1MS; call delay RJMP START DELAY1MS: LDI R16, 250 LP: NOP DEC R16 BRNE LP RET DELAY10MS: LDI R17,10 lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm: LP1: RCALL DELAY1MS DEC R17 BRNE LP1 RET DELAY100MS: LDI R17,10 LP2: RCALL DELAY10MS DEC R17 BRNE LP1 RET DELAY1S: LDI R17,10 LP3: RCALL DELAY100MS DEC R17 BRNE LP3 RET lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm: Delay 10ms Delay 100ms lOMoAR cPSD| 37879319 BÁO CÁO Nhóm:
Nhóm môn học: Môn thí nghiệm: Delay 1s BÀI 3
2. Trả lời các câu hỏi
c. Mô tả kết nối trên kit thí nghiệm
Chân PA0 gắn vào DS, PA1 gắn vào SH_CP, PA2 gắn vào ST_CP; từ 74HC595,
kết nối với Led Bar; CLR gắn vào nguồn 5V; Q0->Q7 gắn vào BARLED
d. Theo như datasheet của 74HC595, tần số clock cao nhất mà nó có thể hoạt
động được là bao nhiêu
Tần số clock cao nhất mà nó có thể hoạt động là 2MHz
e. Nếu muốn mở rộng hiển thị ra 16 LED thì ta phải làm như thế nào?
Nếu muốn mở rộng ra 16 LED, ta cần nối chân Q7 của 74HC595 thứ hai vào chân
DS của 74HC595 thứ nhất; các chân DS, ST_CP, SH_CP nối với nhau tương ứng
f. Mã nguồn với chú thích