Giải bài tập vi xử lý chương 7 Lưu Phú full

23 526 9
Giải bài tập vi xử lý chương 7 Lưu Phú full

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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Ú Câu 1: Viết chương trình xuất chuỗi xung vng đố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 ; - MAIN: ORG 0000H ;diem vao reset LJMP MAIN ORG 000BH LJMP T0ISR ORG 001BH LJMP T1ISR ORG 0030H MOV TMOD,#12H MOV TL0,#-63 MOV TH0,#-63 SETB TR0 SETB TF1 ;ep timer tao ngat MOV IE,#8AH ;cho phep ngat cua hai timer SJMP $ ;dia chi vector timer ;dia chi vector timer ;timer mod 1,timer mode ; - 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 vuông đối xứng tần số fs=20Hz điều chế sóng mang chuỗi xung vng đố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 LJMP T0ISR ORG 001BH CPL P1.0 ;dia chi vector cua T0 ;dia chi vector cua T1 RETI ; - MAIN: ORG 0030H 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 $ CLR P1.0 CLR TR0 MOV TH0,#HIGH(-25000) ;tao xung 20Hz MOV TL0,#LOW(-25000) ;tao xung 20Hz CPL TR1 CPL ET1 SETB R0 T0ISR: RETI END ;tat timer0 ;timer1 dang tat => bat; bat=>tat 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 MOV R1,#5 MOV TMOD,#11H LCALL CHECKP2 SETB TF0 SETB TF1 SETB EA SETB ET0 MAIN: SJMP $ ; -CHECKP2: MOV P2,#0FH MOV A,P2 ANL A,#0FH SWAP A RET ; -COND: RLC A JC ONE MOV R6,#HIGH(-12500) ;ZIP MOV R7,#LOW(-12500) SJMP CHECKSYNC MOV R6,#HIGH(-37500) MOV R7,#LOW(-37500) ONE: CHECKSYNC: DJNZ R1,KT SYNC: MOV R6,#HIGH(-25000) MOV R7,#LOW(-25000) MOV R1,#5 LCALL KT: CHECKP2 RET ; T0_ISR: LCALL COND SETB ET1 CLR TR0 JC SKIP CLR P1.0 CLR ET1 MOV TL0,R6 MOV TH0,R7 SETB TR0 SKIP: RETI ; T1_ISR: CLR TR1 MOV TL1,#LOW(-13) MOV TH1,#HIGH(-13) SETB TR1 CPL P1.0 RETI END 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 MAIN: ORG 0000H LJMP MAIN LJMP EX0ISR ORG 0013H LJMP EX1ISR ORG 0030H SETB IT1 SETB IT0 MOV TMOD,#10H MOV IE,#85H LCALL SCAN_LED SJMP $ ; -BAOTRAN: ;TRAN THI CHI BAO LED DON ZIP: MOV A,TH1 CJNE A,#27H,$+3 JC ZIP MOV A,TL1 CJNE A,#10H,$+3 JC ZIP CLR P1.7 RET ; -EX0ISR: MOV TL1,#0 MOV TH1,#0 SETB TR1 RETI EX1ISR: KT: CLR TR1 LCALL BAOTRAN JNB P1.7,KT MOV A,TL1 MOV R2,TH1 LCALL HEX16_BCD LCALL SCAN_LED 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 LJMP TIMER0_ISR ORG 0023H LJMP SP_ISR ;timer0 vector ;serialport vector ; MAIN: ORG 0030H MOV TMOD,#21H ;timer1 tao baudrate timer0 dem MOV TL1,#-3 MOV TH1,#-3 SETB TR1 MOV SCON,#52H ;cho phep truyen MOV R0,#20 ;50000x20=1s SETB TF0 ;ki thuat ep' ngat timer SETB TR0 SETB EA 1s ;baudrate 9600 ;chay timer1 LOOP: SETB ET0 CJNE R0,#0,LOOP ;lap de tao 1s MOV R0,#20 SJMP LOOP ; -TIMER0_ISR: SKIP: CLR TR0 DJNZ R0,SKIP MOV A,P2 SETB ES MOV TH0,#HIGH(COUNT) MOV TL0,#LOW(COUNT) SETB TR0 ;chua duoc 1s thi bo qua ;doc dipswitch ;cho phep ngat serial port RETI ; -SP_ISR: MOV SBUF,A CLR TI CLR ES RETI ; -END ;tat' ngat serial port 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 ;serialport vector ; MAIN: ORG 0030H MOV TMOD,#20H;timer1 tao baudrate MOV TL1,#-3 MOV TH1,#-3 SETB TR1 MOV SCON,#52H ;cho phep truyen SETB EA ;cho phep ngat toan cuc SETB ES ;cho phep ngat serial SJMP $ ;baudrate 9600 ;chay timer1 ; -SP_ISR: MOV A,SBUF MOV P1,A CLR RI RETI ;dua kq barled8 ; -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 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 SETB IT0 ;NGAT CANH XUONG SETB ALE SETB START CLR ALE ;XUAT XUNG ALE CHOT DIA CHI CLR START VA NGAT NGOAI0 LOOP: KENH ;XUAT XUNG START BAT DAU CHUYEN DOI L: MOV A,#80H LCALL WRITECOM LCALL XUATCHUOI1 MOV A,40H LCALL XULY LCALL XUATCHUOI2 SJMP LOOP ;XU LY KET QUA ; -;TRINH NGAT NGOAI EX0_ISR: SETB OE ;CHO PHEP NGO RA MOV A,P2 MOV 40H,A ;LAY KET QUA RETI ; -;CHUONG TRINH CON XU LY KET QUA VA XUAT KET QUA XULY: MOV B,#195 ;NHAN A VOI 19.5mV DE CO MUL AB MOV R2,B LCALL HEX16_BCD KQ BAN DAU ;KQ LA SO 16BIT (R2_A) ;KQ LA SO BCD LUU TRONG (R2_B_A) MOV A,R2 ;XUAT CHU SO PHAN ADD A,#30H LCALL WRITETEXT MOV A,#"." LCALL WRITETEXT MOV A,B ANL A,#11110000B SWAP A ADD A,#30H LCALL WRITETEXT NGUYEN PHAN ;XUAT DAU (.) THAP 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: TTUC: PUSH ACC MOV DPTR,#TAB1 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 TTUC1: MOV A,#0C0H LCALL WRITECOM MOV DPTR,#TAB2 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 MAIN: ORG 0000H LJMP MAIN LJMP ISR ORG 0030H MOV IE,#81H ;CHO PHEP NGAT TOAN CUC, NGAT NGOAI INT0 CONTINUE: TIEP1: TIEP2: TIEP3: SETB IT0 ;NGAT CANH XUONG CLR C CJNE A, #00001110B, TIEP1 LJMP MODE1 CJNE A, #00001101B, TIEP2 LJMP MODE2 CJNE A, #00001011B, TIEP3 LJMP MODE3 CJNE A, #00000111B, CONTINUE LJMP MODE4 ;NHAY VAO CHE DO ;NHAY VAO CHE DO ;NHAY VAO CHE DO ;NHAY VAO CHE DO ; -MODE1: MOV P2, #0 ;SANG TAT CA CAC LED SJMP CONTINUE ; -MODE2: MOV P2,#00000000B;CHOP NHAY CAC LED LCALL DELAY500MS MOV P2,#11111111B LCALL DELAY500MS SJMP CONTINUE ; MODE3: MOV R0,A ;CAT GIA TRI A MOV A, #01H XOAY2: MOV R0,#8 XOAY1: MOV P2,A LCALL 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 DJNZ R0, XOAY1 SJMP XOAY2 MOV A,R0 JMP CONTINUE ;TRO VE KIEM TRA A DICH BIT EXIT1: ; 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 SJMP CONTINUE EXIT2: ; 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 ANL A,#0FH SETB C CO THAY DOI (KHONG DUNG A) ;DOC SWITCH ;LAY BIT THAP ;DUNG CO C DE NHAN BIET RETI END ... MOV R6,#HIGH(-12500) ;ZIP MOV R7,#LOW(-12500) SJMP CHECKSYNC MOV R6,#HIGH(- 375 00) MOV R7,#LOW(- 375 00) ONE: CHECKSYNC: DJNZ R1,KT SYNC: MOV R6,#HIGH(-25000) MOV R7,#LOW(-25000) MOV R1,#5 LCALL... - 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 ;

Ngày đăng: 23/10/2020, 19:41

Từ khóa liên quan

Mục lục

  • Câ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.

  • Câ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ẽ.

  • Câ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.

  • Câ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.

  • Câ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.

  • Câ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.

  • 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.

  • Câ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.

Tài liệu cùng người dùng

Tài liệu liên quan