BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED MỤC TIÊU ➢ Nắm được cách sử dụng kit thí nghiệm, phần mềm lập trình.. BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
Trang 2BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
MỤC TIÊU
➢ Nắm được cách sử dụng kit thí nghiệm, phần mềm lập trình
➢ Nắm được cách lập trình giao tiếp IO port
➢ Nắm được cách lập trình tạo thời gian trễ dùng các lệnh
CHUẨN BỊ
➢ Đọc và làm bài thí nghiệm 0 tại nhà
➢ Đọc bài chuẩn bị thí nghiệm 1 tại nhà
➢ Chuẩn bị cho thí nghiệm 1: Viết chương trình và mô phỏng trên Proteus tất cả các bài trong thí nghiệm 1 dựa trên bài chuẩn bị 1 (Prelab_1) và thí nghiệm 0
➢ Nộp tất cả các kết quả (bài thí nghiệm 0 và bài chuẩn bị thí nghiệm 1) cho GVHD trước khi vào lớp
Sinh viên không thực hiện hoặc nộp thiếu nếu không có lí do chính đáng sẽ không được tham gia thí nghiệm và bị đánh vắng buổi đó Mọi hình thức gian lận, sao chép sẽ bị xử lý chính đáng
Trang 3BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
THÍ NGHIỆM 1
Mục tiêu: Nắm được cách thức điều khiển trực tiếp ngoại vi thông qua các port I/O của 8051
Yêu cầu: Viết chương trình thực hiện việc đọc liên tục trạng thái của nút nhấn được nối đến P1.0
và hiển thị ra led được nối tại chân P3.0 (bit thứ 0 của led thanh BL202)
Trang 4BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
Trang 5BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
Câu hỏi:
➢ Thử giải thích tại sao có đến 2 led cùng bị tác động khi nhấn hoặc thả nút?
Khi nhấn nút, led nối với chân P1.0 và led nối với chân P3.0 đều sáng; khi thả nút thì đều tắt Vì được tác động do lệnh: MOV C,P1.0; MOV P3.0,C
➢ Tổng kết xem các bit nào của 2 port có thể được dùng trong thí nghiệm trên và giải thích tại sao?
Ta có thể sử dụng các bit từ P1.0 đến P1.7 và tương tự với Port 3 Nhưng không nên sử dụng Port
3 vì các chân Port 3 được sử dụng với các chức năng đặc biệt sau:
Trang 6BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
Delay1s:
MOV R5,#8 LP1: MOV R6,#250 LP2: MOV R7,#250
DJNZ R7,$
DJNZ R6,LP2 DJNZ R5,LP1 RET
ORG 2000H LOOP: CPL P1.0
ACALL Delay1s SJMP LOOP Delay1s:
MOV R5,#8 LP1: MOV R6,#250 LP2: MOV R7,#250
➢ Viết chương trình con Delay1s
➢ Dùng chương trình con đã viết để chớp/tắt LED đơn gắn vào P1.0 sau mỗi khoảng thời gian 1s
➢ Thay đổi chương trình con để tần số chớp tắt bây giờ là 1KHz
• Chương trình con:
• Chương trình chớp/tắt LED đơn gắn vào P1.0 sau mỗi khoảng thời gian 1s:
Trang 7ORG 2000H LOOP: CPL P1.0
ACALL Delay1ms SJMP LOOP DELAY1ms:
LP: MOV R5, #2
MOV R6, #250 DJNZ R6, $ DJNZ R5, LP RET
END
BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
DJNZ R5,LP1 RET
Trang 8➢ Khi tần số chớp tắt là 1Khz, cho biết hiện tượng trên LED?
LED sẽ chớp tắt gần như liên tục (chu kì là 1Khz hay mỗi 500𝜇(𝑠))
➢ Sinh viên thay đổi chương trình con như thế nào để được tần số chớp tắt là 1KHz?
Với tần số chớp tắt là 1Khz => Chu kì sẽ là 1000 𝜇(𝑠)(500 𝜇(𝑠) tín hiệu ở mức cao và 500 𝜇(𝑠) ) tín hiệu ở mức thấp Do đó, thời gian trễ Time delay = 500 𝜇(𝑠) với công thức ở trên thì ta tính được giá trị cần nạp là 250
Trang 9BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
THÍ NGHIỆM 3
Mục tiêu: Nắm được cách viết chương trình con để tạo trễ
Yêu cầu: Viết chương trình tạo 2 xung vuông 0.5Hz (chu kỳ nhiệm vụ 50%) và 1Hz (chu kỳ
nhiệm vụ là 30%) lần lượt trên chân P1.0 và P1.1
ORG 2000H LOOP: CPL P1.0
CPL P1.1 ACALL DELAY300ms CPL P1.1
ACALL DELAY700ms SJMP LOOP
DELAY300ms:
MOV R5, #3 LP1: MOV R6, #200 LP2: MOV R7, #250
DJNZ R7, $ DJNZ R6, LP2 DJNZ R5, LP1 RET
DELAY700ms:
MOV R5, #7 LP3: MOV R6, #200 LP4: MOV R7, #250
Trang 10BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
Kiểm tra:
➢ Biên dịch, thực thi và kiểm tra chương trình bằng cách sử dụng oscilloscope để kiểm tra
chương trình tạo 2 xung vuông 0.5Hz và 1Hz.mp4
Câu hỏi:
➢ Vẽ giản đồ của 2 xung? Các chương trình con viết với thời gian trễ là bao nhiêu?
Các chương trình con viết với thời gian trễ lần lượt là 0.3s và 0.7s
➢ Tại mỗi thời gian tạo trễ, các chân P1.0 và P1.1 xuất tín hiệu như thế nào?
Tại 0.3s đầu, ta đảo bit chân P1.1, 0.7s sau ta tiếp tục đảo bị chân P1.1 vậy ta đã tạo được xung 1Hz với chu kì nhiệm vụ là 30% Sau đó đồng thời đảo bit chân P1.0, do đó ta có được xung 0.5Hz với chu kì nhiệm vụ là 50% tại chân P1.0
➢ Để tạo các xung thỏa yêu cầu bài toán, các vòng trễ được viết như thế nào?
Vòng trễ được viết như sau:
Trang 11BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
LOOP:
ACALL DELAY300ms CPL P1.1
ACALL DELAY700ms CPL P1.1
CPL P1.0 SJMP LOOP
Trang 12BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
THÍ NGHIỆM 4
Mục tiêu: Nắm được cách hiển thị bar LED và tạo hiệu ứng
Yêu cầu: 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 Delay1s đã viết ở trên
Kiểm tra:
➢ Biên dịch, thực thi và kiểm tra chương trình bằng cách quan sát hiệu ứng trên bar led
thí nghiệm 4.mp4
ORG 2000H LOOP: MOV A,#7FH
MOV R1,#8 PHASE:
MOV P1,A
RL A ACALL Delay1s DJNZ R1,PHASE SJMP LOOP Delay1s:
MOV R5,#8 LP1: MOV R6,#250 LP2: MOV R7,#250
DJNZ R7,$
DJNZ R6,LP2 DJNZ R5,LP1 RET
END
Trang 14MOVX @DPTR,A RET
ORG 2000H MOV R0,#11101001B CALL DisplayLED LOOP:
SJMP LOOP DisplayLED:
MOV DPTR, #0000H MOV A,R0
MOVX @DPTR,A RET
END
Trang 15BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
Trang 16Yêu cầu: 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 sử dụng 2 chương trình con ở Thí nghiệm 2 và Thí nghiệm 5
ORG 2000H START:
MOV R0,#0E0H LOOP:
ACALL DisplayLED ACALL DELAY1S INC R0
CJNE R0,#0EAH,LOOP AJMP START
DisplayLED:
MOV DPTR, #0000H MOV A,R0
MOVX @DPTR,A RET
DELAY1S:
MOV R5, #8 LP1: MOV R6, #250 LP2: MOV R7, #250
DJNZ R7, $ DJNZ R6, LP2 DJNZ R5, LP1 RET
END
Trang 18Viế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 Trong đó:
Đoạn chương trình sau tính toán để xuất ra điều khiển LED dựa vào R0, R1
MOV B, R1 MOV A, #11110111B SHIFTLOOP:
RL A DJNZ B, SHIFTLOOP ANL A, #0F0H
PUSH ACC MOV A, R0 ANL A, #0FH MOV R0, A POP ACC ORL A, R0
Trang 19MOV R0,#3 MOV R1,#3 ACALL DISPLAYLED SJMP LOOP
DISPLAYLED:
INC R1 MOV B,R1 MOV A,#11110111B SHIFTLOOP:
RL A DJNZ B,SHIFTLOOP ANL A,#0F0H
ADD A,R0 MOV DPTR,#0000H MOVX @DPTR,A RET
END
Trang 20BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
➢ Biên dịch, thực thi và kiểm tra chương trình
Trang 21
BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
LOOP:
ORG 2000H MOV R0,#3 MOV R1,#2 MOV DPTR,#BANG MOV A,R1
MOVC A,@A+DPTR ADD A,R0
MOV DPTR,#0000H MOVX @DPTR,A SJMP LOOP BANG: DB 0E0H,0D0H,0B0H,70H
END
Câu hỏi:
➢ Viết lại chương trình trên bằng phương pháp sử dụng bảng tra (Lookup table)
Trang 22Giảm thời gian trễ xuống còn 100 ms Quan sát hiện tượng
Tính toán thời gian trễ sao cho không còn thấy LED nhấp nháy và áp dụng vào chương trình Giảm thời gian trễ xuống bằng 0 (không sử dụng hàm delay) Quan sát hiện tượng
Kiểm tra:
➢ Biên dịch, thực thi và kiểm tra chương trình
ORG 2000H RESET: MOV R0,#1
MOV R1,#0 LOOP:
ACALL DISPLAYLED ACALL DELAY100MS INC R0
INC R1 CJNE R0,#5,LOOP SJMP RESET DISPLAYLED:
INC R1 MOV B,R1 DEC R1
Trang 23BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
MOV A,#11110111B SHIFTLOOP:
RL A DJNZ B,SHIFTLOOP ANL A,#0F0H
ADD A,R0 MOV DPTR,#0000H MOVX @DPTR,A RET
DELAY100MS:
MOV R6,#200 LP1: MOV R7,#250
DJNZ R7,$
DJNZ R6,LP1 RET
Trang 24BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
Để không thấy LED nhấp nháy => Độ trễ = 0s Tuy nhiên vẫn có khoảng thời gian trễ để thực hiện giữa 2 câu lệnh ACALL DISPLAYLED và CJNE R0,#5,LOOP Đó là khoảng thời gian để thực hiện các câu lệnh: INC R1; MOV B,R1; DEC R1 ; MOV A,#11110111B… INC R0; INC R1 Tức 19 Machine Cycle, với mỗi 1 MC là 1𝜇(𝑠) Vậy thời gian trễ thực tế là 19 ∗ 1𝜇(𝑠) = 19𝜇(𝑠)
➢ Khi giảm rất nhỏ thời gian trễ, hiện tượng xảy ra là gì? Giải thích
Độ trễ quá nhỏ nên khoảng thời gian thực hiện giữa các câu lệnh rất ngắn và LED sẽ hiển thị liên tục các giá trị 1, 2, 3 và 4 với tần số rất lớn bằng mắt thường ta không thể quan sát độ trễ nhỏ như thế Vậy nên, ta nhìn thấy các giá trị 1, 2, 3 và 4 gần như cố định
Trang 25BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
MỤC TIÊU
➢ Nắm được cách sử dụng kit thí nghiệm, phần mềm lập trình
➢ Nắm được cách giao tiếp LCD và ADC
➢ Nắm được cách lập trình timer
CHUẨN BỊ
➢ Đọc bài chuẩn bị thí nghiệm 2 tại nhà
➢ Chuẩn bị cho thí nghiệm 2: Viết chương trình và mô phỏng trên Proteus tất cả các bài trong thí nghiệm 2 dựa trên bài chuẩn bị 2 và thí nghiệm 0
➢ Nộp tất cả các kết quả (bài chuẩn bị thí nghiệm 2) cho GVHD trước khi vào lớp
Sinh viên không thực hiện hoặc nộp thiếu nếu không có lí do chính đáng sẽ không được tham gia thí nghiệm và bị đánh vắng buổi đó
Trang 26➢ Biên dịch và chạy thử chương trình
➢ Sửa chương trình để hiển thị tên sinh viên lên hàng đầu
LCD_E BIT P3.4 LCD_RS BIT P3.5 LCDADDR EQU 6000H ORG 0000H
MAIN:
MOV @R0, 30H MOV DPTR, #LCDADDR ACALL CLEAR
ACALL INIT_LCD ACALL DISPLAYSTRING SJMP $
INIT_LCD:
MOV A, #38H ACALL WRITECOM MOV A, #0EH ACALL WRITECOM MOV A, #06H ACALL WRITECOM RET
CLEAR:
MOV A, #01H
Trang 27BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
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 ACALL WAIT_LCD RET
DISPLAYSTRING:
MOV A,#0 LOOP:
MOV DPTR, #MESSAGE MOV R0,A
MOVC A,@A+DPTR
Trang 28BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
EXIT:
RET WAIT_LCD:
MOV R6,#10 DL1:
MOV R7, #250 DJNZ R7, $ DJNZ R6,DL1 RET
Trang 29- WRITETEXT: GHI DỮ LIỆU (KÍ TỰ) RA MÀ HÌNH LCD
- EXIT: THOÁT KHỎI CHƯƠNG TRÌNH
- MESSAGE: BẢNG ĐỊNH NGHĨA ĐỊA CHỈ KÍ TỰ
- WAIT_LCD: TẠO TRỄ CHO LCD
➢ Trình bày lưu đồ giải thuật giao tiếp LCD
Trang 30BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
Trang 31➢ Viết thêm chương trình con CLRSCREEN để xóa màn hình LCD
➢ Viết thêm chương trình con GOTOXY để di chuyển con trỏ của LCD đến hàng x, cột y, với X chứa trong R0 và Y chứa trong R1
➢ Sửa chương trình ở thí nghiệm 1 để hiển thị thêm số nhóm ở hàng thứ 2
LCD_E BIT P3.3 LCD_RS BIT P3.5 LCDADDR EQU 6000H ORG 2000H
MAIN:
MOV @R0, 30H MOV DPTR, #LCDADDR ACALL CLEAR
ACALL INIT_LCD CLR F0
ACALL DISPLAYSTRING SETB F0
ACALL DISPLAYSTRING SJMP $
INIT_LCD:
MOV A, #38H
Trang 32BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
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 ACALL WAIT_LCD RET
WAIT_LCD:
MOV R6,#20 DL1:
MOV R7, #250 DJNZ R7, $ DJNZ R6,DL1 RET
DISPLAYSTRING:
ACALL COUNT
Trang 33BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
ACALL GOTOXY MOV A,#0
LOOP:
JB F0,CONT1 MOV DPTR,#TEN JMP OUTPUT1 CONT1:
MOV DPTR,#NHOM OUTPUT1:
MOV R0,A MOVC A,@A+DPTR
JZ EXIT ACALL WRITETEXT MOV A,R0
INC A SJMP LOOP EXIT:
RET GOTOXY:
MOV A,#80H
JB F0,CONT2 ADD A,#0 JMP OUTPUT2 CONT2:
ADD A,#40H
Trang 34BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
MOV R1,#0
JB F0,CONT3 MOV DPTR,#TEN JMP OUTPUT3 CONT3:
MOV DPTR,#NHOM OUTPUT3:
MOV A,#0 LOOP1:
MOV R0,A MOVC A,@A+DPTR
JZ EXIT1 INC R1 MOV A,R0 INC A JMP LOOP1 EXIT1:
MOV A,#16 MOV B,#2 SUBB A,R1 DIV AB MOV R1,A RET TEN: DB ‘LAI NGUYEN DUY’,0 NHOM: DB 'NHOM DT03',0 END
Trang 36➢ Viết chương trình con READADC thực hiện đọc giá trị của kênh 0 và trả về giá trị trong R0
➢ Viết chương trình hiển thị giá trị của kênh 0 của ADC lên LCD dùng chương trình con
Trang 41BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
Câu hỏi:
➢ Giá trị này có phải giá trị thực của điện áp đặt vào kênh 0 hay không?
- Giá trị này không phải là giá trị thực của điện áp đặt vào kênh 0
➢ Để hiển thị giá trị thực tế của mức điện áp đặt vào kênh 0 ta phải làm như thế nào?
- Ta có công thức tính Vin = (5*A)/256, với A là giá trị hiện thị trên LCD của thí nghiệm trên
Trang 42➢ Chương trình có giá trị vào chứa trong R0 (là kết quả của chương trình con READADC)
➢ Giá trị trả về chứa trong R0 và R1, R0 chứa giá trị nguyên và R1 chứa giá trị thập phân
➢ Hiển thị giá trị đo được lên LCD theo cấu trúc: "Voltage: x.xx V" với x.xx là giá trị điện áp đo được, với hai số sau dấu chấm
ORG 2000H
RS BIT P3.5
E BIT P3.3 LCD EQU 6000H ADC EQU 4000H MAIN:
CALL LCD_INT CALL READADC CALL CALADC MOV A, R1
ADD A, #30H CALL WR_CHR MOV A, #'.' CALL WR_CHR MOV A, R2 ADD A, #30H CALL WR_CHR MOV A, R3 ADD A, #30H CALL WR_CHR
Trang 43BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
CALL DL1 JMP MAIN CALADC:
MOV B, #5 MUL AB ;BA MOV R1, B MOV B, #10 MUL AB MOV R2, B MOV B, #10 MUL AB MOV R3, B RET
READADC:
MOV DPTR, #ADC MOV A, #0
MOVX @DPTR, A CALL WAIT_LCD MOVX A, @DPTR MOV R0, A
MOV P1, A RET
LCD_INT:
MOV A, #38H CALL WR_CMD
Trang 44BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
CALL WR_CMD RET
WR_CMD:
CALL WAIT_LCD MOV DPTR, #LCD CLR RS
MOVX @DPTR, A SETB E
CLR E RET WR_CHR:
CALL WAIT_LCD MOV DPTR, #LCD SETB RS
MOVX @DPTR, A SETB E
CLR E RET WAIT_LCD:
MOV R7, #4 DL1:
MOV R6, #250 DJNZ R6, $ DJNZ R7, DL1 RET
END
Kiểm tra:
➢ Biên dịch và kiểm tra hoạt động của chương trình, so sánh giá trị hiển thị với giá trị đo được dùng VOM
Trang 45BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
Trang 46MOV R7, #10 LOOP:
MOV TH0, #HIGH(-50000) MOV TL0, #LOW(-50000) SETB TR0
JNB TF0, $ CLR TF0 CLR TR0 DJNZ R7, LOOP CPL P1.0
JMP AGAIN END
Trang 47- Có thể sử dụng timer ở mode 2, nhưng phải lặp bằng phần mềm 1785 lần:
➢ Trong chương trình của sinh viên, khi sử dụng mode 1, sóng vuông 1 Hz có bị sai số không? Để hạn chế sai số ta phải nạp các giá trị vào timer như thế nào?
- Dạng sóng ở mode 1 bị sai số do phần mềm do phải tốn chu kì máy để thực thi, để hạn chế ta phải nạp vào timer ước lớn nhất mà timer có thể có của giá trị thời gian cần tạo trễ (50000)
Trang 49BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
- Có sai số vì phải sử dụng thêm các câu lệnh lặp và do độ trễ gây ra do các câu lệnh đảo bit ở mode 2 tốn 1 chu kì máy
Trang 50BÀI THÍ NGHIỆM 3
LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT
MỤC TIÊU
➢ Nắm được cách sử dụng kit thí nghiệm, phần mềm lập trình
➢ Nắm được cách giao tiếp serial port
➢ Nắm được cách lập trình ngắt (interrupt)
CHUẨN BỊ
➢ Đọc bài chuẩn bị thí nghiệm 3 tại nhà
➢ Chuẩn bị cho thí nghiệm 3: Viết chương trình và mô phỏng trên Proteus tất cả các bài trong thí nghiệm 3 dựa trên bài chuẩn bị 3 và thí nghiệm 0
➢ Nộp tất cả các kết quả (bài chuẩn bị thí nghiệm 3) cho GVHD trước khi vào lớp
Sinh viên không thực hiện hoặc nộp thiếu nếu không có lí do chính đáng sẽ không được tham gia thí nghiệm và bị đánh vắng buổi đó
Trang 51CLR A MOVC A, @A+DPTR CALL PHAT
INC DPTR CJNE A, #0, LOOP JMP $
PHAT:
JNB TI, $ CLR TI
Trang 52➢ Trong chương trình khởi tạo serial port, ta có thể sử dụng tốc độ baud khác giá trị 19200bps
được không? Tại sao?
Không được Các giá trị khác làm cho hiển thị trên LCD sai, không ra đúng chữ “Hello world!!! ”