1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo thí nghiệm môn vi xử lý giao tiếp io và các lệnh tính toán

33 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giao tiếp I/O và các lệnh tính toán
Tác giả Hà Duy Khang
Trường học Đại học Quốc gia Thành phố Hồ Chí Minh, Trường Đại học Bách khoa TP.HCM, Khoa Điện – Điện tử
Chuyên ngành Vi xử lý
Thể loại Báo cáo thí nghiệm
Năm xuất bản 2024
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 33
Dung lượng 19,5 MB

Nội dung

Khi Switch ở trạng thái ON/OFF, giá trị chân Port bằng bao nhiêuc. Enable điện trở pullup bằng cách cho các chân của PORTx lên 1 cd. Theo datasheet của IC 74HC595, tần số clock cao nhất

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM

KHOA ĐIỆN – ĐIỆN TỬ

Trang 2

L AB 1-1

GIAO TIẾP I/O VÀ CÁC LỆNH TÍNH TOÁN

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

b Enable điện trở pullup như thế nào?

c Khi Switch ở trạng thái ON/OFF, giá trị chân Port bằng bao nhiêu?

d Khi chân port ở trạng thái 1, BAR LED sáng hay tắt?

e Mã nguồn với chú thích

a

- Chuyển giá trị của PORTA vào thanh ghi R17

- Cất R17, sau đó AND R17 với 0b00001111 để lấy nibble phải của PORTA, chuyển giá

trị này vào R18

- Lấy R17 ra, sau đó AND R17 với 0b11110000 để lấy nibble trái của PORTA

b Enable điện trở pullup bằng cách cho các chân của PORTx lên 1

c Khi Switch ở trạng thái ON/OFF, giá trị chân Port bằng 1/0

d Khi chân port ở trạng thái 1, BAR LED sáng

e Code:

ORG 0 MAIN: LDI R16,HIGH(RAMEND) ;đưa stack lên vùng địa chỉ% cao OUT SPH,R16

LDI R16,LOW(RAMEND) OUT SPL,R16

LDI R16,0x00 OUT DDRA,R16 ; PORTA là input LDI R16,0xFF

OUT PORTA,R16 ;điện trở% kéo lên ở% portA LDI R16,0xFF

OUT DDRB,R16 ; PORTB là output LDI R16,0x00

OUT PORTB,R16 ; tắ8t LED 7 đoạn LOOP: IN R17,PINA

COM R17

Trang 3

OUT PORTB,R17 RJMP LOOP

BÀI 2

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

a Mã nguồn với chú thích ORG 0

MAIN: LDI R16,HIGH(RAMEND) ;đưa stack lên vùng địa chỉ cao OUT SPH,R16

LDI R16,LOW(RAMEND) OUT SPL,R16

LDI R16,0x00 OUT DDRA,R16 ; PORTA là input LDI R16,0xFF

OUT PORTA,R16 ;điện trở kéo lên ở portA LDI R16,0xFF

OUT DDRB,R16 ; PORTC là output LDI R16,0x00

OUT PORTB,R16 ; tắt LED 7 đoạn LOOP: IN R17,PINA

COM R17 LDI R18,$05 ADD R17,R18 OUT PORTB,R17 RJMP LOOP

Trang 4

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

b Mã nguồn với chú thích

- Chuyển giá trị PORT A vào thanh ghi R17 -Lấy bù 1 R17 rồi chuyển giá trị thanh ghi R17 vào R18 và R19 -ANDI R18 với $F0 rồi SWAP R18

-ANDI R19 với $0F B.

.org 0 MAIN:

LDI R16,HIGH(RAMEND) OUT SPH,R16

LDI R16,LOW(RAMEND) OUT SPL,R16

LDI R16,$00 OUT DDRA,R16 ;PORTA input LDI R16,$FF

OUT PORTA,R16 ;Port A pull-up res

Trang 5

OUT DDRB,R16 ;PORTB output LOOP:

IN R17,PINA ;SW=0 nhập COM R17 ;Lấy bù R17 MOV R18,R17

