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

BÁO cáo THỰC HÀNH viết chương trình xuất số AB ra led đơn trên cổng p1 đọc tín hiệu từ nút nhấn tại cổng p0 0 mỗi khi nhấn nút thì cổng p0 1 điều khiển led đơn nhấp nháy AB lần

17 270 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

Định dạng
Số trang 17
Dung lượng 40,39 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Mỗi khi nhấn nút thì cổng P0.1 điều khiển led đơn nhấp nháy AB lần... Thực hành 2 Viết chương trình điều khiển 4 led 7 thanh hiển thị số ABCD... Viết chương trình dùng ngắt bộ định thời

Trang 1

BÀI BÁO CÁO THỰC HÀNH KẾT THÚC

TÊN SINH VIÊN: VŨ VIỆT KIỀU

LỚP: 61TDH2

MSV: 1951211959

1.Thực hành 1

1.1 Viết chương trình xuất số AB ra led đơn trên cổng P1

Mã số sinh viên : 1951211959 -> AB = 59

BÀI LÀM

ORG 0000H

LOOP:

MOV P1,#59D

JMP LOOP

END

1.2 Đọc tín hiệu từ nút nhấn tại cổng P0.0 Mỗi khi nhấn nút thì cổng P0.1 điều

khiển led đơn nhấp nháy AB lần.

Mã số sinh viên : 1951211959 -> AB = 59

BÀI LÀM

org 0000H

NUT: MOV P0, #11111111b

JB P0.0, NUT

main:

Mov R0,#0D

LOOP:

Trang 2

cpl p0.1

inc R0

CJNE R0,#118d, LOOP ;;;;;;;;;;;; 59 lần sáng, 59 lần tối JMP NUT

END

Trang 3

1.3 Mỗi khi nhấn nút nối với cổng P0.0, vi điều khiển điều khiển cổng P1 hiển thị

8 led đơn thể hiện đếm từ 0 đến số AB.

Mã số sinh viên : 1951211959 -> AB = 59

BÀI LÀM

ORG 0000H

NUT:

MOV P0,#11111111B

JB P0.0,NUT

MOV R1,#0D

LOOP:

MOV P1,R1

INC R1

CJNE R1,#60D,LOOP

JMP NUT

END

2 Thực hành 2

Viết chương trình điều khiển 4 led 7 thanh hiển thị số ABCD.

Mã số sinh viên : 1951211959 -> ABCD = 1959

BÀI LÀM

ORG 000H

START:

Mov R0, #04H

Mov R1, #00H

Mov R6, #0EEH

LABEL:

Mov A, R1

Mov DPTR, #Zezo

Movc A, @A+DPTR

Mov P0, A

Mov P2, R6

Mov A, R6

Mov R6, A

Mov P2, #0FFH

INC R1

Trang 4

DEC R0 ;;;;;;giảm giá trị dữ liệu trên thanh ghi R0 xuống 1 đơn vị

Mov A, R0

;;;;;;;;;;;;;;;;;;;;;Lệnh JZ (nhảy nếu A = 0)

JZ START

Zezo: DB 0F9H, 090H, 092H, 090H

Trang 5

END

3 Thực hành 3

3.1 Viết chương trình hiển thị trên LCD 16x2

+ Họ và tên sinh viên trên hàng 1

+ Mã số sinh viên trên hàng 2

BÀI LÀM

jmp start

cmd macro cmd_code

setb E

mov D, cmd_code

string: db 'TEN VU VIET KIEU \0'

string2: db 'MSV: 1951211959\0'

ORG 0100H

start: mov D, #0

mov DPTR, #string

main: clr RS

mov DPTR, #string

; Dong 1

cmd #00000001b ; Clear display

cmd #00000010b ; Cursor home

cmd #00000110b ; Entry mode set

cmd #00001111b ; Display ON/OFF control cmd #00011110b ; Cursor/display shift cmd #00111100b ; Function set

cmd #10000001b ; Set DDRAM address setb RS

mov R0, #0; Gia tri sai lech duoc khoi tao la 0 print: mov A, R0

movc A, @A+DPTR

Trang 6

;Dong 2

main2:

A,#0, print

cmd #11000001b

mov DPTR, #string2

setb RS

mov R0, #0

print2: mov A, R0

movc A, @A+DPTR

cjne A, #0, print2

jmp main

end

3.2 Viết chương trình giao tiếp với ma trận bàn phím và LCD 16x2

+ Nhấn số 1 thì hiển thị Họ và tên sinh viên

+ Nhấn số 2 thì hiển thị Mã sinh viên

