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.
ĐẠ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 Giảng viên hướng dẫn: Lưu Phú TP HCM, ngày tháng 05 năm 2020 Câu 1: Viết chương trình xuất chuỗi xung vuông đối xứng tần số 8Khz P1.0, tần số 500Hz P1.1 sử dụng ngắt Timer ;P1.0: XUNG 8KHZ => DEM 62.5US => TIMER0 MODE (AUTORELOAD 8BIT) ;P1.1: XUNG 500HZ => DEM 1000US => TIMER1 MODE 16BIT ; ORG 0000H ;diem vao reset LJMP MAIN ORG 000BH ;dia chi vector timer LJMP T0ISR ORG 001BH ;dia chi vector timer LJMP T1ISR ORG 0030H MAIN: MOV TMOD,#12H ;timer mod 1,timer mode MOV TL0,#-63 MOV TH0,#-63 SETB TR0 SETB TF1 ;ep timer tao ngat MOV IE,#8AH ;cho phep ngat cua hai timer SJMP $ ; T0ISR: CPL P1.0 RETI ; T1ISR: CLR TR1 MOV TH1,#HIGH(-1000) MOV TL1,#LOW(-1000) SETB TR1 CPL P1.1 RETI ; END Câu 2: Viết chương trình sử dụng ngắt tạo chuỗi xung vng đối xứng tần số fs=20Hz điều chế sóng mang chuỗi xung vuông đối xứng tần số fc=38Khz hình vẽ ;XUNG VUONG DOI XUNG 20HZ DIEU CHE SONG MANG XUNG 38KHZ ; ORG 0000H LJMP MAIN ORG 000BH ;dia chi vector cua T0 LJMP T0ISR ORG 001BH ;dia chi vector cua T1 CPL P1.0 RETI ; ORG 0030H MAIN: CLR P1.0 MOV TMOD,#21H ;timer1 mode2 timer0 mod1 MOV TH1,#-13 ;tao xung 38kHz MOV TL1,#-13 ;tao xung 38kHz SETB TR0 SETB TF0 ;ep ngat timer SETB EA ;cho phep ngat toan cuc SETB ET0 ;cho phep ngat timer0 SJMP $ T0ISR: CLR P1.0 CLR TR0 ;tat timer0 MOV TH0,#HIGH(-25000);tao xung 20Hz MOV TL0,#LOW(-25000) ;tao xung 20Hz CPL TR1 ;timer1 dang tat => bat; bat=>tat CPL ET1 SETB R0 RETI END Câu 3: Viết chương trình tạo chuỗi xung mã hóa bit data (nhập từ nibble thấp P2)điều chế sóng mang tần số 38Khz thời gian mức1(tương tự 2) hình đây, xuất chuỗi xung nối tiếp P1.0 Chu kỳ T=50ms,bit Tp=3/4T,bit Tp=1/4T,bit sync Tp=1/2T kết thúc chuỗi xung,Tp thời gian mức 1,MSB truyền trước.Ví dụ hình mạch mã hóa bit 0101 ORG 0000H LJMP MAIN ORG 000BH LJMP T0_ISR ORG 001BH LJMP T1_ISR ; -ORG 0030H MAIN: MOV R1,#5 MOV LCALL SETB SETB SETB SETB SJMP ; -CHECKP2: MOV MOV ANL SWAP RET ; -COND: RLC A JC MOV MOV SJMP ONE: MOV MOV CHECKSYNC: DJNZ R1,KT SYNC: MOV MOV MOV LCALL KT: RET ; T0_ISR: LCALL SETB CLR JC CLR CLR SKIP: MOV MOV TMOD,#11H CHECKP2 TF0 TF1 EA ET0 $ P2,#0FH A,P2 A,#0FH A ONE R6,#HIGH(-12500) ;ZIP R7,#LOW(-12500) CHECKSYNC R6,#HIGH(-37500) R7,#LOW(-37500) R6,#HIGH(-25000) R7,#LOW(-25000) R1,#5 CHECKP2 COND ET1 TR0 SKIP P1.0 ET1 TL0,R6 TH0,R7 SETB RETI ; T1_ISR: CLR MOV MOV SETB CPL RETI END TR0 TR1 TL1,#LOW(-13) TH1,#HIGH(-13) TR1 P1.0 Câu 4: Viết chương trình tạo chuỗi xung mã hóa bit data (nhập từ nibble thấp P2)điều chế sóng mang tần số 38Khz thời gian mức1(tương tự 2) hình đây, xuất chuỗi xung nối tiếp P1.0 Thiết kế mạch đo độ rộng xung có Tmax=10000µs.Hiển thị giá trị đo digit LED đoạn.Hiển thị LED cảnh báo T>10000µs - Vẽ sơ đồ phần cứng - Chương trình chuyển đổi số nhị phân sang BCD hiển thị giá trị đo T - Sử dụng ngắt đọc giá trị đo T Bài làm: Sơ đồ phần cứng: Bài làm sử dụng chương trình HEX16_BCD, DIV16, SCANLED dựng từ chương trước ORG LJMP 0000H MAIN LJMP EX0ISR ORG 0013H LJMP EX1ISR ORG 0030H MAIN: SETB IT1 SETB IT0 MOV TMOD,#10H MOV IE,#85H LCALL SCAN_LED SJMP $ ; -BAOTRAN: ;TRAN THI CHI BAO LED DON MOV A,TH1 CJNE A,#27H,$+3 JC ZIP MOV A,TL1 CJNE A,#10H,$+3 JC ZIP CLR P1.7 ZIP: RET ; -EX0ISR: MOV TL1,#0 MOV TH1,#0 SETB TR1 RETI EX1ISR: CLR TR1 LCALL BAOTRAN JNB P1.7,KT MOV A,TL1 MOV R2,TH1 LCALL HEX16_BCD LCALL SCAN_LED KT: MOV DPTR,#1000H; TATLED MOV A,#0FFH MOVX @DPTR,A CLR ET1 CLR ET0 RETI Câu 5: Viết chương trình sử dụng ngắt Timer cổng nối tiếp 1s phát data nhập từ DIP-SW8 Port Cho fosc=11.059Mhz,baurate=9600 COUNT EQU -48400 ORG LJMP MAIN ORG 000BH ;timer0 vector LJMP TIMER0_ISR ORG 0023H ;serialport vector LJMP SP_ISR ; -ORG 0030H MAIN: MOV TMOD,#21H ;timer1 tao baudrate timer0 dem 1s MOV TL1,#-3 ;baudrate 9600 MOV TH1,#-3 SETB TR1 ;chay timer1 MOV SCON,#52H ;cho phep truyen MOV R0,#20 ;50000x20=1s SETB TF0 ;ki thuat ep' ngat timer SETB TR0 SETB EA SETB ET0 LOOP: CJNE R0,#0,LOOP ;lap de tao 1s MOV R0,#20 SJMP LOOP ; -TIMER0_ISR: CLR TR0 DJNZ R0,SKIP ;chua duoc 1s thi bo qua MOV A,P2 ;doc dipswitch SETB ES ;cho phep ngat serial port SKIP: MOV TH0,#HIGH(COUNT) MOV TL0,#LOW(COUNT) SETB TR0 RETI ; -SP_ISR: MOV SBUF,A CLR TI CLR ES ;tat' ngat serial port RETI ; -END Câu 6: Viết chương trình sử dụng ngắt cổng nối tiếp thu data hiển thị data barled8 kết nối Port1.Cho fosc=11.059Mhz,baurate=9600 Mô kết hợp ORG LJMP MAIN ORG 0023H LJMP SP_ISR ; -ORG 0030H MAIN: MOV TMOD,#20H MOV TL1,#-3 MOV TH1,#-3 SETB TR1 MOV SCON,#52H SETB EA SETB ES SJMP $ ; -SP_ISR: MOV A,SBUF MOV P1,A CLR RI RETI ; -END ;serialport vector ;timer1 tao baudrate ;baudrate 9600 ;chay timer1 ;cho phep truyen ;cho phep ngat toan cuc ;cho phep ngat serial ;dua kq barled8 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 ngắt,DIPSW3 chọn kênh chuyển đổi AD,LCD 16x2.Viết chương trình đọc data từ ngõ vào analog chọn, hiển thị giá trị data kênh tương ứng LCD Chương trình có sử dụng chương trình LCD dựng chương trước OE BIT P3.0 ALE BIT P3.1 START BIT P3.4 RS BIT P3.5 RW BIT P3.6 E BIT P3.7 DBUS EQU P1 ; ORG 0000H LJMP MAIN ORG 0003H LJMP EX0_ISR ; -;CHUONG TRINH CHINH MAIN: LCALL CLEAR ;XOA MAN HINH LCD LCALL INIT ;KHOI DONG LCD MOV IE,#81H ;CHO PHEP NGAT TOAN CUC VA NGAT NGOAI0 SETB IT0 ;NGAT CANH XUONG LOOP: SETB ALE SETB START CLR ALE ;XUAT XUNG ALE CHOT DIA CHI KENH CLR START ;XUAT XUNG START BAT DAU CHUYEN DOI L: MOV A,#80H LCALL WRITECOM LCALL XUATCHUOI1 MOV A,40H LCALL XULY ;XU LY KET QUA LCALL XUATCHUOI2 SJMP LOOP ; -;TRINH NGAT NGOAI EX0_ISR: SETB OE ;CHO PHEP NGO RA MOV A,P2 ;LAY KET QUA MOV 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 MUL AB 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,#30H LCALL WRITETEXT MOV A,#"." LCALL WRITETEXT ;XUAT DAU (.) THAP PHAN MOV A,B ANL A,#11110000B SWAP A ADD A,#30H LCALL WRITETEXT MOV A,B ANL A,#00001111B ADD A,#30H LCALL WRITETEXT MOV A,#"V" LCALL WRITETEXT RET ; -;XUAT CHUOI KI TU "GIA TRI DO DUOC LA:" XUATCHUOI1: PUSH ACC MOV DPTR,#TAB1 TTUC: CLR A MOVC A,@A+DPTR INC DPTR LCALL WRITETEXT JNZ TTUC POP ACC RET ; -;XUAT CHUOI KI TU "GIA TRI DO DUOC LA:" XUATCHUOI2: PUSH ACC MOV A,#0C0H LCALL WRITECOM MOV DPTR,#TAB2 TTUC1: CLR A MOVC A,@A+DPTR INC DPTR LCALL WRITETEXT JNZ TTUC1 MOV A,P0 ANL A,#00000111B ADD A,#30H LCALL WRITETEXT POP ACC RET ; -TAB1: DB "GIA TRI:",0 TAB2: DB "KENH:",0 END Câu 8: Lập lại tập 4.6 sử dụng ngắt có bốn phím nhấn thực hiển thị barled8 tương ứng ORG LJMP LJMP ORG MAIN: MOV CUC, NGAT NGOAI INT0 SETB CONTINUE: CLR CJNE LJMP TIEP1: CJNE LJMP TIEP2: CJNE LJMP TIEP3: CJNE LJMP ; -MODE1: MOV SJMP ; -MODE2: MOV LCALL MOV LCALL SJMP ; MODE3: MOV MOV XOAY2: MOV XOAY1: MOV LCALL 0000H MAIN ISR 0030H IE,#81H ;CHO PHEP NGAT TOAN IT0 ;NGAT CANH XUONG C A, #00001110B, TIEP1 MODE1 ;NHAY VAO CHE DO A, #00001101B, TIEP2 MODE2 ;NHAY VAO CHE DO A, #00001011B, TIEP3 MODE3 ;NHAY VAO CHE DO A, #00000111B, CONTINUE MODE4 ;NHAY VAO CHE DO P2, #0 CONTINUE ;SANG TAT CA CAC LED P2,#00000000B;CHOP NHAY CAC LED DELAY500MS P2,#11111111B DELAY500MS CONTINUE R0,A ;CAT GIA TRI A A, #01H R0,#8 P2,A DELAY500MS JC EXIT1 ;NEU CO C=1 => CO PHIM NHAN => KT DE CHUYEN QUA MODE KHAC RL A ;NEU KO THAY DOI THI TIEP TUC DICH BIT DJNZ R0, XOAY1 SJMP XOAY2 MOV A,R0 EXIT1: JMP CONTINUE ;TRO VE KIEM TRA A ; MODE4: MOV R0,A MOV A, #01111111B XOAY4: MOV R0,#8 XOAY3: MOV P2,A LCALL DELAY500MS JC EXIT2 RR A DJNZ R0, XOAY3 SJMP XOAY4 MOV A,R0 EXIT2: SJMP CONTINUE ; DELAY500MS: MOV R7,#2 LAP1: MOV R6,#250 LAP2: MOV R5,#250 LAP3: DJNZ R5,LAP3 DJNZ R6,LAP2 DJNZ R7,LAP1 RET ; ISR: MOV A,P1 ;DOC SWITCH ANL A,#0FH ;LAY BIT THAP SETB C ;DUNG CO C DE NHAN BIET CO THAY DOI (KHONG DUNG A) RETI END ... R6,#HIGH(-12500) ;ZIP R7,#LOW(-12500) CHECKSYNC R6,#HIGH(- 375 00) R7,#LOW(- 375 00) R6,#HIGH(-25000) R7,#LOW(-25000) R1,#5 CHECKP2 COND ET1 TR0 SKIP P1.0 ET1 TL0,R6 TH0,R7 SETB RETI ; ... - Chương trình chuyển đổi số nhị phân sang BCD hiển thị giá trị đo T - Sử dụng ngắt đọc giá trị đo T Bài làm: Sơ đồ phần cứng: Bài làm sử dụng chương trình HEX16_BCD, DIV16, SCANLED dựng từ chương. .. giá trị data kênh tương ứng LCD Chương trình có sử dụng chương trình LCD dựng chương trước OE BIT P3.0 ALE BIT P3.1 START BIT P3.4 RS BIT P3.5 RW BIT P3.6 E BIT P3 .7 DBUS EQU P1 ;