MOV R19,R17 ANDI R18,$F0 ;R18= 4bit cao SWAP R18

ANDI R19,$0F ;R19= 4bit thấp MUL R18,R19 ;R0=R18*R19 OUT PORTB,R0 ;R10 xuất ra PORTB RJMP LOOP

Trang 6

add r20,r16

rjmp nipplehigh

nipplelowduong: pop r20 nipplehigh:

and r21,r18

cp r21,r18

brne nipplehighduong pop r21

add r21,r16

rjmp nhan

nipplehighduong: pop r21 nhan: muls r20,r21

out portb,r0

rjmp nhap

Trang 7

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?

b Để LED sáng, chân port xuất ra mức logic gì?

c Mã nguồn với chú thích

a Khi Switch ở trạng thái nhấn/nhả, giá trị chân PORT bằng 1/0

b Để LED sáng, chân PORT xuất ra mức logic 1

SBIC PINA,0

RJMP CHECK

SBI PORTA,1

RET

Trang 8

L AB 1-2

DELAY DÙNG LỆNH

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?

h Giải thích kết quả đo được.

f.

Trang 9

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: T1 = 2MC = 0.25µs

- Thời gian tín hiệu bằng 0: T0 = 4MC = 0.5µs

h Giải thích kết quả đo được

Thời gian tín hiệu bằng 0 trong một chu kì gấp đôi thời gian tín hiệu bằng 1 Vì tín hiệu bằng 0 xuất hiện sau khi thực hiện lệnh CBI PORTA,0 và kết thúc sau khi thực hiện lệnh SBI PORTA,0; giữa hai lệnh này có lệnh RJMP START làm cho thời gian tín hiệu ở mức 0 dài hơn

BÀI 2

2 Trả lời các câu hỏi

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

c Hình ảnh xung 1Khz trên PA0.

d Sai số là bao nhiêu?

3 Mã nguồn câu 2.c với chú thích

b

DELAY1MS:

LDI R16,200 ;1MC PUSH R15

PUSH R14

Trang 10

MOV R15,R16 ;1MC nap data cho R15

➔ Thời gian Delay = 1ms

c Hình ảnh xung 1Khz trên PA0.

d Sai số là bao nhiêu?

Thời gian delay chính xác:

Trang 12

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

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

e Nếu muốn mở rộng hiển thị ra 16 LED thì ta phải làm như thế nào?

f Mã nguồn với chú thích

c Mô tả kết nối trên kit thí nghiệm

Trang 13

Theo datasheet của IC 74HC595, tần số clock cao nhất mà nó có thể hoạt động được thường được chỉ định là 100MHz

e.Nếu muốn mở rộng hiển thị ra 16 LED thì ta :

Kết nối chân dữ liệu (SER) của IC1 với chân ra của Arduino hoặc bất kỳ nguồn