BÀI LÀM

ORG 0000H

BACK:

MOV P2, #11111111B

CLR P2.0

JB P2.4, NEXT1

ACALL start

NEXT1:

JB P2.5, BACK

ACALL start2

jmp start

cmd macro cmd_code

setb E

mov D, cmd_code

Trang 7

string: db 'TEN VU VIET KIEU \0' string2: db 'MSV: 1951211959\0'

Trang 8

ORG 0100H

start: mov D, #0

mov DPTR, #string

main: clr RS

mov DPTR, #string

in: ;;;;;Dong 1

cmd #00000001b ; Clear display

cmd #00000010b ; Cursor home

cmd #00000110b ; Entry mode set

cmd #00001111b ; Display ON/OFF control

cmd #00011110b ; Cursor/display shift

cmd #00111100b ; Function set

cmd #10000001b ; Set DDRAM address

; Print the string

setb RS

mov R0, #0; Gia tri sai lech duoc khoi tao la 0:

print: mov A, R0

movc A, @A+DPTR

cjne A,#0, print

JMP BACK

; Dong 2

start2: mov D, #0

mov DPTR, #string2

main2: clr RS

mov DPTR, #string2

end acall in

4 Thực hành 4

4.1 Viết chương trình dùng ngắt bộ định thời 0 để tạo xung vuông tuần hoàn có

tần số f=2kHz tại P0.0 Biết rằng vi điều khiển dùng thạch anh 12MHz.

BÀI LÀM

; Chuong trinh tao xung vuong co tan so f = 2kHz tai P0.0 voi thach anh 12MHz

; Thach anh 12Mhz, tan so xung clock la 12Mhz/12 = 1Mhz

; Moi chu ki dem se la 1/1Mhz = 01 micro giay

; Xung tan so 2kHz: chu ki la 1/2000 = 0,5 mili giay = 500 micro giay

Trang 9

;Vay 1/2 chu ki la 250 micro giay => 250 lan dem cua bo dinh thoi < 255 (Gia tri lon nhat cua thanh ghi 8 bit)

; Nen chi can su dung bo dem 8 bit tu dong nap lai

ORG 0000h

LJMP main

;;;;;; Ngat bo dinh thoi 0

ORG 000Bh

CPL P0.0

RETI

;;;;;;;;;;;;;;; Chuong trinh chinh;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ORG 0030h

main:

;;;; Khoi tao gia tri ban dau

MOV R0, #LOW(65535-250); 2^16 = 65536 (0-65535)

MOV A, R0

ADD A, #1D

MOv R0, A

;;MOV R1, #HIGH(65535-250); 2^16 = 65536 (0-65535)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Cai dat cho bo dinh thoi 0 o che do tu dong nap lai 8 bit\

;xxxx-xxM1M0

MOV TMOD,#00000010B ;Chế độ định thời 8 bit tu dong nap lai

MOV TH0, R0 ; Gia tri xac lap cho TL0 khi xay ra tran

MOV TL0, R0 ; Gia tri xac lap gia tri ban dau cho TL0

;SETB IE.7

vonglap:

JMP vonglap

END

4.2 Dùng ngắt bộ định thời 0 và 1 để tạo đồng thời 2 xung vuông tuần hoàn có

tần số lần lượt là 1kHz và 100Hz tại chân P1.0 và P1.1 khi 8051 sử dụng thạch anh 12Mhz.

BÀI LÀM

ORG 0000h

LJMP main

JMP NBDT0

Trang 10

ORG 001BH ;ngat bo dinh thoi 1

JMP NBDT1

;;;;;;;;;;;;;;; Chuong trinh chinh;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Trang 11

ORG 0030h

main:

; Khoi tao gia tri ban dau cho 100hz

MOV R0,

#LOW(65535-5000) MOV A, R0

ADD A, #1D

MOv R0, A

MOV R1, #HIGH(65535-5000)

; Khoi tao gia tri ban dau cho 1khz

MOV R2,

#LOW(65535-500) MOV A, R2

ADD A, #1D

MOv R2,A

MOV R3, #HIGH(65535-500)

;;;;;;;;;;;;;;;;; XAC LAP GIA TRI CUA BO DINH THOI ;;;;;;;;;;;;;;;;;;;;;;;

MOV TMOD,#00010001B ;Chế độ định thời 16 bit

MOV TH0, R3 ; Gia tri xac lap cho TL0 khi xay ra tran MOV TL0, R2 ; Gia tri xac lap gia tri ban dau cho TL0 MOV TH1, R1 ; Gia tri xac lap cho TL1 khi xay ra tran MOV TL1, R0 ; Gia tri xac lap gia tri ban dau cho TL1

