ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ
---------***---------
VI XỬ LÝ
BÀI TẬP CHƯƠNG 6
GIÁO VIÊN HƯỚNG DẪN: LƯU PHÚ
TP HCM, ngày 01 tháng 04 năm 2020
MỤC LỤC
Câu 1: Các bài tập sau cho Fck=11.059Mhz,trừ trường hợp có ghi chú cụ thể. Mơ
phỏng trên Proteus từ bài 3 đến 7. Viết một đoạn chương trình khởi động cổng nối
tiếp làm việc như sau.
a. UART 8 bit baurate = 9600,cho phép thu
b. UART 9 bit baurate=19200,chỉ phát
c. UART 9 bit baurate=2400 sử dụng Timer2 MCU8052,cho phép thu
Bài làm
a)
b)
c)GIA TRI CAN NAP LAI LA -12
Câu 2:
a. Viết một chương trình con tên OUT_CHR9 phát một ký tự 9 bit gồm 8 bit chứa trong
(A) và bit thứ 9 là bit parity chẵn.
b. Viết một chương trình con tên IN_CHR9 thu một ký tự 9 bit gồm 8 bit cất vào (A)và
kiểm tra bit thứ 9 là bit parity chẵn,nếu sai parity set cờ C.
Bài làm
a)
b)
Câu 3: Viết một chương trình phát chuỗi ký tự cất trong RAM nội địa chỉ đầu 30H ra
cổng nối tiếp,sử dụng chương trình con OUT_CHR9 ở câu 2a,chuỗi ký tự kết thúc
bằng mã NULL(00H),phát luôn mã NULL.Cho baurate=9600.
ORG 00H
TAOCHUOI:MOV R1,#30H
MOV A,#41H
LOOP:
MOV @R1,A
INC R1
INC A
CJNE A,#4AH,LOOP
MOV A,#0
MOV @R1,A
INIT:
MOV SCON,#0C2H
MOV TMOD,#20H
MOV TH1,#-3
MOV TL1,#-3
SETB TR1
MOV R0,#30H
LAP:
MOV A,@R0
LCALL OUT_CHR9
INC R0
JNZ LAP
XUAT:
MOV R0,#30H
LP:
MOV A,@R0
MOV P1,A
CALL DELAY
INC R0
JNZ LP
JMP KT
OUT_CHR9:
MOV C,P
JNB TI,$
CLR TI
MOV TB8,C
MOV SBUF,A
RET
DELAY:
MOV R7,#4
LAP1:MOV R6,#250
LAP2:MOV R5,#250
DJNZ R5,$
DJNZ R6,LAP2
DJNZ R7,LAP1
RET
KT:
END
Câu 4: Viết một chương trình thu chuỗi ký tự từ cổng nối tiếp kết thúc bằng mã
NULL(thu luôn mã NULL),cất vào RAM nội địa chỉ đầu 50H,sử dụng chương trình
con IN_CHR9 ở câu 2b.Chuỗi ký tự được phát từ MCU như bài 3.Sau khi thu xong
chuỗi ký tự,xuất từng ký tự từ đầu đến cuối ra Port1 hiển thị barled 8 LED,thời gian
xuất 2 ký tự cách nhau 1s
Mô phỏng bài 3 và 4 kết hợp: viết chương trình phát khoảng 10 ký tự tạo sẵn trong
RAM nội địa chỉ đầu 30H nạp vào MCU phát,viết chương trình thu chuỗi ký tự nạp
vào MCU thu.
Bài làm
ORG 00H
INIT:
MOV SCON,#0D2H
MOV TMOD,#20H
MOV TH1,#-3
MOV TL1,#-3
SETB TR1
MOV R1,#50H
LAP:
CALL IN_CHR9
MOV @R1,A
INC R1
JNZ LAP
MOV @R1,A
XUAT:
MOV R0,#50H
LP:
MOV A,@R0
MOV P1,A
CALL DELAY_1S
INC R0
JNZ LP
JMP KT
IN_CHR9:
JNB RI,$
CLR RI
MOV A,SBUF
MOV C,P
ANL C,/RB8
MOV F0,C
MOV C,RB8
ANL C,/P
ORL C,F0
RET
DELAY_1S:
MOV R7,#4
LAP1:MOV R6,#250
LAP2:MOV R5,#250
DJNZ R5,$
DJNZ R6,LAP2
DJNZ R7,LAP1
RET
KT:
END
Câu 5: Vẽ sơ đồ MCU8051 kết nối trực tiếp với đèn LCD 16 ký tự và hai SW nhấn ký
hiệu là RE(thu) và SE(phát).Viết một chương trình thực hiện các cơng việc sau:
+ Nếu nhấn SW SE(tích cực mức 0),MCU xuất ký tự SO(0EH) ra cổng nối tiếp và tiếp tục
xuất
10 ký tự ASCII của số 0,1…,9 kết thúc bằng mã NULL ra cổng nối tiếp.Chuỗi ký tự phát
này
được cất trong bộ nhớ code.Sau đó quay lại kiểm tra phím tiếp
+ Nếu nhấn SW SI(tích cực mức 0),MCU xuất ký tự SI(0FH) ra cổng nối tiếp và chờ thu
chuỗi
ký tự ASCII kết thúc bằng mã NULL về cất trong RAM nội địa chỉ đầu 30H.
+ Xuất chuỗi ký tự thu được ra LCD,sau đó quay lại kiểm tra phím tiếp
+ Chống rung phím nhấn
+ Cho baudrate=9600
Bài làm
RS
BIT P2.0
RW
BIT P2.1
E
BIT P2.2
RE
BIT P0.0
SE
BIT P0.1
DBUS
EQU P1
;-------------------------------------------
ORG 00H
MOV SCON,#52H;CHE DO UART 8BIT CHO PHEP THU BAUDRATE
DO TIMER1
MOV TMOD,#20H
;TIMER1 MODE 2 AUTO RELOAD
MOV TH1,#-3
MOV TL1,#-3
SETB TR1
;KHOI DONG TIMER1 BAUDRATE 9600
CALL
CLEAR
CALL
INIT ;KHOI DONG LCD
MAIN:
CLR A
KT_SE:
JB
SE,KT_RE
CALL DELAY100MS
JNB SE,NHAN_SE
SJMP KT_SE
KT_RE:
JB
RE,KT_SE
CALL DELAY100MS
JNB RE,NHAN_RE
SJMP KT_RE
NHAN_SE:CALL MODE1
JMP MAIN
NHAN_RE:CALL CLEAR
CALL MODE2
JMP MAIN
;------------------------------------------MODE1:
CPL P2.7
MOV A,#0EH
CALL SEND
MOV DPTR,#TAB ;DPTR TRO TOI MESSAGE
L1:
CLR A
MOVC A,@A+DPTR
CALL SEND
;TRUYEN KI TU
INC DPTR;TRO TOI KI TU TIEP THEO
JZ
KT_PHAT ;KET THUC KHI GAP NULL (DA TRUYEN KI TU
NULL)
JMP L1
;LAP LAI
KT_PHAT:RET
;------------------------------------------MODE2:
CPL P2.6
MOV A,#0FH
CALL SEND
;TRUYEN KI TU #0FH
MOV R0,#30H
L2:
NULL)
CALL RECV
;NHAN KI TU
MOV @R0,A
;LUU VAO 30H++
JZ
;NEU KI TU LA NULL THI KT THU (DA THU KI TU
KT_THU
INC R0
JMP L2
;LAP LAI
KT_THU: MOV R0,#30H
L3:
MOV A,@R0
JZ
KT
CALL WRITETEXT
INC R0
JMP L3
KT:
RET
;------------------------------------------SEND:
JNB TI,$
CLR TI
MOV SBUF,A
RET
;------------------------------------------RECV:
JNB RI,$
CLR RI
MOV A,SBUF
RET
;------------------------------------------DELAY100MS:
MOV R7,#200
LAP1:
MOV R6,#250
DJNZ R6,$
DJNZ R7,LAP1
RET
;------------------------------------------DELAY:
MOV R7,#4
LAP: MOV R6,#250
DJNZ R6,$
DJNZ R7,LAP
RET
;------------------------------------------INIT: MOV A,#38H
CALL
WRITECOM
MOV A,#01H
CALL
WRITECOM
MOV A,#0EH
CALL
WRITECOM
MOV A,#06H
CALL
WRITECOM
RET
;------------------------------------------WRITECOM:
CLR RS
MOV DBUS,A
CLR RW
SETB E
CLR E
LCALL
DELAY
RET
;------------------------------------------WRITETEXT:
SETB RS
MOV DBUS,A
CLR RW
SETB E
CLR E
CALL
DELAY
RET
;------------------------------------------CLEAR:
MOV A, #01H
CALL
WRITECOM
RET
;------------------------------------------TAB:
DB
30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,0
;------------------------------------------END
Câu 6: Vẽ sơ đồ kết nối MCU8051 trực tiếp với đèn LCD 16 ký tự.Viết một chương
trình thực hiện các công việc sau:
+ MCU chờ thu mã lệnh(từ MCU phát mã lệnh như bài 5)từ cổng nối tiếp
+ Nếu nhận mã lệnh là SO(0EH),MCU sẽ chờ nhận tiếp chuỗi ký tự từ cổng nối
tiếp(chuỗi mã
ASCII ký tự từ 0 đến 9 và mã NULL)cất vào RAM nội địa chỉ đầu 30H,sau đó xuất chuỗi
ký tự
vừa thu được ra LCD.Sau đó quay lại chờ nhận mã lệnh tiếp
+ Nếu nhận mã lệnh là SI(0FH),MCU sẽ phát chuỗi 10 ký tự mã ASCII của chữ A,B,C,
…,I,J và
mã NULL ra cổng nối tiếp.Sau đó quay lại chờ nhận mã lệnh tiếp.
+ Cho baurate=9600
Bài làm
RS
BIT P2.0
RW
BIT P2.1
E
BIT P2.2
DBUS
EQU P1
;------------------------------------------ORG 00H
MOV SCON,#52H;CHE DO UART 8BIT CHO PHEP THU BAUDRATE
DO TIMER1
MOV TMOD,#20H
;TIMER1 MODE 2 AUTO RELOAD
MOV TH1,#-3
MOV TL1,#-3
SETB TR1
MAIN:
;KHOI DONG TIMER1 BAUDRATE 9600
CALL
CLEAR
CALL
INIT ;KHOI DONG LCD
CALL RECV
CJNE A,#0EH,SKIP
CALL CLEAR
CALL MODE1
JMP MAIN
SKIP: CJNE A,#0FH,MAIN
CALL MODE2
JMP MAIN
;------------------------------------------MODE1:
CPL P2.7
MOV R0,#30H
L2:
CALL RECV
;NHAN KI TU
MOV @R0,A
;LUU VAO 30H++
JZ
;NEU KI TU LA NULL THI KT THU (DA THU KI TU
KT_THU
NULL)
INC R0
JMP L2
KT_THU: MOV R0,#30H
;LAP LAI
L3:
MOV A,@R0
JZ
KT
CALL WRITETEXT
INC R0
JMP L3
KT:
RET
;------------------------------------------MODE2:
CPL P2.6
MOV DPTR,#TAB ;DPTR TRO TOI MESSAGE
L1:
CLR A
MOVC A,@A+DPTR
CALL SEND
;TRUYEN KI TU
INC DPTR;TRO TOI KI TU TIEP THEO
JZ
KT_PHAT ;KET THUC KHI GAP NULL (DA TRUYEN KI TU
NULL)
JMP L1
;LAP LAI
KT_PHAT:RET
;------------------------------------------SEND:
JNB TI,$
CLR TI
MOV SBUF,A
RET
;------------------------------------------RECV:
JNB RI,$
CLR RI
MOV A,SBUF
RET
;------------------------------------------DELAY:
MOV R7,#4
LAP: MOV R6,#250
DJNZ R6,$
DJNZ R7,LAP
RET
;------------------------------------------INIT: MOV A,#38H
CALL
WRITECOM
MOV A,#01H
CALL
WRITECOM
MOV A,#0EH
CALL
WRITECOM
MOV A,#06H
CALL
WRITECOM
RET
;------------------------------------------WRITECOM:
CLR RS
MOV DBUS,A
CLR RW
SETB E
CLR E
LCALL
DELAY
RET
;------------------------------------------WRITETEXT:
SETB RS
MOV DBUS,A
CLR RW
SETB E
CLR E
CALL
DELAY
RET
;------------------------------------------CLEAR:
MOV A, #01H
CALL
WRITECOM
RET
;------------------------------------------TAB:
DB
;--
41H,42H,43H,44H,45H,46H,47H,48H,49H,4AH,0
----------------------------------------END
Câu 7:
a.Vẽ sơ đồ giao tiếp MCU8051 với DIP-SW8 ở Port1,SW nhấn với P2.0 và cổng nối tiếp
với IC shift register 74LS164.Viết chương trình đọc data từ DIP-SW khi có phím nhấn(tích
cực mức 0-chống rung phím),xuất data đọc được ra cổng nối tiếp để shift ra shift reg.
b. Vẽ sơ đồ giao tiếp MCU8051 với barled 8 led ở Port1,SW nhấn với P2.0,cổng nối tiếp
với IC
shift reg. 74LS165.Viết một chương trình khi có SW nhấn(tích cực mức 0-chống rung
phím)
nạp data từ 8 input của shift reg. và shift data vào cổng nối tiếp,sau đó xuất data thu được
ra
Port1.
Bài làm
a)
ORG 00H
SW EQU P2.0
STA EQU P2.1
MOV SCON,#00000010B
CHECK: MOV R7,#50
LAP: JB SW,CHECK
DJNZ R7,LAP
CLR STA
SETB STA
JNB TI,$
CLR TI
MOV A,P1
MOV SBUF,A
JMP CHECK
END
b) SW BIT
START
P2.0
BIT P2.1
BAR_LED EQU P1
ORG 00H
MOV SCON,#00010010B ;MODE 0 BAUDRAT=DAO DONG NOI /12;
CHO PHEP THU
CHECK:
MOV R7,#50
LAP: JB
SW,CHECK
DJNZ R7,LAP
CLR START
SETB START
JNB RI,$
CLR RI
MOV A,SBUF
MOV BAR_LED,A
JMP CHECK
END