dữ liệu nào khác Kết nối chân dữ liệu ra (Q7') của IC1 với chân dữ liệu vào

Trang 14

(SER) của IC2 Kết nối các chân clock (SRCLK và RCLK) của cả hai IC với chân clock của Arduino hoặc bất kỳ nguồn clock nào khác Kết nối chân dữ liệu lập lại (SRCLR) của cả hai IC với điện áp hoặc terra nếu bạn không sử dụng chức năng này Kết nối chân thanh ghi (SRCLR) của cả hai IC với điện áp hoặc terra nếu bạn không sử dụng chức năng này Kết nối các chân nối tiếp (Q7 và Q7') của cả hai IC với LED hoặc transistors để điều khiển LED Kết nối các chân nối tiếp (Q7 và Q7') của cả hai IC với LED hoặc transistors để điều khiển LED f.Mã nguồn và chú thích

.def shiftData = r20 ; Define the shift data register

.equ clearSignalPort = PORTB ; Set clear signal port to PORTB

.equ clearSignalPin = 3 ; Set clear signal pin to pin 0 of PORTB

.equ shiftClockPort = PORTB ; Set shift clock port to PORTB

.equ shiftClockPin = 2 ; Set shift clock pin to pin 1 of PORTB

.equ latchPort = PORTB ; Set latch port to PORTB

.equ latchPin = 1 ; Set latch pin to pin 0 of PORTB

.equ shiftDataPort = PORTB ; Set shift data port to PORTB

.equ shiftDataPin = 0 ; Set shift data pin to pin 3 of PORTB

cbi clearSignalPort, clearSignalPin ; Set clear signal pin to low

; Wait for a short time

sbi clearSignalPort, clearSignalPin ; Set clear signal pin to high

ret

; Shift out data

shiftoutdata:

Trang 15

ldi shiftData,0xFF

cbi shiftClockPort, shiftClockPin

LDI R25, 16; Shift 8 bits twice

sbi shiftClockPort, shiftClockPin

cbi shiftClockPort, shiftClockPin

sbi latchPort, latchPin ; Set latch pin to high

cbi latchPort, latchPin ; Set latch pin to low

Trang 16

BÀI 1

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

a LCD phân biệt command và data bằng cách nào?

b Ngoài cách đọc bit BUSY, còn cách nào để đảm bảo là LCD rảnh khi gửi dữ liệu/command?

c Mô tả kết nối trên kit thí nghiệm.

d Mã nguồn chương trình với chú thích

a LCD phân biệt command và data bằng cách nào?

➔ LCD phân biệt command và data thông qua bit RS: RS = 0 là command, RS =

1 là data

b Ngoài cách đọc bit BUSY, còn cách nào để đảm bảo là LCD rảnh khi gửi dữ liệu/command?

➔ Delay cho mỗi lần thực thi lệnh

c Mô tả kết nối trên kit thí nghiệm

Trang 17

d Mã nguồn chương trình với chú thích

OUT DDRA, R16 ;PA7,6,5,4,2,1,0 is output

CBI PORTA, RS ;RS=0 (command)

CBI PORTA, RW ;RW=0 (write data)

CBI PORTA, EN ;Unenable LCD

CALL RESET_LCD

CALL INIT_LCD4

START:

CBI PORTA, RS

Trang 18

LDI R17, $01 ;Clear display

Trang 19

LDI R18, $28 ;Function set

LDI R19, $01 ;Clear display

LDI R20, $0C ;Display on, pointer off

Trang 21

MOV R15, R16

LDI R16, 200LP1:

MOV R14, R16 LP2:

NOP DEC R14

3 Trả lời các câu hỏi

i Hiện tượng gì xảy ra khi không chống rung phím

j Mô tả cách kết nối trên kit thí nghiệm

Trang 22

k Mã nguồn chương trình không chống rung phím và chú thích

Tương tự chống rung, bỏ 3 dòng này ở ctc WAIT_NHAN và ctc WAIT_NHA

OUT DDRA, R16 ;PortA is output LCD

OUT DDRC, R16 ;PortC is output Barled

CBI DDRB, 0

;PB0 is input

SBI PORTB, 0 ;dien tro keo len

Trang 23

CBI PORTA, RS ;RS=0 (command)

CBI PORTA, RW ;RW=0 (write data)

CBI PORTA, EN ;Unenable LCD

;Cat hang don vi

MOV R18, R22 ;Lay phan nguyen chia 10 lan 2

;Cat hang chuc

MOV R18, R22 ;Lay phan nguyen chia 10 lan 3

CLR R22

L3:

INC R22

Trang 24

LDI R18, $28 ;Function set

LDI R19, $01 ;Clear display

LDI R20, $0C ;Display on, pointer off

Trang 26

BÀI 3

4 Trả lời các câu hỏi

e Cách kết nối các module trên bài thí nghiệm

Trang 27

f Có hiện tượng rung phím đối với bàn phím ma trận hay không? Nếu có thì xử lý bằng cách nào?

-Không thấy hiện tượng rung ở bàn phím

Trang 28

g Trình bày mã nguồn chương trình và chú thích

LDI R16,50 ;so lan nhan dang phim nhan

BACK1: RCALL SCANKEY ;gọi ctc nhan dang phim nhan BRCC KEY_RD ;C=0 phim chưa nhan lap lai

DEC R16 ;dem so lan nhan dang phim nhan

BRNE BACK1 ;lap vong cho du so lan dem

PUSH R17 ;xac nhan phim nhan, cat ma phim

WAIT_1: LDI R16,50 ;so lan nhan dang phim nha BACK2: RCALL SCANKEY ;gọi ctc nhan dang phim BRCS WAIT_1 ;C=1 phim chua nha

DEC R16 ;dem so lan nhan dang phim

BRNE BACK2 ;lap vong cho du so lan dem

POP R17 ;xac nhan phim nha lay lai ma phim

MOV R24,R17

RET

;SCANKEY doc trang thai cac phim,

;tra R24= ma phim và C=1 neu co phim nhan

;tra ve C=0 neu phim chua nhan

;

SCANKEY:

LDI R17,4 ;R17 dem so lan quet cot

LDI R20,0XFE ;bat dau quet cot 0

SCAN_COL:

OUT PORTA,R20

IN R19,PINA ;doc trang thai hang

IN R19,PINA ;doc lai trang thai hang

ANDI R19,0XF0 ;che 4 bit cao lay ma hang

CPI R19,0XF0 ;xem có phim nhan chua?

BRNE CHK_KEY ;R19 khác F0H: co phim nhan

LSL R20 ;quet cot ke tiep

INC R20 ;dat LSB=1

DEC R17

BRNE SCAN_COL ;tiep tuc quet het so cot

CLC ;phim chua nhan,C=0

MOV R24,R17

RJMP EXIT ;thoat

Trang 29

CHK_KEY:

SUBI R17,4 ;tinh vi tri cot

NEG R17 ;bu 2 lay so duong

SWAP R19 ;đao sang 4 bit thap ma hang

LDI R20,4 ;quet 4 hang tim vi tri hang

SCAN_ROW: ; tim vi tri hang co phim dc nhan

ROR R19 ;quay phai ma hang qua C tim bit 0

BRCC SET_FLG ;C=0 dung vi tri hang co phim nhan INC R17 ;ko dung hang, tang vi tri hang them 4 INC R17

INC R17

INC R17

DEC R20

BRNE SCAN_ROW ;quet het 4 hang

CLC ;ko co phim nhan C=0

.EQU E=2 ;bit E

.EQU CR=$0D ;ma xuong dong

.EQU NULL=$00 ;ma ket thuc

CBI LCD,RW ;RW=PC1=0 truy xuat ghi

CBI LCD,E ;E=PC2=0 cam LCD

; khii tạo LCD gim:

;reset cap nguon ;cau hinh LCD hoat dong che do 4 bit ; -

Trang 30

;kTra ky tu xuong dong

;tiep tuc hien thi line 1

DOWN: CBI LCD,RS ;RS=0 ghi lenh

LDI R17,$C5 ;con tro% line 2 vi tri 5

LPM R17,Z+ ;lay ma ASCII ky tu trong Flash ROM

CPI R17,NULL ;ktra ky tu ket thuc

BREQ TT ;ky tu null la ket thuc

SBI LCD,RS ;RS=1 ghi data hien thi LCD

RCALL OUT_LCD4_2 ;ghi ma ASCII ky tu ra LCD

INIT_LCD4: CBI LCD,RS ;RS=0 ghi lenh

LDI R17,0x28 ;che do giao tiep 8 bit, 2 line font 5x8 RCALL OUT_LCD4_2

CBI LCD,RS ;RS=0 ghi lenh

LDI R17,0x01 ;clear display

RCALL OUT_LCD4_2

LDI R16,20 ;cho 2ms sau lệnh Clear display

RCALL DELAY_US

;

Trang 31

SWAP R17 ;đao 4 bit

;lấ8y 4 bit thấ8p chuyê%n thành cao

;HEX_ASC chuyen tu ma Hex sang ma ASCII

;Input R17=ma Hex,Output R18=ma ASCII

Ngày đăng: 01/11/2024, 10:18

w