;SETB IE.7

SETB EA

SETB IE.3

SETB IE.1

SETB TR1

SETB TR0

; cho phep ngat

; cho phep ngat bo dinh thoi 1

; cho phep ngat bo dinh thoi 0

; cho phep bo dinh thoi hoat dong

; cho phep bo dinh thoi hoat dong

vonglap:

JMP vonglap

NBDT0:

CPL P1.0

MOv TH0,R3

MOV TL0, R2

RETI

NBDT1:

Trang 12

CPL P1.1 MOV TH1, R1 MOV TL1, R0 RETI

END

Trang 13

4.3 Viết chương trình phát một chuỗi kí tự là tên sinh viên qua cổng truyền thông

nối tiếp ở chế độ UART 8 bit, 9600bps (bit/giây) Có sử dụng ngắt truyền thông nối tiếp Biết rằng vi điều khiển sử dụng thạch anh 11.0592Mhz.

BÀI LÀM

ORG 0000h

LJMP main

;;;;;; Ngat truyen thong noi tiep

ORG 0023h

LJMP SERISR

;;;;;;;;;;;;;;; Chuong trinh chinh;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ORG 0030h

main:

mov DPTR,#string

mov R0,#0D

;Che do 8-bit UART mode

clr SM0

setb SM1

;setb REN ; Cho phep nhan ky tu bang truyen thong noi tiep

;set bit double

rate mov A,

PCON; setb A.7

mov PCON, A ;set smod (double rate)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

mov TMOD, #20H; timer 1 in mode 8 bit auto reload

;;; double rate thach anh 12MHz, baurdrate la 1200 thi

mov TH1, #253D ;TH1=256-[(11.0592*10^6)/(12*32)]/9600

mov TL1, TH1

clr ET0 ;Cho phép ngắt bộ định thời 0

setb TR1; start timer 1

setb TI

setb ES

setb EA

; Ngắt truyền thông

; cho phep ngat truyen thong

; cho phep ngat

vonglap:

cjne R0, #00001011b, vonglap

mov R0,#0D

jmp vonglap

Trang 14

clr TI

;clr RI

mov A,R0

movc A,@A+DPTR

Trang 15

mov SBUF,A

INC R0

RETI

string: db 'VU VIET KIEU'

END

4.4 Viết chương trình chờ nhận 1 xung âm tại chân P3.2 Khi xuất hiện xung thì

gửi một ký tự $@$ ra cổng truyền thông nối tiếp ở chế độ UART 9 bit, tốc độ baud

9600 bps (bit/giây) Trong đó bit thứ 9 là bit kiểm lỗi chẵn/lẻ và vi điều khiển dùng thạch anh 11.0592MHz.

BÀI LÀM

; Chuong trinh cho dem tien tai cong P3.2

; Chan P3.2 la chan noi voi ngat ngoai 0: INT0

; Dem theo xung am:

ORG 0000h

LJMP main

;;;;;;;;;;;;;;; Chuong trinh chinh;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ORG 0030h

main:

mov DPTR, #string mov R0, #0D

; Che do 9-bit UART mode

setb SM0

setb SM1

setb REN ; Cho phep nhan ky tu bang truyen thong noi tiep

; set bit double rate

Trang 16

clr ET0 ;Cho phép ngắt bộ định thời

; Cai dat cho ngat ngoai 0 SETB

IE.7; cho phep ngat

SETB IE.0; cho phep ngat bo ngoai 0

Trang 17

SETB IT0 ; cho phep ngoai ngoai theo suon xung am

mov A, PCON;

setb A.7

mov PCON, A ; set smod (double rate)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

mov TMOD, #20H ; timer 1 in mode 8 bit auto reload

;;; double rate thach anh 12MHz, baurdrate la 1200 thi

mov TH1, #253D ; TH1=256-[(11.0592*10^6)/(12*32)]/9600

mov TL1, TH1

JMP $

ORG 0003H

Clr IE0

vonglap:

mov A, R0

movc A, @A+DPTR

mov SBUF, A MOV

C, P MOV TB8, C

INC R0

CJNE R0, #3D,vonglap

mov R0, #0D RETI

string: db '$@$'

END

;ngat ngoài 0

;Cho phép ngắt ngoài 0

;Nạp byte dữ liệu từ ACC

;Đọc bit chẵn lẻ trong PSW

; Chuyển bit chẵn lẻ vào TB8

Ngày đăng: 09/01/2022, 17:14

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w