Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 43 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
43
Dung lượng
6,54 MB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA BÁO CÁO THÍ NGHIỆM VI XỬ LÝ B ÀI LỚP L02 -NHÓM - HK 231 NGÀY NỘP: 6/11/2023 Giảng viên hướng dẫn: Nguyễn Tuấn Hùng Sinh viên thực hiện Mã số sinh viên Nguyễn Đăng Khoa 2111529 Nguyễn Minh Nhật 2111923 Hồng Châu Ngọc Tuấn 2115167 Thành phố Hồ Chí Minh – 2023 LAB 1-1 GIAO TIẾP IO VÀ CÁC LỆNH TÍNH TỐN 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. Giải thích:Khi SWITCH 0,4,5 trạng thái OFF LED tương ứng (0,4,5) TẮT Khi SWITCH 1,2,3,6,7 trạng thái OFF LED tương ứng (1,2,3,6,7) SÁNG Trả lời câu hỏi a Lấy giá trị từ nibble PORTA nào? Cài đặt ramend PUSH ghi chứa nibble Andi ghi với 0x0F => nibble POP ghi SWAP => ANDI 0x0F => nibble b Enable điện trở pullup nào? LDI R16,0x00 OUT DDRx,R16 LDI R16,0XFF OUT PORTx,R16 c Khi Switch trạng thái ON/OFF, giá trị chân Port bao nhiêu? Khi SWITCH: ON Port = Khi SWITCH: OFF Port = Giá trị chân port lấy bù lại để led sáng phù hợp 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 PORTA=1 (SWITCH tắt)=>PORTB=0 => LED Tắt e Mã nguồn với thích EQU OUTPORT=PORTB ORG 0 RJMP MAIN ORG 0X40 MAIN: LDI R16,0X00 ;khai bao porta la input OUT DDRA,R16 LDI R16,0XFF ; dien tro keo len OUT PORTA,R16 LDI R16,0XFF ; khai bao portb la output OUT DDRB,R16 LDI R16,0X00 ;PORTC=00H: tat led OUT PORTB,R16 LOOP: IN R16,PINA COM R16 ; Swich off thi PINA=1 =>led tat thi PORTB=0 OUT PORTB,R16 RJMP LOOP 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 Bar LED b) Thay đổi trạng thái Dip Switch quan sát trạng thái Bar LED Giải thích: Khi SWITCH trạng thái ON ( Giá trị PORTA 0) PORTB = 0+5 = 0b0000_0101 Trả lời câu hỏi a Mã nguồn với thích EQU OUTPORT=PORTB ORG 0 RJMP MAIN ORG $40 MAIN: LDI R16,0X00 ;khai bao porta la input OUT DDRA,R16 LDI R16,0XFF ; dien tro keo len OUT PORTA,R16 LDI R16,0XFF ; khai bao portb la output OUT DDRB,R16 LDI R16,0X00 ;PORTC=00H: tat led OUT PORTB,R16 LOOP: IN R16,PINA LDI R17,5 ;PORTA+5 ADD R16,R17 OUT PORTB,R16 RJMP LOOP 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 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 a Mã nguồn với thích ORG 0 LDI R16,0 OUT DDRA,R16 ; make port A an input LDI R16,$FF OUT DDRB,R16 ; make port B an output OUT PORTA,R16 ; enable pull - up resistor LOOP: RCALL DIP_SW MOV R18,R17 ANDI R18,$0F ; doc du lieu tu dip switch ; lay nibble thap MOV R19,R17 ANDI R19,$F0 SWAP R19 ; lay nibble cao MUL R18, R19 ; lenh nhan so khong dau OUT PORTB, R0 ; gui bar LED RJMP LOOP DIP_SW: ; chong rung LDI R16,1 IN R17,PINA DEC R16 BRNE DIP_SW RET 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 VD: PORTA = 0b0111_1111, PORTB = 3* (-1) b) Thay đổi trạng thái Dip Switch quan sát trạng thái Bar LED Giải thích: Khi SWITCH chế độ ON (các giá trị PORTB 0b1011_0010), PORTA=(-3)*2=0=0b1111_0110 Trả lời câu hỏi a Mã nguồn với thích ORG 0 RJMP MAIN ORG $40 MAIN: LDI R16,0X00 ;khai bao porta la input OUT DDRA,R16 LDI R16,0XFF ; dien tro keo len OUT PORTA,R16 LDI R16,0XFF ; khai bao portb la output OUT DDRB,R16 LDI R16,0X00 ;PORTC=00H: tat led OUT PORTB,R16 LOOP: LDI R16, HIGH(RAMEND) ;cai dat vung stack OUT SPH,R16 LDI R16, LOW(RAMEND) OUT SPL,R16 IN R16,PINA PUSH R16 ANDI R16,0X0F ; lay nibble thap MOV R20,R16 POP R16 SWAP R16 ; lay nibble cao ANDI R16,0X0F MOV R21,R16 MUL R20,R21 ; nhan khong dau r20 x r21 luu vao r1:r0 OUT PORTB,R0 ; barled bit nen chi xuat r0 RJMP LOOP 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ả. Trả lời câu hỏi a Khi Switch trạng thái nhấn/nhả, giá trị chân Port bằng bao nhiêu? Nhấn: PORTA0 = Nhả: PORTA0 = b Để LED sáng, chân port xuất mức logic gì? LED sáng chân PORTA1 xuất mức 1 c Mã nguồn với thích ORG 0 RJMP MAIN ORG 0X40 MAIN: CBI DDRA,0 ; Chan portA la chan nhap SBI PORTA,0 ;dien tro keo len SBI DDRA,1 ; chan portA la chan xuat CBI PORTA,1 ; ban dau LED tat LOOP: SBIC PINA,0 ;neu PA0=0 (switch nhan) thi led sang RJMP LEDTAT LEDSANG: SBI PORTA,1 RJMP LOOP LEDTAT: CBI PORTA,1 RJMP LOOP LAB 1-2 DELAY DÙNG LỆNH BÀI a) Cho chương trình sau: include "m324PAdef.inc" org 00 ldi r16,0x01 out DDRA, r16 start: sbi PORTA,PINA0 cbi PORTA, PINA0 rjmp start Kết nối PA0 vào kênh đo khối TEST STATION đo dạng xung oscilloscope Trả lời câu hỏi a) Chụp ảnh dạng xung PA0 b) Tần số, thời gian tín hiệu 1, thời gian tín hiệu bao nhiêu? Thời gian tín hiệu 1/0 250ns/500ns chu kỳ c) Giải thích kết đo được. Sbi PORTA,PINA0 (2MC; trước thực lệnh tín hiệu bằng 0 sau thực lệnh tín hiệu 1) Cbi PORTA, PINA0 (2MC; trước thực lệnh tín hiệu sau thực lệnh tín hiệu 0) Rjmp start (2MC; trước sau thực lệnh tín hiệu 0) Vậy tổng chu kì MC = 6, T = * (1/(8*10^6)) = 0.75us = 750ns BÀI a) Viết chương trình Delay1ms dùng để viết chương trình tạo xung vng tần số 1Khz PA0. b) Dùng chương trình viết chương trình Delay10ms, Delay100ms, Delay1s. c) Dùng chương trình Delay1s viết chương trình chớp/tắt LED gắn vào PA0. Trả lời câu hỏi a) Cách tính số chu kỳ máy để thực chương trình Delay1ms Trình bày hình ảnh mơ + Tần số Atmega324 8MHz tương ứng với 1MC = 0.125uS + Delay 0.5ms tương ứng với 4000MC + Áp dụng công thức TDL = x m x n = 4000 + Ta chọn m = 100, n= 10 b) Hình ảnh xung 1Khz PA0. ;Ghi byte mã l ệnh 32H CBI LCD,RS ;RS=0 ghi l ệnh LDI R17,$32 RCALL OUT_LCD4_2; ctc ghi byte, m ỗi lần bit RET ;INIT_LCD4 kh ởi động LCD ghi byte mã l ệnh ;Function set: 0x28: bit, dòng font 5x8 ;Clear display: 0x01: xóa hình ;Display on/off control: 0x0C: hình on, tr ỏ off ;Entry mode set: 0x06: d ịch phải tr ỏ, địa chỉ DDRAM tăng ghi data ; INIT_LCD4: CBI LCD,RS ;RS=0 ghi l ệnh LDI R17,0x28 ;chế độ giao tiếp bit, dòng font 5x8 RCALL OUT_LCD4_2 ; CBI LCD,RS ;RS=0 ghi l ệnh LDI R17,0x01 ;xóa hình RCALL OUT_LCD4_2 LDI R16,20 ;chờ 2ms sau l ệnh Clear display RCALL DELAY_US ; CBI LCD,RS ;RS=0 ghi l ệnh LDI R17,0x0C ;màn hình on, tr ỏ off RCALL OUT_LCD4_2 ; CBI LCD,RS ;RS=0 ghi l ệnh LDI R17,0x06 ;dịch phải trỏ, địa chỉ DDRAM tăng ghi data RCALL OUT_LCD4_2 ; RET ; ;OUT_LCD4_2 ghi byte mã l ệnh/data LCD ;chia làm l ần ghi 4bit: bit cao trướ c, bit th ấp sau ;Input: R17 ch a mã lệnh/data,R16 ứ ;bit RS=0/1:l ệnh/data,bit RW=0:ghi ;Sử dụng ctc OUT_LCD4 ; OUT_LCD4_2: IN R16,LCD ;đọc PORT LCD ANDI R16,(1