Viết một chương trình xuất 2 chuỗi xung vuông đối xứng tần số 8Khz ra P1.0, tần số 500Hz ra P1.1 sử dụng ngắt Timer.Viết một chương trình sử dụng ngắt tạo chuỗi xung vuông đối xứng tần số fs=20Hz điều chế sóng mang là chuỗi xung vuông đối xứng tần số fc=38Khz như hình vẽ.: Viết một chương trình tạo chuỗi xung mã hóa 4 bit data (nhập từ nibble thấp P2)điều chế sóng mang tần số 38Khz trong thời gian mức1(tương tự như bài 2) như hình dưới đây, xuất chuỗi xung nối tiếp ra P1.0.Viết một chương trình tạo chuỗi xung mã hóa 4 bit data (nhập từ nibble thấp P2)điều chế sóng mang tần số 38Khz trong thời gian mức1(tương tự như bài 2) như hình dưới đây, xuất chuỗi xung nối tiếp ra P1.0.Viết một chương trình tạo chuỗi xung mã hóa 4 bit data (nhập từ nibble thấp P2)điều chế sóng mang tần số 38Khz trong thời gian mức1(tương tự như bài 2) như hình dưới đây, xuất chuỗi xung nối tiếp ra P1.0.
Trang 1ĐẠ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 7 GIẢNG VIÊN HƯỚNG DẪN : LƯU PHÚ
Trang 2Câu 1: Viết một chương trình xuất 2 chuỗi xung vuông đối xứng tần số 8Khz ra P1.0, tần số 500Hz ra P1.1 sử dụng ngắt Timer.
;P1.0: XUNG 8KHZ => DEM 62.5US => TIMER0 MODE 2 (AUTORELOAD 8BIT)
;P1.1: XUNG 500HZ => DEM 1000US => TIMER1 MODE 1 16BIT
MOV TL0,#-63MOV TH0,#-63SETB TR0
SETB TF1 ;ep timer 1 tao ngatMOV IE,#8AH ;cho phep ngat cua hai timer
Trang 3
; -T0ISR: CPL P1.0
RETI
T1ISR: CLR TR1
; -MOV TH1,#HIGH(-1000)MOV TL1,#LOW(-1000)SETB TR1
CPL P1.1RETI
; -END
Trang 4Câu 2: Viết một chương trình sử dụng ngắt tạo chuỗi xung vuông đối xứng tần số fs=20Hz điều chế sóng mang là chuỗi xung vuông đối xứng tần số fc=38Khz như hình vẽ.
;XUNG VUONG DOI XUNG 20HZ DIEU CHE SONG MANG XUNG 38KHZ
; -ORG 0000HLJMP MAINORG 000BH ;dia chi vector cua T0LJMP T0ISR
ORG 001BH ;dia chi vector cua T1CPL P1.0
RETI
; -ORG 0030HMAIN: CLR P1.0
MOV TMOD,#21H;timer1 mode2 timer0 mod1MOV TH1,#-13 ;tao xung 38kHz
MOV TL1,#-13 ;tao xung 38kHzSETB TR0
SETB TF0 ;ep ngat timer 0SETB EA ;cho phep ngat toan cuc
Trang 5SETB ET0 ;cho phep ngat timer0
T0ISR:
CLR P1.0CLR TR0 ;tat timer0MOV TH0,#HIGH(-25000) ;tao xung 20HzMOV TL0,#LOW(-25000) ;tao xung 20HzCPL TR1 ;timer1 dang tat => bat; bat=>tat
RETIEND
Trang 6Câu 3: Viết một chương trình tạo chuỗi xung mã hóa 4 bit data (nhập từ nibble thấp P2)điều chế sóng mang tần số 38Khz trong thời gian mức1(tương tự như bài 2) như hình dưới đây, xuất chuỗi xung nối tiếp ra P1.0.
Chu kỳ T=50ms,bit 1 Tp=3/4T,bit 0 Tp=1/4T,bit sync Tp=1/2T kết thúc chuỗi
xung,Tp là thời gian mức 1,MSB truyền trước.Ví dụ trong hình trên mạch mã hóa 4 bit 0101.
ORG 0000HLJMP MAINORG 000BHLJMP T0_ISRORG 001BHLJMP T1_ISR
; -ORG 0030HMAIN:
MOV R1,#5MOV TMOD,#11H LCALL CHECKP2SETB TF0
SETB TF1SETB EASETB ET0
Trang 7SJMP $
; -CHECKP2:
MOV P2,#0FHMOV A,P2ANL A,#0FHSWAP A
MOV R6,#HIGH(-37500)MOV R7,#LOW(-37500)CHECKSYNC: DJNZ R1,KT
SYNC:
MOV R6,#HIGH(-25000)MOV R7,#LOW(-25000)MOV R1,#5
Trang 8LCALL CHECKP2KT: RET
; -T0_ISR:
LCALL CONDSETB ET1CLR TR0
JC SKIPCLR P1.0CLR ET1SKIP:
MOV TL0,R6MOV TH0,R7SETB TR0RETI
; -T1_ISR:
CLR TR1MOV TL1,#LOW(-13)MOV TH1,#HIGH(-13)SETB TR1
CPL P1.0RETI
Trang 9Câu 4: Viết một chương trình tạo chuỗi xung mã hóa 4 bit data (nhập từ nibble thấp P2)điều chế sóng mang tần số 38Khz trong thời gian mức1(tương tự như bài 2) như hình dưới đây, xuất chuỗi xung nối tiếp ra P1.0.
Thiết kế một mạch đo độ rộng xung có Tmax=10000µs.Hiển thị giá trị đo 4 digit bằng LED 7 đoạn.Hiển thị LED cảnh báo khi T>10000µs
Trang 10ORG 0000HLJMP MAINLJMP EX0ISRORG 0013HLJMP EX1ISRORG 0030HMAIN: SETB IT1
SETB IT0MOV TMOD,#10HMOV IE,#85HLCALL SCAN_LED
; -BAOTRAN: ;TRAN THI CHI BAO LED DON
MOV A,TH1CJNE A,#27H,$+3
MOV A,TL1CJNE A,#10H,$+3
CLR P1.7ZIP: RET
Trang 11; -EX0ISR: MOV TL1,#0
MOV TH1,#0SETB TR1RETI
EX1ISR: CLR TR1
LCALL BAOTRANJNB P1.7,KTMOV A,TL1MOV R2,TH1LCALL HEX16_BCDLCALL SCAN_LEDKT: MOV DPTR,#1000H; TATLED
MOV A,#0FFHMOVX @DPTR,ACLR ET1
RETI
Trang 12Câu 5: Viết một chương trình sử dụng ngắt Timer và cổng nối tiếp cứ mỗi 1s phát data nhập từ DIP-SW8 ở Port 2 Cho fosc=11.059Mhz,baurate=9600.
COUNT EQU -48400
LJMP MAINORG 000BH ;timer0 vectorLJMP TIMER0_ISR
ORG 0023H ;serialport vectorLJMP SP_ISR
; -ORG 0030HMAIN: MOV TMOD,#21H ;timer1 tao baudrate timer0 dem 1s
MOV TL1,#-3 ;baudrate 9600MOV TH1,#-3
SETB TR1 ;chay timer1MOV SCON,#52H ;cho phep truyenMOV R0,#20 ;50000x20=1sSETB TF0 ;ki thuat ep' ngat timer 0SETB TR0
Trang 13SETB ET0LOOP: CJNE R0,#0,LOOP ;lap de tao 1s
MOV R0,#20SJMP LOOP
Trang 14Câu 6: Viết một chương trình sử dụng ngắt cổng nối tiếp thu data và hiển thị data
ra barled8 kết nối ở Port1.Cho fosc=11.059Mhz,baurate=9600 Mô phỏng bài 5
và 6 kết hợp.
LJMP MAINORG 0023H ;serialport vectorLJMP SP_ISR
; -ORG 0030HMAIN: MOV TMOD,#20H;timer1 tao baudrate
MOV TL1,#-3 ;baudrate 9600MOV TH1,#-3
SETB TR1 ;chay timer1MOV SCON,#52H ;cho phep truyenSETB EA ;cho phep ngat toan cucSETB ES ;cho phep ngat serial
; -SP_ISR: MOV A,SBUF
MOV P1,A ;dua kq ra barled8
RETI
Trang 15; -END
Câu 7: Vẽ sơ đồ MCU8051 kết nối trực tiếp với ADC0808,nhận dạng kết thúc chuyển đổi AD bằng ngắt,DIPSW3 chọn kênh chuyển đổi AD,LCD 16x2.Viết một chương trình đọc data từ ngõ vào analog đã chọn, hiển thị giá trị data và kênh tương ứng trên LCD.
Chương trình có sử dụng các chương trình con về LCD đã được dựng ở các chương trước
Trang 16
; -;CHUONG TRINH CHINH
MAIN: LCALL CLEAR ;XOA MAN HINH LCD
LCALL INIT ;KHOI DONG LCDMOV IE,#81H ;CHO PHEP NGAT TOAN CUC
VA NGAT NGOAI0
SETB IT0 ;NGAT CANH XUONGLOOP: SETB ALE
SETB STARTCLR ALE ;XUAT XUNG ALE CHOT DIA CHI KENH
CLR START ;XUAT XUNG START BAT DAU CHUYEN DOI
LCALL WRITECOMLCALL XUATCHUOI1MOV A,40H
LCALL XULY ;XU LY KET QUALCALL XUATCHUOI2
Trang 17MOV A,P2 ;LAY KET QUAMOV 40H,A
RETI
; -;CHUONG TRINH CON XU LY KET QUA VA XUAT KET QUA
XULY: MOV B,#195 ;NHAN A VOI 19.5mV DE CO
KQ BAN DAU
MOV R2,B ;KQ LA SO 16BIT (R2_A)LCALL HEX16_BCD ;KQ LA SO BCD LUU TRONG (R2_B_A)
MOV A,R2 ;XUAT CHU SO PHAN NGUYEN
ADD A,#30HLCALL WRITETEXTMOV A,#"."
LCALL WRITETEXT ;XUAT DAU (.) THAP PHAN
ANL A,#11110000B
ADD A,#30HLCALL WRITETEXT
Trang 18MOV A,BANL A,#00001111BADD A,#30H
LCALL WRITETEXTMOV A,#"V"
LCALL WRITETEXTRET
; -;XUAT CHUOI KI TU "GIA TRI DO DUOC LA:"
XUATCHUOI1:
PUSH ACCMOV DPTR,#TAB1
Trang 19MOV A,#0C0HLCALL WRITECOMMOV DPTR,#TAB2TTUC1: CLR A
MOVC A,@A+DPTR
LCALL WRITETEXTJNZ TTUC1
MOV A,P0ANL A,#00000111BADD A,#30H
LCALL WRITETEXT
RET
TAB1: DB "GIA TRI:",0TAB2: DB "KENH:",0
; -END
Trang 20Câu 8: Lập lại bài tập 4.6 sử dụng ngắt khi có một trong bốn phím nhấn và thực hiện hiển thị ra barled8 tương ứng.
ORG 0000HLJMP MAINLJMP ISRORG 0030HMAIN: MOV IE,#81H ;CHO PHEP NGAT TOAN CUC, NGAT NGOAI INT0
SETB IT0 ;NGAT CANH XUONGCONTINUE: CLR C
CJNE A, #00001110B, TIEP1LJMP MODE1 ;NHAY VAO CHE DO 1TIEP1: CJNE A, #00001101B, TIEP2
LJMP MODE2 ;NHAY VAO CHE DO 2TIEP2: CJNE A, #00001011B, TIEP3
LJMP MODE3 ;NHAY VAO CHE DO 3TIEP3: CJNE A, #00000111B, CONTINUE
LJMP MODE4 ;NHAY VAO CHE DO 4
; -MODE1: MOV P2, #0 ;SANG TAT CA CAC LED
Trang 21SJMP CONTINUE
; -MODE2: MOV P2,#00000000B;CHOP NHAY CAC LED
LCALL DELAY500MSMOV P2,#11111111BLCALL DELAY500MSSJMP CONTINUE
; -MODE3: MOV R0,A ;CAT GIA TRI A
MOV A, #01HXOAY2: MOV R0,#8
XOAY1: MOV P2,A
; -MODE4: MOV R0,A
Trang 22MOV A, #01111111BXOAY4: MOV R0,#8
XOAY3: MOV P2,A
LCALL DELAY500MS
DJNZ R0, XOAY3SJMP XOAY4MOV A,R0EXIT2: SJMP CONTINUE
; -ISR: MOV A,P1 ;DOC SWITCH
ANL A,#0FH ;LAY 4 BIT THAPSETB C ;DUNG CO C DE NHAN BIET
CO THAY DOI (KHONG DUNG A)
Trang 23RETIEND