ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH ĐẠI HỌC BÁCH KHOA BÁO CÁO VI XỬ LÝ LỚP L06 HK 221 NGÀY NỘP 14/12/2022 Giảng viên hướng dẫn Thầy Phạm Quang Thời Sinh viên thực hiện Mã số sinh viên Điểm số Ng[.]
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
ĐẠI HỌC BÁCH KHOA
BÁO CÁO VI XỬ LÝ
LỚP L06 HK 221 NGÀY NỘP 14/12/2022 Giảng viên hướng dẫn: Thầy Phạm Quang Thời
Sinh viên thực hiện Mã số sinh viên Điểm số
Nguyễn Tuấn Hưng 2011336
Thành phố Hồ Chí Minh – 2022
Trang 2Bài 1: Thí nghiệm với nút nhấn THÍ NGHIỆM 1: Đọc liên tục giá trị của nút nhấn P1.0 và xuất ra P3.0
ORG 2000H
LOOP: MOV C,P1.0 ; đọc nút nhấn
MOV P3.0, C ; xuất ra LED
SJMP LOOP END
THÍ NGHIỆM 2: Viết chương trình tạo sóng tại P3.0
Trang 3THÍ NGHIỆM 4: Viết chương trình con Delay1sIns và dùng chương trình con
này để chớp/tắt LED đơn gắn vào P1.0 sau mỗi khoảng thời gian 1s
Trang 4THÍ NGHIỆM 5: Viết chương trình tạo hiệu ứng quay LED: các LED đơn trên
BARLED1 sáng lần lượt từ trái sang phải sau thời gian 1s và lặp lại Sử dụng chương trình con 1s đã viết ở trên
Mô tả chương trình:
Ban đầu tất cả các led đều tắt
Sau 1s Led P1.7 sẽ sáng, sau 1s tiếp theo thì đến led P1.6 sẽ sáng, P1.7 vẫn sáng Làm tuần tự đến tất cả led đều sáng thì Reset lại chương trình
Trang 5THÍ NGHIỆM 6: Viết chương trình theo mô tả sau:
Ban đầu: Tất cả led đều tắt
Sau 1s đầu thì led P1.7 sáng và tất cả các led còn đều tắt Sau 1s kế tiếp led P1.6 sáng và tất cả các led còn đều tắt Sau 1s nữa thì led P1.5 sáng và tất cả các led còn đều tắt Làm tuân tự đến led P1.0 và Reset quá trình
Trang 6THÍ NGHIỆM 7: Nhấn nút P1.0 thì led chạy như câu 5 Nhấn nút P1.1 thì led
Trang 8THÍ NGHIỆM 1: Viết chương trình chính hiển thị số 9 lên LED 7 đoạn số 0
bằng cách cho R0 bằng 9 và gọi chương trình con DisplayLed0
THÍ NGHIỆM 2: Viết chương trình hiển thị lên LED 7 đoạn số 0 các con số từ
0 đến 9 sau các khoảng thời gian 1s
Trang 9THÍ NGHIỆM 3: Viết chương trình con DisplayLED xuất giá trị chứa trong
thanh ghi R0 lên LED 7 đoạn có số thứ tự chứa trong thanh ghi R1
Trang 10ANL A, #0F0H PUSH ACC
MOV A, R0 ANL A, #0FH MOV R0, A POP ACC
ORL A, R0 MOV DPTR,#0000H MOVX @DPTR, A
Trang 11THÍ NGHIỆM 4:Viết chương trình hiển thị số 1 lên LED7 đoạn 0, sau đó 1s
hiển thị số 2 lên LED 7 đoạn 1, sau đó 1s hiển thị số 3 lên LED 7 đoạn 2, sau đó 1s hiển thị số 4 lên LED 7 đoạn 3 Quá trình này lặp đi lặp lại Việc hiển thị này
sử dụng chương trình con DisplayLED đã viết ở trên
Trang 12MOV A, R0
ANL A, #0FH MOV R0, A
Trang 13MOV R1,#0
MOV R2,#4
MAIN:
ACALL DisplayLED ACALL DELAY_100MS MOV DPTR,#0000H MOVX @DPTR, A
MOV A, R0
ANL A, #0FH MOV R0, A
Trang 15MOV R3,A CHUC:
Trang 16MOV A,#11101111B LOOP:
RL A
DJNZ B, LOOP
ANL A, #0F0H PUSH ACC
MOV A, R0 ANL A, #0FH MOV R0, A
ORL A, R0 MOV DPTR,#0000H MOVX @DPTR, A
Trang 17Bài 3: Làm quen với LCD THÍ NGHIỆM 1: Chạy mẫu đoạn code
LCD_E BIT P3.3 ;Định nghĩa LCD_E là chân P3.3 LCD_RS BIT P3.5 ;Định nghĩa LCD_RS là chân P3.5 LCDADDR EQU 6000H ;Định nghĩa LCDADDR là 6000H ORG 2000H
Trang 20INIT_LCD:
MOV A,#38H
ACALL WRITECOM MOV A, #0EH
ACALL WRITECOM MOV A,#06H
ACALL WRITECOM RET
CLEAR:
MOV A, #01H
ACALL WRITECOM RET
WRITECOM:
MOV DPTR,#LCDADDR SETB LCD_E
CLR LCD_RS
MOVX @DPTR, A CLR LCD_E
ACALL WAIT_LCD RET
WRITETEXT:
MOV DPTR,#LCDADDR SETB LCD_E
SETB LCD_RS
MOVX @DPTR, A CLR LCD_E
Trang 22MOVC A,@A+DPTR
JZ EXIT
ACALL WRITETEXT MOV A,R0
Trang 23THÍ NGHIỆM 3: Viết nội quy lên LCD
LCD_E BIT P3.3 ;Ð?nh nghia LCD_E là chân P3.3 LCD_RS BIT P3.5 ;Ð?nh nghia LCD_RS là chân P3.5 LCDADDR EQU 6000H ;Ð?nh nghia LCDADDR là 6000H ORG 2000H
MAIN:
MOV @R0, 30H
Trang 24MOV DPTR, #LCDADDR ACALL CLEAR
ACALL XOA_DONG_2
Trang 32Bài 4: Làm quen với ADC và Timer
THÍ NGHIỆM 1: Xuất giá trị trên ADC lên Port 1
ACALL WAIT_LCD ;EOC
MOVX A,@DPTR ;OE
Trang 33THÍ NGHIỆM 2: Xuất giá trị ADC lên LCD
Trang 37ACALL WRITECOM POP ACC
Trang 38ACALL WAIT_LCD ;EOC
MOVX A,@DPTR ;OE
Trang 39RET
WRITECOM:
MOV DPTR,#LCDADDR SETB LCD_E
Trang 43MOV SBUF,A
RET
END
THÍ NGHIỆM 2: Đưa lên 1 ký tự truyền từ bàn phìm lên LCD
LCD_E BIT P3.3 ;Định nghĩa LCD_E là chân P3.3
LCD_RS BIT P3.5 ;Định nghĩa LCD_RS là chân P3.5
LCDADDR EQU 6000H ;Định nghĩa LCDADDR là 6000H ORG 2000H
Trang 45THÍ NGHIỆM 3: Đưa lên 1 chuỗi ký tự truyền từ bàn phìm lên LCD
LCD_E BIT P3.3 ;Định nghĩa LCD_E là chân P3.3
LCD_RS BIT P3.5 ;Định nghĩa LCD_RS là chân P3.5
LCDADDR EQU 6000H ;Định nghĩa LCDADDR là 6000H ORG 2000H
Trang 46MOV A,#80H
ADD A,R1
ACALL WRITECOM MOV A,R4
CJNE A, #08H, XOA_1 ACALL WRITETEXT MOV A,#06H
ACALL WRITECOM INC R1
CJNE A, #08H, XOA_2 ACALL WRITETEXT MOV A,#06H
ACALL WRITECOM INC R1
CJNE R1,#17,$+3
JC DONG_2
SJMP MAIN
THU:
Trang 47ACALL WRITETEXT SJMP DONG_1
ACALL WRITETEXT SJMP DONG_2
RET
Trang 48INIT_LCD: ;Các dòng lệnh cấu hình LCD ban đầu