Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 175 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
175
Dung lượng
22,89 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA BÁO CÁO THÍ NGHIỆM VI XỬ LÝ Nhóm thí nghiệm: Nhóm 06 – Lớp L04 GVHD: Nguyễn Phan Hải Phú STT Họ tên MSSV Tô Trần Hữu Luân 2113985 Võ Phước Luân 2113990 Nguyễn Quang Minh 2152768 TP Hồ Chí Minh, ngày 03 tháng 04 năm 2023 MỤC TIÊU: Thực giao tiếp I/O Port, lệnh tính tốn THAM KHẢO: Tài liệu hướng dẫn thí nghiệm, chương 1, BÀI a) Kết nối port AVR (VD PORT A) vào dip switch Kết nối port khác vào bar LED (Ví dụ PORT B) b) Viết chương trình đọc liên tục trạng thái DIP Switch gửi LED Nếu Swich trạng thái OFF, LED tương ứng tắt .CSEG ORG LP: 0x00 CLR R16 OUT DDRA,R16 LDI R16,0xFF OUT PORTA,R16 LDI R16,0xFF OUT DDRB,R16 CLR R16 OUT PORTB,R16 IN R16,PINA COM R16 OUT PORTB,R16 RJMP LP Trả lời câu hỏi a Lấy giá trị từ nibble PORTA Để lấy 4byte thấp: IN R18, PINA MOV R19, R18 ANDI R18, $0F Để lấy 4byte cao: ANDI R19, $F0 SWAP R19 b Enable điện trở pullup nào? PORTA port nhập nên để xét điện trở kéo lên cho ta cần out giá trị $FF ghi PORTA c Khi Switch trạng thái ON/OFF, giá trị chân Port bao nhiêu? Switch ON: chân PORTA có giá trị 0, chân PORTB có giá trị Switch OFF: chân PORTA có giá trị 1, chân PORTB có giá trị d Khi chân port trạng thái 1, BAR LED sáng hay tắt? Port trạng thái BAR LED sáng BÀI a) Viết chương trình đọc giá trị Port nối với Dip Switch, cộng thêm gửi Port nối với Bar LED .CSEG ORG 0x00 CLR R16 OUT DDRA,R16 LDI R16,0xFF OUT PORTA,R16 LDI R16,0xFF OUT DDRB,R16 CLR R16 OUT PORTB,R16 LP: IN R16,PINA LDI R17,5 ADD R16,R17 COM R16 OUT PORTB,R16 RJMP LP b) Thay đổi trạng thái Dip Switch quan sát trạng thái Bar LED BÀI a) Kết nối thực chương trình tính tích nibble cao thấp PORTAvà gửi PORT B Coi nibble số không dấu VD: PORTA = 0b0111_1111, PORTB = 3*15 .CSEG .ORG LP: 0x00 CLR R16 OUT DDRA,R16 LDI R16,0xFF OUT PORTA,R16 LDI R16,0xFF OUT DDRB,R16 CLR R16 OUT PORTB,R16 IN R16,PINA MOV R17,R16 ANDI R16,0b00001111 ANDI R17,0b11110000 SWAP R17 MUL R16,R17 COM R0 OUT PORTB,R0 RJMP LP b) Thay đổi trạng thái Dip Switch quan sát trạng thái Bar LED Trả lời câu hỏi Làm lấy giá trị từ nibble PORT A Để lấy 4byte thấp: IN R18, PINA MOV R19, R18 ANDI R18, $0F Để lấy 4byte cao: ANDI R19, $F0 SWAP R19 BÀI a) Kết nối thực chương trình tính tích nibble cao thấp PORTAvà gửi PORT B Coi nibble số có dấu .CSEG ORG VD: PORTA = 0b0111_1111, PORTB = 3* (-1) 0x00 CLR R16 OUT DDRA,R16 LDI R16,0xFF OUT PORTA,R16 LDI R16,0xFF OUT DDRB,R16 CLR R16 OUT PORTB,R16 LP: IN R16,PINA MOV R17,R16 ANDI R16,0b00001111 LDI R18,0x08 AND R18,R16 BRNE SOAM1 RJMP TT1 SOAM1: ORI R16,0b11110000 TT1: ANDI R17,0b11110000 SWAP R17 LDI R18,0x08 AND R18,R16 BRNE SOAM2 RJMP TT2 SOAM2: ORI R17,0b11110000 TT2: MULS R16,R17 COM R0 OUT PORTB,R0 RJMP LP b) Thay đổi trạng thái Dip Switch quan sát trạng thái Bar LED BÀI a) Kết nối PA0 vào Switch đơn PA1 vào LED đơn khối LED (lưu ý Port) b) Viết chương trình bật LED SW nhấn, tắt LED SW nhả .cseg org 0x00 start: MAIN: PRESSED: RELEASE: CBI SBI SBI CBI SBIS RJMP CBI RJMP SBI RJMP DDRA,0 PORTA,0 DDRA,1 PORTA,1 PINA,0 RELEASE PORTA,1 MAIN PORTA,1 MAIN