Chương trình vi điều khiển
Bạn đang xem 20 trang mẫu của tài liệu "Chương trình vi điều khiển", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- chuong_trinh_vi_dieu_khien.pdf
Nội dung text: Chương trình vi điều khiển
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 1 ; VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 2 TUYEN DUONG BEN B1 TUYEN DUONG BEN A1 TUYEN DUONG BEN B2 TUYEN DUONG BEN A2 QA QB QC QD QE QF QG AD6 AD7 QA QB QC QD QE QF QG AD4 AD5 QA QB QC QD QE QF QG AD4 AD5 QA QB QC QD QE QF QG AD6 AD7 QA QB QC QD QE QF QG 14 13 12 9 11 10 15 U2 QF QA QB QE QC QD QG 4511 A B C D LT BI LE/STB R0 10k 5 7 1 2 6 3 4 C101 C102 VCC 30p 30p AD0 AD1 AD2 AD3 X1 R1 DRT1 U1 100 VCC 9 AD0 AD0 39 19 C103 P0.0/AD0 XTAL1 8 AD1 AD1 38 P0.1/AD1 12MHz 7 AD2 AD2 37 P0.2/AD2 6 AD3 AD3 36 18 10u TUYEN DUONG A P0.3/AD3 XTAL2 5 AD4 AD4 35 P0.4/AD4 4 AD5 AD5 34 P0.5/AD5 VCC 3 AD6 AD6 33 P0.6/AD6 2 AD7 AD7 32 9 P0.7/AD7 RST VCC 1 21 DRT2 P2.0/A8 Q1 22 10K P2.1/A9 2N2369 10K 23 P2.2/A10 24 29 P2.3/A11 PSEN 25 30 P2.4/A12 ALE VCC 26 31 1 2 3 4 5 6 7 8 9 P2.5/A13 EA 27 P2.6/A14 28 P2.7/A15 Q2 R2 4k7 2N2369 10 1 P3.0/RXD P1.0 R4 4k7 11 2 P3.1/TXD P1.1 R3 4k7 12 3 P3.2/INT0 P1.2 R5 4k7 13 4 P3.3/INT1 P1.3 R6 4k7 14 5 P3.4/T0 P1.4 R7 4k7 15 6 P3.5/T1 P1.5 Q3 16 7 P3.6/WR P1.6 2N2369 17 8 P3.7/RD P1.7 80C51 TUYEN DUONG B Q4 2N2369 Q5 2N2369 Q6 2N2369 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 3 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 4 CHƯƠNG TRÌNH CHẠY HAI CHẾ ĐỘ AUTO VÀ HANDDY ;chuong trinh den giao thong 2 che do co hien thi thoi gian ra led 7 doan ;Nguoi viet :VUONG VAN HUNG ;Ngay viet :20/06/2008 ;=== TGA DATA 7CH CHUCA DATA 2EH DONVIA DATA 7DH TGB DATA 7EH DONVIB DATA 7FH CHUCB DATA 2FH ;=== ORG 0000H INIT: MOV TMOD,#01H MOV P1,#00H ;=== ;Chuong trinh chinh MAIN: ; ; Do A va Xanh b sang ; DAXB_AUTO: CLR P1.3 CLR P1.1 MOV TGA,#20 MOV TGB,#17 SETB P1.0 SETB P1.5 ;=== LAPXB: JNB P3.0,DAXB_HANDDY ; neu p3.0 o muc thap (0) thi chay Auto CALL DELAY1S ; con p3.0 o muc cao (1) thi chay Handdy DEC TGA DJNZ TGB,LAPXB ;=== ; Do A va vang B sang ; DAVB_AUTO: CLR P1.5 SETB P1.4 MOV TGB,#3 ;=== LAPVB: JNB P3.0,XADB_HANDDY ; neu p3.0 o muc thap (0) thi chay Auto CALL DELAY1S ; con p3.0 o muc cao (1) thi chay Handdy DEC TGA VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 5 DJNZ TGB,LAPVB ;=== ; Xanh A va Do B sang ; XADB_AUTO: CLR P1.0 CLR P1.4 SETB P1.2 SETB P1.3 MOV TGA,#26 MOV TGB,#30 ;=== LAPXA: JNB P3.0,XADB_HANDDY ; neu p3.0 o muc thap (0) thi chay Handdy CALL DELAY1S ; con p3.0 o muc cao (1) thi chay AuTo DEC TGB DJNZ TGA,LAPXA ;=== ;Vang A va Do B sang ; VADB_AUTO: CLR P1.2 SETB P1.1 MOV TGA,#4 ;=== LAPVA: JNB P3.0,DAXB_HANDDY ;||Ỵ neu p3.0 o muc cao (1) thi chay Auto CALL DELAY1S ;||Ỵ con p3.0 o muc thap (0) thi chay Handdy DEC TGB DJNZ TGA,LAPVA LJMP MAIN ; HANDDY: ;=== DAXB_HANDDY: MOV P0,#0FFH ; Khong cho hien thoi gian SETB P1.0 ;Do A sang SETB P1.5 ; Xanh B sang CLR P1.3 ;Tat Do B CLR P1.4 ;Tat Vang B CLR P1.2 ;Tat Xanh A JB P3.0,DAXB_AUTO ;||=>neu p3.0 = 0 thi Chay Handdy JB P3.1,DAXB_HANDDY ;||=> neu p3.0 = 1 thi chay AUTO ;||Ỵneu p3.1 = 0 thi nhay XADB_HANDDY ;||Ỵneu p3.1 = 1 thi nhay DAXB_HANDDY ;=== XADB_HANDDY: MOV P0,#0FFH SETB P1.2 SETB P1.3 CLR P1.1 CLR P1.0 CLR P1.5 JB P3.0,XADB_AUTO ; ||=>neu p3.0 = 0 thi Chay Handdy JNB P3.1,XADB_HANDDY ; ||=>neu p3.0 = 1 thi chay AUTO JMP DAXB_HANDDY ;||Ỵneu p3.1 = 1 thi nhay DAXB_HANDDY ;||Ỵneu p3.1 = 0 thi nhay XADB_HANDDY VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 6 ;=== HIENTHI: CALL MAHOA MOV P0,CHUCA CALL DELAY MOV P0,DONVIA CALL DELAY MOV P0,CHUCB CALL DELAY MOV P0,DONVIB CALL DELAY RET ;=== MAHOA: MOV A,TGA MOV B,#10 DIV AB ADD A,#10110000B MOV CHUCA,A MOV A,B ADD A,#01110000B MOV DONVIA,A MOV A,TGB MOV B,#10 DIV AB ADD A,#11100000B MOV CHUCB,A MOV A,B ADD A,#11010000B MOV DONVIB,A RET ;=== DELAY1S: MOV R0,#40 LAPDELAY1S: CALL HIENTHI CALL DELAY50MS DJNZ R0,LAPDELAY1S RET ;=== DELAY50MS: MOV TH0,#HIGH(-25000) MOV TL0,#LOW(-25000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET ;=== DELAY: LOOP1: MOV R1,#10 LOOP2: MOV R2,#200 DJNZ R2,$ DJNZ R1,LOOP2 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 7 RET ;=== END ;=== CHƯƠNG TRÌNH 2: ;chuong trinh den giao thong 2 che do co hien thi thoi gian ra led 7 doan ;Nguoi viet :VUONG VAN HUNG ;Ngay viet :20/06/2008 ;=== DOA BIT P1.0 VANGA BIT P1.1 XANHA BIT P1.2 DOB BIT P1.3 VANGB BIT P1.4 XANHB BIT P1.5 TGA DATA 7CH CHUCA DATA 2EH DONVIA DATA 7DH TGB DATA 7EH DONVIB DATA 7FH CHUCB DATA 2FH ;=== ORG 0000H INIT: MOV TMOD,#01H MOV P1,#00H ;=== ;Chuong trinh chinh MAIN: ; ; Do A va Xanh b sang ; DAXB_AUTO: CLR DOB CLR VANGA MOV TGA,#20 MOV TGB,#17 SETB DOA SETB XANHB ;=== LAPXB: JNB P3.0,DAXB_HANDDY ;||Ỵ neu p3.0 =1 thi chay Auto CALL DELAY1S ;||Ỵ con p3.0 =0 thi chay Handdy DEC TGA VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 8 DJNZ TGB,LAPXB ;=== ; Do A va vang B sang ; DAVB_AUTO: CLR XANHB MOV TGB,#3 SETB VANGB ;=== LAPVB: JNB P3.0,XADB_HANDDY ;||Ỵ neu p3.0 =1 thi chay Auto CALL DELAY1S ;||Ỵ con p3.0 =0 thi chay Handdy DEC TGA DJNZ TGB,LAPVB ;=== ; Xanh A va Do B sang ; XADB_AUTO: CLR DOA CLR VANGB MOV TGA,#26 MOV TGB,#30 SETB XANHA SETB DOB ;=== LAPXA: JNB P3.0,XADB_HANDDY CALL DELAY1S DEC TGB DJNZ TGA,LAPXA ;=== ;Vang A va Do B sang ; VADB_AUTO: CLR XANHA MOV TGA,#4 SETB VANGA ;=== LAPVA: JNB P3.0,DAXB_HANDDY CALL DELAY1S DEC TGB DJNZ TGA,LAPVA LJMP MAIN ; HANDDY: ;=== DAXB_HANDDY: MOV P0,#0FFH ; Khong cho hien thoi gian SETB DOA ;Do A sang SETB XANHB ; Xanh B sang CLR DOB ;Tat Do B CLR VANGB ;Tat Vang B CLR XANHA ;Tat Xanh A JB P3.0,DAXB_AUTO ; ||Ỵneu p3.0 = 0 thi Chay Handdy VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 9 JB P3.1,DAXB_HANDDY ; ||Ỵneu p3.0 = 1 thi chay AUTO ;|| =>neu p3.1 = 1 thi nhay DAXB_HANDDY ;|| =>neu p3.1 = 0 thi nhay XADB_HANDDY ;=== XADB_HANDDY: MOV P0,#0FFH SETB XANHA SETB DOB CLR VANGA CLR DOA CLR XANHB ; || Ỵneu p3.0 = 1 thi chay AUTO JB P3.0,XADB_AUTO ; ||Ỵ neu p3.0 = 0 thi Chay Handdy JNB P3.1,XADB_HANDDY ; || =>neu p3.1 = 1 thi nhay DAXB_HANDDY JMP DAXB_HANDDY ; || =>neu p3.1 = 0 thi nhay XADB_HANDDY ;=== HIENTHI: CALL MAHOA MOV P0,CHUCA CALL DELAY MOV P0,DONVIA CALL DELAY MOV P0,CHUCB CALL DELAY MOV P0,DONVIB CALL DELAY RET ;=== MAHOA: MOV A,TGA MOV B,#10 DIV AB ADD A,#10110000B MOV CHUCA,A MOV A,B ADD A,#01110000B MOV DONVIA,A MOV A,TGB MOV B,#10 DIV AB ADD A,#11100000B MOV CHUCB,A MOV A,B ADD A,#11010000B MOV DONVIB,A RET ;=== DELAY1S: MOV R0,#40 LAPDELAY1S: CALL HIENTHI CALL DELAY50MS DJNZ R0,LAPDELAY1S RET ;=== DELAY50MS: MOV TH0,#HIGH(-25000) VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 10 MOV TL0,#LOW(-25000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET ;=== DELAY: LOOP1: MOV R1,#10 LOOP2: MOV R2,#200 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== END ;=== CHƯƠNG TRÌNH CHẠY CHẾ ĐỘ AUTO ;CHUONG TRINH DEN GIAO THONG CHAY AUTO CO HIEN THI THOI GIAN ;Nguoi viet :VUONG VAN HUNG ;Ngay viet :20/06/2008 ;=== TGA DATA 7CH CHUCA DATA 2EH DONVIA DATA 7DH TGB DATA 7EH DONVIB DATA 7FH CHUCB DATA 2FH ;=== ;Chuong trinh chinh ORG 0000H INIT: MOV TMOD,#01H MOV P1,#0H MAIN: MOV TGA,#30 MOV TGB,#25 SETB P1.0 SETB P1.5 ;=== ;Thoi gian cua Do A va Xanh B LAPXB: CALL DELAY1S VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 11 DEC TGA DJNZ TGB,LAPXB CLR P1.5 SETB P1.4 MOV TGB,#5 ;=== ;Thoi gian cua Do A va Vang B LAPVB: CALL DELAY1S DEC TGA DJNZ TGB,LAPVB CLR P1.0 CLR P1.4 SETB P1.2 SETB P1.3 MOV TGA,#18 MOV TGB,#20 ;=== ;Thoi gian cua Do B va Xanh A LAPXA: CALL DELAY1S DEC TGB DJNZ TGA,LAPXA CLR P1.2 SETB P1.1 MOV TGA,#2 ;=== ;Thoi gian cua Do B va Vang A LAPVA: CALL DELAY1S DEC TGB DJNZ TGA,LAPVA CLR P1.1 CLR P1.3 LJMP MAIN ;=== HIENTHI: CALL MAHOA MOV P0,CHUCA CALL DELAY MOV P0,DONVIA CALL DELAY MOV P0,CHUCB CALL DELAY MOV P0,DONVIB CALL DELAY RET ;=== MAHOA: MOV A,TGA MOV B,#10 DIV AB ADD A,#10110000B MOV CHUCA,A MOV A,B ADD A,#01110000B MOV DONVIA,A MOV A,TGB VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 12 MOV B,#10 DIV AB ADD A,#11100000B MOV CHUCB,A MOV A,B ADD A,#11010000B MOV DONVIB,A RET ;=== DELAY1S: MOV R0,#40 LAPDELAY1S: CALL HIENTHI CALL DELAY40MS DJNZ R0,LAPDELAY1S RET ;=== DELAY40MS: MOV TH0,#HIGH(-25000) MOV TL0,#LOW(-25000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET ;=== DELAY: LOOP1: MOV R1,#10 LOOP2: MOV R2,#200 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== END CHƯƠNG TRÌNH HỒN HIỆN HƠN 1: ;chuong trinh den giao thong 2 che do co hien thi thoi gian ra led 7 doan . ; khi TGA hay TGB nho hon 10 thi chi co LED hang don vi sang ;Nguoi viet :VUONG VAN HUNG ;Ngay viet :20/06/2008 ;=== TGA DATA 7CH CHUCA DATA 2EH DONVIA DATA 7DH TGB DATA 7EH DONVIB DATA 7FH CHUCB DATA 2FH VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 13 ;=== ORG 0000H INIT: MOV TMOD,#01H MOV P1,#00H ;=== ;Chuong trinh chinh MAIN: ; ; Do A va Xanh b sang ; DAXB_AUTO: CLR P1.3 ;Tat Do B CLR P1.1 ;Tat Vang A MOV TGA,#20 MOV TGB,#17 MOV R6,#8 SETB P1.0 ; do a sang SETB P1.5 ; Xanh B Sang ;=== LAPXB: CALL DELAY1S_1 DEC TGA DEC TGB JNB P3.0,DAXB_HANDDY ;||Ỵ Neu p3.0 = 0 thi chay Handdy DJNZ R6,LAPXB ;||Ỵ con p3.0 = 1 thi chay AUTO MOV R6,#3 LAPXB1: JNB P3.0,DAXB_HANDDY CALL DELAY1S_3 DEC TGA DEC TGB DJNZ R6,LAPXB1 LAPXB2: JNB P3.0,DAXB_HANDDY CALL DELAY1S_4 DEC TGA DJNZ TGB,LAPXB2 ;=== ; Do A va vang B sang ; DAVB_AUTO: CLR P1.5 SETB P1.4 MOV TGB,#3 ;=== LAPVB: JNB P3.0,XADB_HANDDY ;||Ỵ neu p3.0 o muc thap (0) thi chay Auto CALL DELAY1S_4 ;||Ỵ con p3.0 o muc cao (1) thi chay Handdy DEC TGA DJNZ TGB,LAPVB CALL DELAY1S_4 ;=== ; Xanh A va Do B sang VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 14 ; XADB_AUTO: CLR P1.0 CLR P1.4 SETB P1.2 SETB P1.3 MOV TGA,#25 MOV TGB,#30 MOV R6,#16 ; THAY DOI KHI TGB VA TGA THAY DOI R6 = TGA - 9 ;=== LAPXA: JNB P3.0,XADB_HANDDY ; ||=>neu p3.0 o muc thap (0) thi chay Handdy CALL DELAY1S_1 ; ||=>con p3.0 o muc cao (1) thi chay AuTo DEC TGB DEC TGA DJNZ R6,LAPXA MOV R6,#5 ; Thay Doi Khi TGB Va TGA Thay Doi R6 = TGB - TGA. LAPXA1: JNB P3.0,DAXB_HANDDY CALL DELAY1S_2 DEC TGA DEC TGB DJNZ R6,LAPXA1 LAPXA2: JNB P3.0,DAXB_HANDDY CALL DELAY1S_4 DEC TGB DJNZ TGA,LAPXA2 ;=== ;Vang A va Do B sang ; VADB_AUTO: CLR P1.2 SETB P1.1 MOV TGA,#5 ;=== LAPVA: JNB P3.0,DAXB_HANDDY ;||Ỵ neu p3.0 = 1 thi chay Auto CALL DELAY1S_4 ;||Ỵ con p3.0 = 0 thi chay Handdy DEC TGB DJNZ TGA,LAPVA CALL DELAY1S_4 TIEP: LJMP MAIN ; HANDDY: ;=== DAXB_HANDDY: MOV P0,#0FFH ; Khong cho hien thoi gian SETB P1.0 ;Do A sang SETB P1.5 ; Xanh B sang CLR P1.3 ;Tat Do B CLR P1.4 ;Tat Vang B CLR P1.2 ;Tat xanh A JB P3.0,TIEP ; ||Ỵ neu p3.0 = 0 thi Chay Handdy JB P3.1,DAXB_HANDDY ; ||Ỵ neu p3.0 = 1 thi chay AUTO VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 15 ; ||=> neu p3.1 = 1 thi nhay DAXB_HANDDY ;||=> neu p3.1 = 0 thi nhay XADB_HANDDY ;=== XADB_HANDDY: MOV P0,#0FFH SETB P1.2 ; Xanh A sang SETB P1.3 ; Do B sang CLR P1.1 ;Tat vang A CLR P1.0 ;Tat do A CLR P1.5 ; Tat Xanh B JB P3.0,XADB_AUTO ; ||Ỵ neu p3.0 = 0 thi Chay Handdy ;||Ỵ neu p3.0 = 1 thi chay AUTO JNB P3.1,XADB_HANDDY ;||=>neu p3.1 = 1 thi nhay DAXB_HANDDY JMP DAXB_HANDDY ;||=>neu p3.1 = 0 thi nhay XADB_HANDDY ;=== HIEN_THI1: CALL MAHOA MOV P0,CHUCA CALL DELAY MOV P0,DONVIA CALL DELAY MOV P0,CHUCB CALL DELAY MOV P0,DONVIB CALL DELAY RET ;=== HIEN_THI2: CALL MAHOA MOV P0,DONVIA CALL DELAY MOV P0,CHUCB CALL DELAY MOV P0,DONVIB CALL DELAY RET ;=== HIEN_THI3: CALL MAHOA MOV P0,CHUCA CALL DELAY MOV P0,DONVIA CALL DELAY MOV P0,DONVIB CALL DELAY RET ;=== HIEN_THI4: CALL MAHOA MOV P0,DONVIA CALL DELAY MOV P0,DONVIB CALL DELAY RET ;=== VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 16 MAHOA: MOV A,TGA MOV B,#10 DIV AB ADD A,#10110000B MOV CHUCA,A MOV A,B ADD A,#01110000B MOV DONVIA,A MOV A,TGB MOV B,#10 DIV AB ADD A,#11100000B MOV CHUCB,A MOV A,B ADD A,#11010000B MOV DONVIB,A RET ;=== DELAY1S_1: MOV R0,#40 LAPDELAY1S_1: CALL HIEN_THI1 CALL DELAY50MS DJNZ R0,LAPDELAY1S_1 RET ;=== DELAY1S_2: MOV R0,#40 LAPDELAY1S_2: CALL HIEN_THI2 CALL DELAY50MS DJNZ R0,LAPDELAY1S_2 RET ;=== DELAY1S_3: MOV R0,#40 LAPDELAY1S_3: CALL HIEN_THI3 CALL DELAY50MS DJNZ R0,LAPDELAY1S_3 RET ;=== DELAY1S_4: MOV R0,#40 LAPDELAY1S_4: CALL HIEN_THI4 CALL DELAY50MS DJNZ R0,LAPDELAY1S_4 RET ;=== DELAY50MS: MOV TH0,#HIGH(-25000) MOV TL0,#LOW(-25000) SETB TR0 JNB TF0,$ CLR TR0 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 17 CLR TF0 RET ;=== DELAY: LOOP1: MOV R1,#10 LOOP2: MOV R2,#200 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== END ; CHƯƠNG TRÌNH HỒN HIỆN HƠN 2: ;chuong trinh den giao thong 2 che do co hien thi thoi gian ra led 7 doan ;Nguoi viet :VUONG VAN HUNG ;Ngay viet :20/06/2008 ;=== TGA DATA 7CH CHUCA DATA 2EH DONVIA DATA 7DH TGB DATA 7EH DONVIB DATA 7FH CHUCB DATA 2FH DOA BIT P1.0 VANGA BIT P1.1 XANHA BIT P1.2 DOB BIT P1.3 VANGB BIT P1.4 XANHB BIT P1.5 ;=== ORG 0000H INIT: MOV TMOD,#01H MOV P1,#00H ;=== ;Chuong trinh chinh MAIN: ; ; Do A va Xanh b sang ; DAXB_AUTO: CLR DOB CLR VANGA MOV TGA,#20 MOV TGB,#17 MOV R6,#8 SETB DOA VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 18 SETB XANHB ;=== LAPXB: CALL DELAY1S_1 DEC TGA DEC TGB JNB P3.0,DAXB_HANDDY DJNZ R6,LAPXB MOV R6,#3 LAPXB1: JNB P3.0,DAXB_HANDDY CALL DELAY1S_3 DEC TGA DEC TGB DJNZ R6,LAPXB1 LAPXB2: JNB P3.0,DAXB_HANDDY CALL DELAY1S_4 DEC TGA DJNZ TGB,LAPXB2 ;=== ; Do A va vang B sang ; DAVB_AUTO: CLR XANHB SETB VANGB MOV TGB,#3 ;=== LAPVB: JNB P3.0,XADB_HANDDY ; neu p3.0 =1 thi chay Auto CALL DELAY1S_4 ; con p3.0 =0 thi chay Handdy DEC TGA DJNZ TGB,LAPVB CALL DELAY1S_4 ;=== ; Xanh A va Do B sang ; XADB_AUTO: CLR DOA CLR VANGB SETB XANHA SETB DOB MOV TGA,#25 MOV TGB,#30 MOV R6,#16 ; thay doi khi TGB va TGA thay doi R6 = TGA - 9 ;=== LAPXA: JNB P3.0,XADB_HANDDY ;||Ỵ neu p3.0 =0 thi chay Handdy CALL DELAY1S_1 ; ||Ỵcon p3.0 =1 thi chay AuTo DEC TGB DEC TGA DJNZ R6,LAPXA MOV R6,#5 ; thay doi khi TGB va TGA thay doi R6 = TGB - TGA LAPXA1: JNB P3.0,DAXB_HANDDY VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 19 CALL DELAY1S_2 DEC TGA DEC TGB DJNZ R6,LAPXA1 LAPXA2: JNB P3.0,DAXB_HANDDY CALL DELAY1S_4 DEC TGB DJNZ TGA,LAPXA2 ;=== ;Vang A va Do B sang ; VADB_AUTO: CLR XANHA SETB VANGA MOV TGA,#5 ;=== LAPVA: JNB P3.0,DAXB_HANDDY ;||Ỵ neu p3.0 = 1 thi chay Auto CALL DELAY1S_4 ; ||Ỵcon p3.0 = 0 thi chay Handdy DEC TGB DJNZ TGA,LAPVA CALL DELAY1S_4 TIEP: LJMP MAIN ; ;CHE DO HANDDY ;=== DAXB_HANDDY: MOV P0,#0FFH ; Khong cho hien thoi gian SETB DOA ;Do A sang SETB XANHB ; Xanh B sang CLR DOB ;Tat Do B CLR VANGA ;Tat Vang A CLR XANHA ;Tat Xanh A JB P3.0,TIEP ;|=> neu p3.0 = 0 thi Chay Handdy JB P3.1,DAXB_HANDDY ;|=>neu p3.0 = 1 thi chay AUTO ;|==>neu p3.1 = 1 thi nhay DAXB_HANDDY ;|==> neu p3.1 = 0 thi nhay XADB_HANDDY ;=== XADB_HANDDY: MOV P0,#0FFH SETB XANHA ;XANH A SANG SETB DOB ; DO B SANG CLR VANGB ; TAT VANG B CLR DOA ; DO A TAT CLR XANHB ; XANH B TAT JB P3.0,XADB_AUTO ; neu p3.0 = 1 thi chay AUTO JNB P3.1,XADB_HANDDY ; neu p3.0 = 0 thi Chay Handdy JMP DAXB_HANDDY ;neu p3.1 = 1 thi nhay DAXB_HANDDY ; neu p3.1 = 0 thi nhay XADB_HANDDY ;=== HIEN_THI1: CALL MAHOA MOV P0,CHUCA CALL DELAY MOV P0,DONVIA VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 20 CALL DELAY MOV P0,CHUCB CALL DELAY MOV P0,DONVIB CALL DELAY RET ;=== HIEN_THI2: CALL MAHOA MOV P0,DONVIA CALL DELAY MOV P0,CHUCB CALL DELAY MOV P0,DONVIB CALL DELAY RET ;=== HIEN_THI3: CALL MAHOA MOV P0,CHUCA CALL DELAY MOV P0,DONVIA CALL DELAY MOV P0,DONVIB CALL DELAY RET ;=== HIEN_THI4: CALL MAHOA MOV P0,DONVIA CALL DELAY MOV P0,DONVIB CALL DELAY RET ;=== MAHOA: MOV A,TGA MOV B,#10 DIV AB ADD A,#10110000B MOV CHUCA,A MOV A,B ADD A,#01110000B MOV DONVIA,A MOV A,TGB MOV B,#10 DIV AB ADD A,#11100000B MOV CHUCB,A MOV A,B ADD A,#11010000B MOV DONVIB,A RET ;=== DELAY1S_1: MOV R0,#40 LAPDELAY1S_1: CALL HIEN_THI1 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 21 CALL DELAY50MS DJNZ R0,LAPDELAY1S_1 RET ;=== DELAY1S_2: MOV R0,#40 LAPDELAY1S_2: CALL HIEN_THI2 CALL DELAY50MS DJNZ R0,LAPDELAY1S_2 RET ;=== DELAY1S_3: MOV R0,#40 LAPDELAY1S_3: CALL HIEN_THI3 CALL DELAY50MS DJNZ R0,LAPDELAY1S_3 RET ;=== DELAY1S_4: MOV R0,#40 LAPDELAY1S_4: CALL HIEN_THI4 CALL DELAY50MS DJNZ R0,LAPDELAY1S_4 RET ;=== DELAY50MS: MOV TH0,#HIGH(-25000) MOV TL0,#LOW(-25000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET ;=== DELAY: LOOP1: MOV R1,#10 LOOP2: MOV R2,#200 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== END ; VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 22 CHUC B DON VI B CHUC A DON VI A QA3 QA4 QA1 QA2 QB3 QB4 QB1 QB2 QC3 QC4 QC1 QC2 QD3 QD4 QD1 QD2 QE3 QE4 QE1 QE2 QF3 QF4 QF1 QF2 QG3 QG4 QG1 QG2 QA1 QB1 QC1 QD1 QE1 QF1 QG1 QA2 QB2 QC2 QD2 QE2 QF2 QG2 QA3 QB3 QC3 QD3 QE3 QF3 QG3 QA4 QB4 QC4 QD4 QE4 QF4 QG4 11 10 11 10 11 10 11 10 15 15 15 15 14 14 14 14 13 12 9 13 12 9 13 12 9 13 12 9 U5 U4 U3 U2 QF QF QF QF QA QB QE QA QB QE QA QB QE QA QB QE QC QD QC QD QC QD QC QD QG 4511 QG 4511 QG 4511 QG 4511 A B C D LT BI LE/STB A B C D LT BI LE/STB A B C D LT BI LE/STB A B C D LT BI LE/STB 7 1 2 6 3 4 7 1 2 6 3 4 7 1 2 6 3 4 7 1 2 6 3 4 5 5 5 5 AD0 AD1 AD2 AD3 AD0 AD1 AD2 AD3 AD0 AD1 AD2 AD3 AD0 AD1 AD2 AD3 TUYEN DUONG A VCC VCC C2 C3 AD4 AD5 AD6 AD7 27p 27p Q1 X1 2N2369 RP1 U1 9 AD0 AD0 39 19 P0.0/AD0 XTAL1 8 AD1 AD1 38 P0.1/AD1 12MHz 7 AD2 AD2 37 P0.2/AD2 6 AD3 AD3 36 18 P0.3/AD3 XTAL2 VCC Q2 5 AD4 AD4 35 TUYEN DUONG B P0.4/AD4 2N2369 4 AD5 AD5 34 P0.5/AD5 3 AD6 AD6 33 P0.6/AD6 2 AD7 AD7 32 9 P0.7/AD7 RST 1 21 P2.0/A8 22 P2.1/A9 C1 Q3 10K 23 DRT2 P2.2/A10 1u 2N2369 24 29 10K P2.3/A11 PSEN 25 30 P2.4/A12 ALE VCC 26 31 P2.5/A13 EA R0 27 P2.6/A14 28 10k 1 2 3 4 5 6 7 8 9 P2.7/A15 VCC R9 Q4 10 1 P3.0/RXD P1.0 R10 2N2369 11 2 P3.1/TXD P1.1 R114k7 12 3 P3.2/INT0 P1.2 R124k7 13 4 P3.3/INT1 P1.3 R134k7 14 5 P3.4/T0 P1.4 R144k7 15 6 P3.5/T1 P1.5 4k7 16 7 P3.6/WR P1.6 4k7 Q5 17 8 P3.7/RD P1.7 2N2369 80C51 Q6 2N2369 BÀI 1: CHƯƠNG TRÌNH ĐÈN GIAO THƠNG PHẦN 1: CHƯƠNG TRÌNH ĐÈN GIAO THƠNG TỰ ĐỘNG CĨ HIỂN THỊ THỜI GIAN BẰNG LED 7 ĐOẠN : ;Nguoi viet :VUONG VAN HUNG ;Ngay viet :20/06/2008 ;=== TGA DATA 7CH CHUCA DATA 2EH DONVIA DATA 7DH TGB DATA 7EH DONVIB DATA 7FH CHUCB DATA 2FH VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 23 ;=== ;Chuong trinh chinh ORG 0000H INIT: MOV TMOD,#01H MOV P1,#0H MAIN: MOV TGA,#30 MOV TGB,#25 SETB P1.0 SETB P1.5 ;=== ;Thoi gian cua Do A va Xanh B LAPXB: CALL DELAY1S DEC TGA DJNZ TGB,LAPXB CLR P1.5 SETB P1.4 MOV TGB,#5 ;=== ;Thoi gian cua Do A va Vang B LAPVB: CALL DELAY1S DEC TGA DJNZ TGB,LAPVB CLR P1.0 CLR P1.4 SETB P1.2 SETB P1.3 MOV TGA,#25 MOV TGB,#30 ;=== ;Thoi gian cua Do B va Xanh A LAPXA: CALL DELAY1S DEC TGB DJNZ TGA,LAPXA CLR P1.2 SETB P1.1 MOV TGA,#5 ;=== ;Thoi gian cua Do B va Vang A LAPVA: CALL DELAY1S DEC TGB DJNZ TGA,LAPVA CLR P1.1 CLR P1.3 LJMP MAIN ;=== HIENTHI: CALL MAHOA MOV P0,CHUCA CALL DELAY VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 24 MOV P0,DONVIA CALL DELAY MOV P0,CHUCB CALL DELAY MOV P0,DONVIB CALL DELAY RET ;=== MAHOA: MOV A,TGA MOV B,#10 DIV AB ADD A,#10110000B MOV CHUCA,A MOV A,B ADD A,#01110000B MOV DONVIA,A MOV A,TGB MOV B,#10 DIV AB ADD A,#11100000B MOV CHUCB,A MOV A,B ADD A,#11010000B MOV DONVIB,A RET ;=== DELAY1S: MOV R0,#20 LAPDELAY1S: CALL HIENTHI CALL DELAY50MS DJNZ R0,LAPDELAY1S RET ;=== DELAY50MS: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET DELAY: LOOP1: MOV R1,#20 LOOP2: MOV R2,#200 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== END ; VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 25 ;DONG HO SO THE HIET PHUT VA GIAY ;Nguoi viet :VUONG VAN HUNG ;Ngay viet :20/06/2008 ;=== TGA DATA 7CH CHUCA DATA 2EH DONVIA DATA 7DH TGB DATA 7EH DONVIB DATA 7FH CHUCB DATA 2FH ;=== ;Chuong trinh chinh ORG 0000H INIT: MOV TMOD,#01H MOV P1,#0H MAIN: MOV TGA,#30 MOV TGB,#25 SETB P1.0 SETB P1.5 ;=== ;Thoi gian cua Do A va Xanh B LAPXB: CALL DELAY1S DEC TGA DJNZ TGB,LAPXB CLR P1.5 SETB P1.4 MOV TGB,#5 ;=== ;Thoi gian cua Do A va Vang B LAPVB: CALL DELAY1S DEC TGA DJNZ TGB,LAPVB CLR P1.0 CLR P1.4 SETB P1.2 SETB P1.3 MOV TGA,#18 MOV TGB,#20 ;=== ;Thoi gian cua Do B va Xanh A LAPXA: CALL DELAY1S DEC TGB DJNZ TGA,LAPXA CLR P1.2 SETB P1.1 MOV TGA,#2 ;=== VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 26 ;Thoi gian cua Do B va Vang A LAPVA: CALL DELAY1S DEC TGB DJNZ TGA,LAPVA CLR P1.1 CLR P1.3 LJMP MAIN ;=== HIENTHI: CALL MAHOA MOV P0,CHUCA CALL DELAY MOV P0,DONVIA CALL DELAY MOV P0,CHUCB CALL DELAY MOV P0,DONVIB CALL DELAY RET ;=== MAHOA: MOV A,TGA MOV B,#10 DIV AB ADD A,#10110000B MOV CHUCA,A MOV A,B ADD A,#01110000B MOV DONVIA,A MOV A,TGB MOV B,#10 DIV AB ADD A,#11100000B MOV CHUCB,A MOV A,B ADD A,#11010000B MOV DONVIB,A RET ;=== DELAY1S: MOV R0,#50 LAPDELAY1S: CALL HIENTHI CALL DELAY40MS DJNZ R0,LAPDELAY1S RET ;=== DELAY40MS: MOV TH0,#HIGH(-20000) MOV TL0,#LOW(-20000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 27 ;=== DELAY: LOOP1: MOV R1,#10 LOOP2: MOV R2,#200 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== END ; PHẦN 2: CHƯƠNG TRÌNH ĐÈN GIAO THƠNG CHẠY 2 CHẾ ĐỘ VÀ CĨ HIỂN THỊ THỜI GIAN RA LED 7 ĐOẠN ;CHUONG TRINH DEN GIAO THONG 2 CHE DO CO HIEN THI THOI GIAN RA LED 7 DOAN ;Nguoi viet :VUONG VAN HUNG ;Ngay viet :20/06/2008 ;=== TGA DATA 7CH CHUCA DATA 2EH DONVIA DATA 7DH TGB DATA 7EH DONVIB DATA 7FH CHUCB DATA 2FH ;=== ORG 0000H ;=== ;Chuong trinh chinh INIT: MOV TMOD,#01H MOV P1,#00H MAIN: ;=== AUTO: ; Do A va Xanh b sang DAXB_AUTO: MOV P2,#1 ;xuat so 1 ra led 7 doan: dang chay che do tu dong CLR P1.3 CLR P1.1 CLR P1.2 MOV TGA,#30 MOV TGB,#25 SETB P1.0 SETB P1.5 LAPXB: VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 28 JNB P3.0,DAXB_HANDDY ; neu p3.0 o muc thap (0) thi chay Auto CALL DELAY1S ; con p3.0 o muc cao (1) thi chay Handdy DEC TGA DJNZ TGB,LAPXB ;=== ; Do A va vang B sang DAVB_AUTO: CLR P1.5 SETB P1.4 MOV TGB,#5 LAPVB: JNB P3.0,DAXB_HANDDY ; neu p3.0 o muc thap (0) thi chay Auto CALL DELAY1S ; con p3.0 o muc cao (1) thi chay Handdy DEC TGA DJNZ TGB,LAPVB ;=== ; Xanh A va Do B sang XADB_AUTO: MOV P2,#1 CLR P1.0 CLR P1.4 SETB P1.2 SETB P1.3 MOV TGA,#25 MOV TGB,#30 LAPXA: JNB P3.0,XADB_HANDDY ; neu p3.0 o muc thap (0) thi chay Auto CALL DELAY1S ; con p3.0 o muc cao (1) thi chay Handdy DEC TGB DJNZ TGA,LAPXA ;=== ;Vang A va Do B sang VADB_AUTO: CLR P1.2 SETB P1.1 MOV TGA,#5 LAPVA: JNB P3.0,XADB_HANDDY ; neu p3.0 o muc thap (0) thi chay Auto CALL DELAY1S ; con p3.0 o muc cao (1) thi chay Handdy DEC TGB DJNZ TGA,LAPVA LJMP MAIN ;=== HANDDY: DAXB_HANDDY: CLR TR0 ; Khong cho hien thoi gian MOV P0,#00H ; Khong cho hien thoi gian MOV P2,#0 ; xuat gia tri 0 ra led 7 doan: chay che do Handdy SETB P1.0 ;Do A sang SETB P1.5 ; Xanh B sang VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 29 CLR P1.3 ;Tat Do B CLR P1.4 ;Tat Vang B CLR P1.2 ; Tat Xanh A JB P3.0,DAXB_AUTO ; neu p3.0 o muc thap (0) thi chay Auto JB P3.1,DAXB_HANDDY ; Neu p3.1 muc 0 cho XADB_HANDDY sang ;Neu p3.1 muc 1 cho DAXB_HANDDY sang ;=== XADB_HANDDY: CLR TR0 MOV P0,#00H MOV P2,#0 SETB P1.2 SETB P1.3 CLR P1.1 CLR P1.0 CLR P1.5 JB P3.0,XADB_AUTO JNB P3.1,XADB_HANDDY ; Neu p3.1 muc 0 cho XADB_HANDDY sang JMP DAXB_HANDDY ;Neu p3.1 muc 1 cho DAXB_HANDDY sang ;=== HIENTHI: CALL MAHOA MOV P0,CHUCA CALL DELAY MOV P0,DONVIA CALL DELAY MOV P0,CHUCB CALL DELAY MOV P0,DONVIB CALL DELAY RET ;=== MAHOA: MOV A,TGA MOV B,#10 DIV AB ADD A,#10110000B MOV CHUCA,A MOV A,B ADD A,#01110000B MOV DONVIA,A MOV A,TGB MOV B,#10 DIV AB ADD A,#11100000B MOV CHUCB,A MOV A,B ADD A,#11010000B MOV DONVIB,A RET ;=== DELAY1S: MOV R0,#20 LAPDELAY1S: VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 30 CALL HIENTHI CALL DELAY50MS DJNZ R0,LAPDELAY1S RET ;=== DELAY50MS: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET DELAY: LOOP1: MOV R1,#20 LOOP2: MOV R2,#200 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== END ; BÀI 2: CHƯƠNG TRÌNH ĐỌC ENCODER PHẦN 1: CHƯƠNG TRÌNH ĐỌC ENCODER VA XUAT XUNG ĐIỀU KHIỂN ĐƠNG CƠ CÁCH 1: ;=== ;Khai bao bien / hang so / dau vao/ra DEM DATA 7EH ;=== ;Khai bao ngat ngoai ;=== ORG 0000H LJMP INIT ORG 001BH LJMP NGATTTIMER1 ;=== ;Chuong trinh chinh INIT: MOV IE,#88H ; NGAT COUNTER 1 MOV TMOD,#61H ;TIMER 1 HD CHE DO COUNTER1 MOV TH1,#(-20) MOV TL1,#(-20) SETB TR1 MOV DEM,#0 MOV P2,DEM VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 31 ;=== MAIN: CALL XUATXUNG MOV A,DEM CJNE A,#5,MAIN MOV DEM,#0 SETB P1.7 SJMP $ ;=== XUATXUNG: WAIT: CLR P1.7 MOV TH0,#HIGH(-8000) MOV TL0,#LOW(-8000) SETB TR0 WAIT1: JNB TF0,WAIT1 CLR TF0 CLR TF0 SETB P1.7 MOV TH0,#HIGH(-2000) MOV TL0,#LOW(-2000) SETB TR0 WAIT2: JNB TF0,WAIT2 CLR TF0 CLR TR0 RET ;=== NGATTTIMER1: INC DEM MOV P2,DEM RETI ;=== END ; CÁCH 2: ;=== ORG 0000H LJMP MAIN ORG 001BH LJMP NGATTTIMER1 ;=== ;Chuong trinh chinh MAIN: MOV IE,#88H MOV TMOD,#51H MOV TH1,#HIGH(-12800) ; encoder 128 xung/vong MOV TL1,#LOW(-12800) ;tuong ung voi 100 vong quay cua Dong Co SETB TR1 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 32 NHANSTART: JB P3.7,$ WAIT: CLR P1.7 MOV TH0,#HIGH(-8000) MOV TL0,#LOW(-8000) SETB TR0 WAIT1: JNB TF0,WAIT1 CLR TF0 CLR TF0 SETB P1.7 MOV TH0,#HIGH(-2000) MOV TL0,#LOW(-2000) SETB TR0 WAIT2: JNB TF0,WAIT2 CLR TF0 CLR TR0 SJMP WAIT ;=== NGATTTIMER1: SETB P1.7 SJMP $ RETI ;=== END ; CÁCH 3: ;Ngay viet :26/06/2008 ;=== ;Khai bao bien / hang so / dau vao/ra DEM DATA 7EH ;=== ;Khai bao ngat ngoai ;=== ORG 0000H LJMP INIT ORG 001BH INC DEM RETI ;=== ;Chuong trinh chinh INIT: MOV IE,#88H MOV TMOD,#61H MOV TH1,#(-128) MOV TL1,#(-128) VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 33 MOV DEM,#0 MOV P2,DEM SETB TR1 ; === NHANSTART: JB P3.7,$ ; === MAIN: CALL XUAT_XUNG MOV P2,DEM MOV A,DEM CJNE A,#10,MAIN ; tuong ung voi dong co quay 10 vong SETB P1.7 SJMP $ ;=== ; Chuong trinh xuat xung 100hz co do rong 80% dieu khien dong co XUAT_XUNG: WAIT: CLR P1.7 MOV TH0,#HIGH(-8000) MOV TL0,#LOW(-8000) SETB TR0 WAIT1: JNB TF0,WAIT1 CLR TF0 CLR TF0 SETB P1.7 MOV TH0,#HIGH(-2000) MOV TL0,#LOW(-2000) SETB TR0 WAIT2: JNB TF0,WAIT2 CLR TF0 CLR TR0 RET ;=== END ; CÁCH 4: ;CHUONG TRINH SU DUNG NGAT COUNTER ;=== ;Khai bao bien / hang so / dau vao/ra ;=== DEM DATA 7EH CHUC DATA 7AH DONVI DATA 7BH ;=== ;Khai bao ngat ngoai ;=== VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 34 ORG 0000H LJMP INIT ORG 001BH LJMP NGATCOUNTER1 ;=== ;Chuong trinh chinh ;=== ORG 0030H INIT: MOV IE,#88H ; NGAT COUNTER 1 MOV TMOD,#61H ;TIMER 1 HD CHE DO COUNTER1 MOV TH1,#(-5) MOV TL1,#(-5) SETB TR1 MOV DEM,#0 ;=== MAIN: CALL HIENTHI MOV A,DEM CJNE A,#100,MAIN MOV DEM,#0 SJMP $ ;=== NGATCOUNTER1: INC DEM MOV P2,DEM RETI ;=== HIENTHI: CALL MAHOA MOV P0,CHUC CALL DELAY MOV P0,DONVI CALL DELAY RET ;=== MAHOA: MOV A,DEM MOV B,#10 DIV AB ADD A,#10110000B MOV CHUC,A MOV A,B ADD A,#01110000B MOV DONVI,A RET ;=== DELAY1S: MOV R0,#20 LAPDELAY1S: CALL DELAY50MS DJNZ R0,LAPDELAY1S RET VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 35 ;=== DELAY50MS: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET ;=== DELAY: MOV R1,#10 LOOP2: MOV R2,#200 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== END ; VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 36 PHẦN 2: CHƯƠNG TRÌNH ĐỌC ENCODER CỦA ĐƠNG CƠ ;=== ;Khai Bao Bien/Hang So/ Dau Vao Ra DEM DATA 7EH TRAM DATA 7FH CHUC DATA 7AH DONVI DATA 7BH TOCDO DATA 7CH ;=== ORG 0000H LJMP INIT ;=== ;KHAI BAO NGAT ORG 0003H LJMP NHANSTART ;=== ;CHUONG TRINH CHINH ORG 0030H INIT: SETB IT0 ;Ngat Canh Xuong MOV TMOD,#01010001B ;Timer1 Dem 16bit, Timer0 Dinh Thoi 8bit Nap Lai MOV TOCDO,TH1 MOV TH0,#(-200) SETB TR0 CLR TF1 MOV IE,#10000001B SETB IT0 ;Cho Phep Ngat Ngoai0 Va Ngat Tiemr0 SETB TR1 ; Cho Phep Doc Encoder MOV P1,#0FFH MOV DEM,#0 MAIN: JB TF0,HIENTHILED SJMP MAIN ;=== ;Cac Chuong Trinh Con Va Phuc Vu Ngat NHANSTART: CLR P1.7 INC DEM MOV P2,DEM MOV A,DEM CJNE A,#10,THOATNHANSTART MOV A,#0 MOV DEM,A SETB P1.7 CLR TF1 THOATNHANSTART: RETI ;=== VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 37 HEXTOBCD: MOV A,TOCDO MOV B,#100 DIV AB ADD A,#11010000B MOV TRAM,A MOV A,B MOV B,#10 DIV AB ADD A,#10110000B MOV CHUC,A MOV A,B ADD A,#01110000B MOV DONVI,A RET ;=== HIENTHILED: CLR TF0 MOV TOCDO,TH1 CALL HEXTOBCD CALL XUATLED SJMP MAIN ;=== XUATLED: MOV P0,TRAM CALL DELAY MOV P0,CHUC CALL DELAY MOV P0,DONVI CALL DELAY RET ;=== DELAY: LOOP1: MOV R1,#10 LOOP2: MOV R2,#100 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== END ; PHẦN 3: CHƯƠNG TRÌNH ĐỌC ENCODER CỦA ĐƠNG CƠ VÀ XUẤT XUNG ĐIỀU KHIỂN ĐỘNG CƠ : ;Doc encoder + xuat xung dieu khien dong co DC ;=== ;Khai bao bien / hang so / dau vao/ra VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 38 TOCDO DATA 7FH TRAM DATA 7EH CHUC DATA 7DH DONVI DATA 7CH DONGCO BIT P1.7 ;=== ORG 0000H LJMP INIT ;=== ;Khai bao ngat ORG 0003H LJMP DEMTOCDO ORG 000BH LJMP XUATXUNG ORG 0030H ;=== ;Chuong trinh chinh INIT: SETB IT0 ; NGAT CANH XUONG MOV TMOD,#01010010B ; TIMER 1 DEM 16 BIT, TIMER 0 DINH THOI 8 BIT NAP LAI MOV TH1,#0 MOV TL1,#0 MOV TH0,#5 MOV TL0,#5 CLR TF0 CLR TF1 MOV TOCDO,#0 MOV R0,#1 MOV R7,#40 JB P3.0,$ ; DOI DEN KHI NHAN NUT MOI BAT DAU CHAY JNB P3.0,$ MOV IE,#10000011B ; CHO PHEP NGAT NGOAI 0 VA TIMER 0 SETB TR1 ; CHO PHEP DOC ENCODER MAIN: CALL KIEMTRATOCDO CALL HEXTOBCD ; CALL XUATLED SJMP MAIN ;=== KIEMTRATOCDO: MOV P2,TOCDO MOV A,TOCDO CJNE A,#0,TIEP CLR TR0 ; NGUNG DONG CO SETB DONGCO SJMP THOATKIEMTRA TIEP: SETB TR0 ; CHO XUAT XUNG THOATKIEMTRA: RET ;=== HEXTOBCD: MOV A,TH1 MOV B,#100 DIV AB ADD A,#11010000B MOV TRAM,A MOV A,B VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 39 MOV B,#10 DIV AB ADD A,#10110000B MOV CHUC,A MOV A,B ADD A,#01110000B MOV DONVI,A RET ;=== XUATLED: MOV P0,TRAM CALL DELAY10MS MOV P0,CHUC CALL DELAY10MS MOV P0,DONVI CALL DELAY10MS RET ;=== DELAY: LOOP1: MOV R1,#20 LOOP2: MOV R2,#200 DJNZ R2,$ DJNZ R1,LOOP2 RET DELAY10MS: DELAY1: MOV R1,#10 DELAY2: MOV R2,#50 DJNZ R2,$ DJNZ R1,DELAY2 RET ;=== DEMTOCDO: INC TOCDO MOV A,TOCDO CJNE A,#10,THOATNGATNGOAI MOV TOCDO,#0 THOATNGATNGOAI: RETI ;=== XUATXUNG: DJNZ R7,THOAT MOV R7,#40 JB DONGCO,DANGLEN ; BIT DONGCO DANG O MUC 1 : TAT DJNZ R0,THOAT SETB DONGCO MOV A,#10 CLR C SUBB A,TOCDO MOV R0,A SJMP THOAT DANGLEN: DJNZ R0,THOAT CLR DONGCO VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 40 MOV R0,TOCDO THOAT: RETI ;=== END ; VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 41 LCD1 LM016L VSS VDD VEE RS RW E D0 D1 D2 D3 D4 D5 D6 D7 1 2 3 4 5 6 7 8 9 10 11 12 13 14 VCC AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 A15 A14 A13 A12 A11 A10 A9 A8 VCC C2 C3 27p 27p U1 X1 AD0 39 19 P0.0/AD0 XTAL1 AD1 38 P0.1/AD1 AD2 37 P0.2/AD2 11.059MHz C1 AD3 36 18 P0.3/AD3 XTAL2 1u AD4 35 P0.4/AD4 AD5 34 P0.5/AD5 RES AD6 B7 B6 B5 B4 B3 B2 B1 B0 33 P0.6/AD6 AD7 32 9 P0.7/AD7 RST VCC RES R0 A8 21 P2.0/A8 10k A9 22 P2.1/A9 A10 23 P2.2/A10 A11 24 29 A P2.3/A11 PSEN A12 25 30 9 8 7 P2.4/A12 ALE A13 26 31 P2.5/A13 EA A14 27 P2.6/A14 A15 28 654B P2.7/A15 10 1 B0 P3.0/RXD P1.0 11 2 B1 P3.1/TXD P1.1 12 3 B2 C P3.2/INT0 P1.2 13 4 B3 3 2 1 P3.3/INT1 P1.3 14 5 B4 P3.4/T0 P1.4 15 6 B5 P3.5/T1 P1.5 ON 16 7 B6 D P3.6/WR P1.6 0 17 8 B7 + = C P3.7/RD P1.7 4 3 2 1 80C51 BÀI 3: CHƯƠNG TRÌNH HIỂN THỊ LED MA TRẬN PHẦN 1 : CHƯƠNG TRÌNH XUẤT CHỮ A RA LED MA TRẬN : ; HIEN THI LED MATRAN ;=== ;Khai bao bien / hang so / dau vao/ra DEM DATA 7EH QUAY DATA 7BH ;=== ;Khai bao ngat ngoai o ORG 0000H JMP MAIN ;=== MAIN: MOV DPTR,#MAA MOV DEM,#8 MOV QUAY,#0FEH LAP: MOV P1,QUAY MOV A,DEM DEC A MOVC A,@A+DPTR MOV P2,A MOV A,QUAY RL A VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 42 MOV QUAY,A CALL DELAY DJNZ DEM,LAP JMP MAIN DELAY: MOV R0,#10 LOOP: MOV R1,#100 DJNZ R1,$ DJNZ R0,LOOP RET ORG 4000H MAA: DB 20H,50H,88H,88H,0F8H,88H,88H,88H MAH: DB 88H,88H,88H,0F8H,88H,88H,88H,88H END ; PHẦN 2 : CHƯƠNG TRÌNH QUÉT BÀN PHÍM MA TRẬN VÀ HIỂN THỊ RA LED MAT TRẬN ;=== ;Khai bao bien / hang so / dau vao/ra DEM DATA 7EH QUAY DATA 7BH MAPHIM DATA 7AH ;=== ;Khai bao ngat ngoai o ORG 0000H ;=== INIT: MOV DPTR,#XOA MAIN: CALL QUET_PHIM CALL XET_PHIM CALL XUAT_LED_MATRAN CALL DELAY JMP MAIN ;=== QUET_PHIM: MOV DEM,#4 MOV QUAY,#11111110B LAP_QUET_PHIM: MOV P3,QUAY MOV A,P3 ANL A,#0F0H CJNE A,#0F0H,COPHIM MOV A,QUAY RL A VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 43 MOV QUAY,A DJNZ DEM,LAP_QUET_PHIM MOV MAPHIM,#0 SJMP THOAT_QUET_PHIM COPHIM: MOV MAPHIM,P3 THOAT_QUET_PHIM: RET ;=== XUAT_LED_MATRAN: MOV DEM,#8 MOV QUAY,#0FEH LAP: MOV P1,QUAY MOV A,DEM DEC A MOVC A,@A+DPTR MOV P2,A MOV A,QUAY RL A MOV QUAY,A CALL DELAY DJNZ DEM,LAP RET ;=== XET_PHIM: MOV A,MAPHIM CJNE A,#0,XETPHIM_0 LJMP THOAT_XET_PHIM XETPHIM_0: CJNE A,#01111110B,XETPHIM_1 MOV DPTR,#MACHIA LJMP THOAT_XET_PHIM XETPHIM_1: CJNE A,#01111101B,XETPHIM_2 MOV DPTR,#MANHAN LJMP THOAT_XET_PHIM XETPHIM_2: CJNE A,#01111011B,XETPHIM_3 MOV DPTR,#MATRU LJMP THOAT_XET_PHIM XETPHIM_3: CJNE A,#01110111B,XETPHIM_4 MOV DPTR,#MACONG LJMP THOAT_XET_PHIM XETPHIM_4: CJNE A,#10111110B,XETPHIM_5 MOV DPTR,#SOCHIN LJMP THOAT_XET_PHIM XETPHIM_5: CJNE A,#10111101B,XETPHIM_6 MOV DPTR,#SOSAU VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 44 LJMP THOAT_XET_PHIM XETPHIM_6: CJNE A,#10111011B,XETPHIM_7 MOV DPTR,#SOBA LJMP THOAT_XET_PHIM XETPHIM_7: CJNE A,#10110111B,XETPHIM_8 MOV DPTR,#MABANG LJMP THOAT_XET_PHIM XETPHIM_8: CJNE A,#11011110B,XETPHIM_9 MOV DPTR,#SOTAM LJMP THOAT_XET_PHIM XETPHIM_9: CJNE A,#11011101B,XETPHIM_10 MOV DPTR,#SONAM LJMP THOAT_XET_PHIM XETPHIM_10: CJNE A,#11011011B,XETPHIM_11 MOV DPTR,#SOHAI LJMP THOAT_XET_PHIM XETPHIM_11: CJNE A,#11010111B,XETPHIM_12 MOV DPTR,#SOKHONG LJMP THOAT_XET_PHIM XETPHIM_12: CJNE A,#11101110B,XETPHIM_13 MOV DPTR,#SOBAY LJMP THOAT_XET_PHIM XETPHIM_13: CJNE A,#11101101B,XETPHIM_14 MOV DPTR,#SOBON LJMP THOAT_XET_PHIM XETPHIM_14: CJNE A,#11101011B,XETPHIM_15 MOV DPTR,#SOMOT LJMP THOAT_XET_PHIM XETPHIM_15: CJNE A,#11100111B,XETPHIM_16 MOV DPTR,#XOA LJMP THOAT_XET_PHIM XETPHIM_16: NOP THOAT_XET_PHIM: RET ;=== DELAY: MOV R0,#10 LOOP: MOV R1,#100 DJNZ R1,$ DJNZ R0,LOOP RET ;=== ;NHAN CUA CAC PHIM MA TRAN ORG 4000H MANHAN : DB 0C3H ,0E7H,7EH,3CH,3CH,7EH,0E7H,0C3H VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 45 MACHIA : DB 18H,18H,00H,0FFH,0FFH,00H,18H,18H MACONG: DB 18H,18H,18H,0FFH,0FFH,18H,18H,18H MATRU : DB 00H,00H,00H,0FFH,0FFH,00H,00H,00H SOKHONG: DB 70H,88H,88H,88H,88H,88H,88H,70H SOMOT: DB 60H,0E0H,60H,60H,60H,60H,60H,60H SOHAI: DB 70H,88H,08H,08H,10H,20H,40H,0F8H SOBA: DB 0F8H,08H,10H,20H,70H,08H,08H,0F0H SOBON: DB 88H,88H,88H,0F8H,08H,08H,08H,08H SONAM: DB 0F8H,80H,80H,0F8H,08H,08H,08H,0F8H SOSAU: DB 70H,88H,80H,0F0H,88H,88H,88H,70H SOBAY: DB 078H,88H,08H,08H,08H,08H,08H,08H SOTAM: DB 70H,88H,88H,70H,88H,88H,88H,70H SOCHIN: DB 0F8H,88H,88H,0F8H,08H,08H,08H,0F8H MABANG: DB 0FFH,0FFH,0H,0H,0H,0H,0FFH,0FFH XOA : DB 0H,0H,0H,0H,0H,0H,0H,0H TEST : DB 1H,2H,3H,4H,5H,6H,7H,8H MAA: DB 20H,50H,88H,88H,0F8H,88H,88H,88H ;=== END ; VCC C1 1u R0 13 12 9 14 15 11 10 U21 10k A8 7 13 U2 A QA QF QA QB QE QC QD QG A9 1 12 4511 B QB A10 2 11 C QC A11 6 10 D QD 9 QE 3 15 LT QF 4 14 BI QG A B C D LT BI LE/STB 5 LE/STB 7 1 2 6 3 4 5 4511 VCC AD4 AD5 AD6 AD7 C2 C3 VCC AD0 AD1 AD2 AD3 27p 27p DRT1 U1 X1 9 AD0 AD0 39 19 P0.0/AD0 XTAL1 8 AD1 AD1 38 P0.1/AD1 7 AD2 AD2 37 P0.2/AD2 6 AD3 AD3 36 18 P0.3/AD3 XTAL2 11.059MHz 5 AD4 AD4 35 P0.4/AD4 4 AD5 AD5 34 P0.5/AD5 3 AD6 AD6 33 P0.6/AD6 2 AD7 AD7 32 9 P0.7/AD7 RST VCC 1 A8 21 P2.0/A8 A9 22 P2.1/A9 A10 +88.8 10K VCC 23 P2.2/A10 A11 24 29 P2.3/A11 PSEN A12 25 30 P2.4/A12 ALE A13 26 31 P2.5/A13 EA A14 27 DC1 P2.6/A14 A15 28 P2.7/A15 10 1 P3.0/RXD P1.0 11 2 P3.1/TXD P1.1 12 3 P3.2/INT0 P1.2 13 4 P3.3/INT1 P1.3 Q2 14 5 P3.4/T0 P1.4 2N2905 15 6 P3.5/T1 P1.5 16 7 P3.6/WR P1.6 17 8 P3.7/RD P1.7 VCC 80C51 1 2 3 4 5 6 7 8 9 Q1 DC2 2N2905 +88.8 VCC DRT2 10K VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 46 BÀI 4: CHƯƠNG TRÌNH BĂNG CHUYỀN : PHẦN 1 : CHƯƠNG TRÌNH BĂNG CHYỀN SẢN PHẨM : CÁCH 1: ;Ngay viet :09/06/2008 ;=== ;Khai bao bien / hang so / dau vao/ra DEM DATA 7AH ;=== ORG 0000H LJMP INIT ORG 0003H LJMP TACDONGCAMBIEN ;=== ;Khai bao ngat ;=== ;Chuong trinh chinh INIT: MOV IE,#81H SETB IT0 MOV DEM,#0 MOV P2,DEM SETB P1.6 SETB P1.7 MAIN: JNB P3.0,MUCTHAP CLR P1.7 SJMP MAIN MUCTHAP: JB P3.1,THUNGNHO THUNGLON: CLR P1.6 SETB P1.7 MOV A,DEM CJNE A,#10,THUNGLON MOV DEM,#0 MOV P2,DEM CLR P1.7 SETB P1.6 JMP MAIN THUNGNHO: CLR P1.6 SETB P1.7 MOV A,DEM CJNE A,#5,THUNGNHO MOV DEM,#0 MOV P2,DEM CLR P1.7 SETB P1.6 JMP MAIN TACDONGCAMBIEN: INC DEM MOV P2,DEM MOV A,DEM VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 47 RETI ;=== END ; CÁCH 2: ;Ngay viet :23/06/2008 ;=== ;Khai bao bien / hang so / dau vao/ra DEM DATA 7AH ;=== ORG 0000H LJMP INIT ORG 0003H LJMP TACDONGCAMBIEN ;=== ORG 0030H ;Chuong trinh chinh INIT: MOV IE,#81H SETB IT0 MOV DEM,#0 MOV P2,DEM ;=== MAIN: NHANSTART: JB P3.4,NHANSTART NHANSTOP: JNB P3.5,EXIT JNB P3.0, MUCTHAP ; khi co thung chua sp cam bien tich cuc muc thap. CLR P1.7 ; cho bang tai mang thung chua san pham hoat dong. SJMP NHANSTOP MUCTHAP: JB P3.1,THUNGNHO ;=== THUNGLON: CLR P1.6 SETB P1.7 MOV A,DEM CJNE A,#10,NHANSTOP MOV DEM,#0 MOV P2,DEM SETB P1.6 CLR P1.7 SJMP NHANSTOP ;=== THUNGNHO: CLR P1.6 SETB P1.7 MOV A,DEM CJNE A,#5,NHANSTOP MOV DEM,#0 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 48 MOV P2,DEM SETB P1.6 CLR P1.7 JMP NHANSTOP ;=== TACDONGCAMBIEN: INC DEM MOV P2,DEM MOV A,DEM RETI EXIT: SETB P1.6 SETB P1.7 ;=== END ; CÁCH 3: ;=== ;Khai bao bien / hang so / dau vao/ra DEM DATA 7AH ;=== ORG 0000H LJMP INIT ORG 0003H LJMP TACDONGCAMBIEN ;=== ;Khai bao ngat ;=== ;Chuong trinh chinh INIT: MOV IE,#81H SETB IT0 MOV DEM,#0 MOV P2,DEM ;=== NHANSTART: JB P3.4,NHANSTART MAIN: NHANSTOP: JNB P3.5,EXIT JB P3.0, MAIN MUCTHAP: JB P3.1,THUNGNHO ;=== THUNGLON: CLR P1.6 SETB P1.7 MOV A,DEM CJNE A,#9,MAIN MOV DEM,#0 MOV P2,DEM SETB P1.6 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 49 CLR P1.7 JMP MAIN ;=== THUNGNHO: CLR P1.6 SETB P1.7 MOV A,DEM CJNE A,#5,MAIN MOV DEM,#0 MOV P2,DEM SETB P1.6 CLR P1.7 JMP MAIN ;=== TACDONGCAMBIEN: INC DEM MOV P2,DEM MOV A,DEM RETI EXIT: SETB P1.6 SETB P1.7 ;=== END ; BÀI 5: CHƯƠNG TRÌNH HIỂN THỊ LED 7 ĐOẠN PHẦN 1 : CHƯƠNG TRÌNH HIỆN THỊ LED 7 ĐOẠN VỚI SỐ : 250 GIẢM VỀ 0 : ; CHUONG TRINH XUET LED HANG TRAM ;=== TRAM DATA 2AH CHUC DATA 2BH DONVI DATA 2CH DEM DATA 2DH ;=== ;Chuong trinh chinh ORG 0000H MAIN: MOV TMOD,#21H MOV TH0,#HIGH(-1000) MOV TL0,#LOW(-1000) MOV TH1,#HIGH(-100) SETB TR1 SETB TR0 MOV DEM,#250 LAP: MOV R7,#10 WAIT: JB TF0,TANSO1 JB TF1,TANSO2 SJMP WAIT VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 50 TANSO1: CLR TR0 CLR TF0 MOV TH0,#HIGH(-1000) MOV TL0,#LOW(-1000) SETB TR0 DJNZ R7,WAIT DJNZ DEM,LAP CLR TR0 CLR TF0 SJMP WAIT TANSO2: CLR TF1 CALL HEXTOBCD CALL XUATLED SJMP WAIT HEXTOBCD: MOV A,DEM MOV B,#100 DIV AB ADD A,#11010000B MOV TRAM,A MOV A,B MOV B,#10 DIV AB ADD A,#10110000B MOV CHUC,A MOV A,B ADD A,#01110000B MOV DONVI,A RET ;=== XUATLED: MOV P0,TRAM CALL DELAY MOV P0,CHUC CALL DELAY MOV P0,DONVI CALL DELAY DELAY: MOV R1,#100 LOOP: MOV R2,#250 DJNZ R2,$ DJNZ R1,LOOP RET END ; CACH 2: ; CHUONG TRINH XUET LED HANG TRAM ;=== TRAM DATA 2AH CHUC DATA 2BH DONVI DATA 2CH DEM DATA 2DH VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 51 ;=== ;khai bao ngat ORG 0000H LJMP INIT ORG 000BH DJNZ R0,THOATNGAT DEC DEM MOV R0,#20 MOV A,DEM THOATNGAT: RETI ;=== ORG 0030H ;Chuong trinh chinh INIT: MOV IE,#82H MOV TMOD,#01H MOV DEM,#250 MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 MOV R0,#20 MAIN: CALL HEXTOBCD CALL XUATLED CJNE A,#0,MAIN SJMP $ ;=== HEXTOBCD: MOV A,DEM MOV B,#100 DIV AB ADD A,#11010000B MOV TRAM,A MOV A,B MOV B,#10 DIV AB ADD A,#10110000B MOV CHUC,A MOV A,B ADD A,#01110000B MOV DONVI,A RET ;=== XUATLED: MOV P0,TRAM CALL DELAY MOV P0,CHUC CALL DELAY MOV P0,DONVI CALL DELAY ;=== DELAY: MOV R1,#100 LOOP: MOV R2,#200 DJNZ R2,$ DJNZ R1,LOOP VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 52 RET ;=== END ; PHẦN 2 : CHƯƠNG TRÌNH HIỆN THỊ LED 7 ĐOẠN VỚI SỐ ĐỒNG HỒ SỐ : ;Ngay viet :20/06/2008 ;=== GIAY DATA 7CH DONVIPHUT DATA 7DH PHUT DATA 7EH DONVIGIAY DATA 7FH CHUCPHUT DATA 2EH CHUCGIAY DATA 2FH ;=== ;Chuong trinh chinh ORG 0000H INIT: MOV TMOD,#01H MOV GIAY,#0 MOV PHUT,#0 ;=== MAIN: CALL DELAY1S INC GIAY MOV A,GIAY CJNE A,#60,MAIN MOV GIAY,#0 INC PHUT MOV A,PHUT CJNE A,#60,MAIN MOV PHUT,#0 SJMP MAIN ;=== HIENTHI: CALL MAHOA MOV P0,CHUCGIAY CALL DELAY MOV P0,DONVIGIAY CALL DELAY MOV P0,CHUCPHUT CALL DELAY MOV P0,DONVIPHUT CALL DELAY RET ;=== MAHOA: VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 53 MOV A,GIAY MOV B,#10 DIV AB ADD A,#10110000B MOV CHUCGIAY,A MOV A,B ADD A,#01110000B MOV DONVIGIAY,A MOV A,PHUT MOV B,#10 DIV AB ADD A,#11100000B MOV CHUCPHUT,A MOV A,B ADD A,#11010000B MOV DONVIPHUT,A RET ;=== DELAY1S: MOV R0,#20 LAPDELAY1S: CALL HIENTHI CALL DELAY50MS DJNZ R0,LAPDELAY1S RET ;=== DELAY50MS: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET DELAY: LOOP1: MOV R1,#10 LOOP2: MOV R2,#50 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== END ; BÀI 6: CHƯƠNG TRÌNH HIỂN THỊ LED 7 ĐOẠN PHẦN 2 : CHƯƠNG TRÌNH MỖI KHI CĨ NGẮT NGỒI THÌ TĂNG BIẾN ĐẾM HIỂN THỊ RA LED 7 ĐOẠN GIÁ TRỊ TỪ 0 ĐẾN 9 . ĐỒNG THỜI XUẤT XUNG CĨ TẦN SỐ 100HZ VÀ CĨ ĐỘ RỘNG ĐẾM /10 : VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 54 ;=== ;Khai bao bien / hang so / dau vao/ra DEM DATA 7EH ;=== ORG 0000H LJMP INIT ;=== ;Khai bao ngat ngoai o ORG 0003H LJMP NGATNGOAI0 ;=== ;Chuong trinh chinh INIT: MOV DEM,#0 SETB EA SETB EX0 SETB IT0 MOV A,DEM ;=== MAIN: BANG0: CJNE A,#0,KHAC0 MOV P2,#01111110B JMP MAIN KHAC0: CJNE A,#1,KHAC1 MOV P2,#00110000B SETB P1.7 CALL DELAY10MS CLR P1.7 CALL DELAY20MS CALL DELAY20MS CALL DELAY50MS LJMP MAIN KHAC1: CJNE A,#2,KHAC2 MOV P2,#01101101B SETB P1.7 CALL DELAY20MS CLR P1.7 CALL DELAY20MS CALL DELAY10MS CALL DELAY50MS LJMP MAIN KHAC2: CJNE A,#3,KHAC3 MOV P2,#01111001B SETB P1.7 CALL DELAY20MS CALL DELAY10MS CLR P1.7 CALL DELAY20MS CALL DELAY50MS LJMP MAIN KHAC3: VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 55 CJNE A,#4,KHAC4 MOV P2,#00110011B SETB P1.7 LCALL DELAY20MS LCALL DELAY20MS CLR P1.7 CALL DELAY10MS CALL DELAY50MS LJMP MAIN KHAC4: CJNE A,#5,KHAC5 MOV P2,#01011011B SETB P1.7 CALL DELAY50MS CLR P1.7 CALL DELAY50MS LJMP MAIN KHAC5: CJNE A,#6,KHAC6 MOV P2,#01011111B SETB P1.7 CALL DELAY10MS CALL DELAY50MS CLR P1.7 CALL DELAY20MS CALL DELAY20MS LJMP MAIN KHAC6: CJNE A,#7,KHAC7 MOV P2,#01110000B SETB P1.7 CALL DELAY50MS CALL DELAY20MS CLR P1.7 CALL DELAY10MS CALL DELAY20MS LJMP MAIN KHAC7: CJNE A,#8,KHAC8 MOV P2,#01111111B SETB P1.7 CALL DELAY20MS CALL DELAY10MS CALL DELAY50MS CLR P1.7 LCALL DELAY20MS LJMP MAIN KHAC8: MOV P2,#01111011B SETB P1.7 CALL DELAY50MS CALL DELAY20MS CALL DELAY20MS CLR P1.7 LCALL DELAY10MS LJMP MAIN ;=== NGATNGOAI0: VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 56 INC DEM MOV A,DEM CJNE A,#10,THOATNGAT MOV DEM,#0 MOV A,DEM THOATNGAT: RETI ;=== DELAY20MS: MOV R1,#100 LOOP: MOV R2,#100 DJNZ R2,$ DJNZ R1,LOOP RET ;=== DELAY10MS: MOV R1,#100 LOOP1: MOV R2,#50 DJNZ R2,$ DJNZ R1,LOOP1 RET ;=== DELAY50MS: MOV R1,#100 LOOP2: MOV R2,#250 DJNZ R2,$ DJNZ R1,LOOP2 RET END ; PHẦN 3 : CHƯƠNG TRÌNH MỖI KHI CĨ NGẮT NGỒI THÌ TĂNG BIẾN ĐẾM HIỂN THỊ RA LED 7 ĐOẠN GIÁ TRỊ TỪ 0 ĐẾN 9 . ĐỒNG THỜI XUẤT XUNG CĨ TẦN SỐ 100HZ VÀ CĨ ĐỘ RỘNG ĐẾM /10 . CĨ ĐỌC ENCODER : ;=== ;Khai bao bien / hang so / dau vao/ra DEM DATA 7EH TRAM DATA 7FH CHUC DATA 7AH DONVI DATA 7BH ;=== ;Khai bao ngat ngoai o ORG 0000H LJMP INIT ;=== ORG 0003H LJMP NGATNGOAI0 ;=== ;Chuong trinh chinh ORG 0030H VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 57 INIT: SETB IT0 ;Ngat Canh Xuong MOV TMOD,#50H ;Timer1 Dem 16bit, Hoat Dong Che Do Counter MOV TH1,#0 MOV TL1,#0 MOV IE,#10000001B MOV DEM,#0 MOV A,DEM CLR TR1 MAIN: CALL HEXTOBCD CALL XUATLED ;=== KIEM_TRA: BANG0: CJNE A,#0,KHAC0 MOV P2,#0 LJMP MAIN KHAC0: CJNE A,#1,KHAC1 SETB P1.7 CALL DELAY10MS CLR P1.7 CALL DELAY20MS CALL DELAY20MS CALL DELAY50MS LJMP MAIN KHAC1: CJNE A,#2,KHAC2 SETB P1.7 CALL DELAY20MS CLR P1.7 CALL DELAY20MS CALL DELAY10MS CALL DELAY50MS LJMP MAIN KHAC2: CJNE A,#3,KHAC3 SETB P1.7 CALL DELAY20MS CALL DELAY10MS CLR P1.7 CALL DELAY20MS CALL DELAY50MS LJMP MAIN KHAC3: CJNE A,#4,KHAC4 SETB P1.7 LCALL DELAY20MS LCALL DELAY20MS CLR P1.7 CALL DELAY10MS CALL DELAY50MS LJMP MAIN KHAC4: CJNE A,#5,KHAC5 SETB P1.7 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 58 CALL DELAY50MS CLR P1.7 CALL DELAY50MS LJMP MAIN KHAC5: CJNE A,#6,KHAC6 SETB P1.7 CALL DELAY10MS CALL DELAY50MS CLR P1.7 CALL DELAY20MS CALL DELAY20MS LJMP MAIN KHAC6: CJNE A,#7,KHAC7 SETB P1.7 CALL DELAY50MS CALL DELAY20MS CLR P1.7 CALL DELAY10MS CALL DELAY20MS LJMP MAIN KHAC7: CJNE A,#8,KHAC8 SETB P1.7 CALL DELAY20MS CALL DELAY10MS CALL DELAY50MS CLR P1.7 LCALL DELAY20MS LJMP MAIN KHAC8: SETB P1.7 CALL DELAY50MS CALL DELAY20MS CALL DELAY20MS CLR P1.7 LCALL DELAY10MS LJMP MAIN ;=== NGATNGOAI0: INC DEM MOV P2,DEM MOV A,DEM CJNE A,#10,THOATNGAT MOV DEM,#0 MOV P2,DEM MOV A,DEM THOATNGAT: RETI ;=== HEXTOBCD: MOV A,TH1 MOV B,#100 DIV AB ADD A,#11010000B MOV TRAM,A MOV A,B VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 59 MOV B,#10 DIV AB ADD A,#10110000B MOV CHUC,A MOV A,B ADD A,#01110000B MOV DONVI,A RET ;=== XUATLED: MOV P0,TRAM CALL DELAY10MS MOV P0,CHUC CALL DELAY10MS MOV P0,DONVI CALL DELAY10MS RET ;=== DELAY10MS: MOV R1,#100 LOOP1: MOV R2,#50 DJNZ R2,$ DJNZ R1,LOOP1 RET ;=== DELAY20MS: MOV R1,#100 LOOP: MOV R2,#100 DJNZ R2,$ DJNZ R1,LOOP RET DELAY50MS: MOV R1,#100 LOOP2: MOV R2,#250 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== END ; BÀI 7: CHƯƠNG TRÌNH CÁC BỘ ĐỊNH THỜI TIMER PHẦN 1 : CHƯƠNG TRÌNH TẠO XUNG VUƠNG TẦN SỐ 20KHZ TRÊN CHÂN P1.0 ;=== ORG 0000H ;=== ;Chuong trinh chinh MAIN: MOV TMOD,#20H VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 60 MOV TH1,#HIGH(-25) SETB TR1 WAIT: JNB TF1,WAIT CLR TF1 CPL P1.0 SJMP WAIT ;=== END ; PHẦN 2 : CHƯƠNG TRÌNH TẠO XUNG VUƠNG TẦN SỐ 8KHZ TRÊN CHÂN P1.2 ;=== ;Khai bao bien / hang so / dau vao/ra ;8KHZ CO 125 CKM VOI MUC CAO 62CKM , MUC THAP 62CKM ;=== ORG 0000H ;=== ;Chuong trinh chinh MAIN: MOV TMOD,#20H MOV TH1,#HIGH(-62) SETB TR1 WAIT: JNB TF1,WAIT CLR TF1 CPL P1.2 SJMP WAIT ;=== END ; PHẦN 3 : CHƯƠNG TRÌNH TẠO XUNG VUƠNG TẦN SỐ 1KHZ TRÊN CHÂN P1.2 ;=== ;Khai bao bien / hang so / dau vao/ra ;1KHZ CO 1000 CKM VOI MUC CAO 500 CKM , MUC THAP 500 CKM ;=== ORG 0000H ;=== ;Chuong trinh chinh MAIN: MOV TMOD,#10H AGAIN: MOV TH1,#HIGH(-500) VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 61 MOV TL1,#LOW(-500) SETB TR1 WAIT: JNB TF1,WAIT CLR TF1 CLR TR1 CPL P1.2 SJMP AGAIN ;=== END ; PHẦN 4 : CHƯƠNG TRÌNH TẠO XUNG VUƠNG TẦN SỐ 20KHZ TRÊN CHÂN P1. 3 VÀ 1KHZ TRÊN CHÂN P1.0 ;=== ORG 0000H ;=== ;Chuong trinh chinh MAIN: MOV TMOD,#21H MOV TH0,#HIGH(-5000) MOV TL0,#LOW(-5000) MOV TH1,#HIGH(-25) SETB TR1 SETB TR0 MOV R0,#100 MOV R1,#10 WAIT: JB TF0,TANSO1 JB TF1,TANSO2 SJMP WAIT TANSO1: CLR TR0 CLR TF0 MOV TH0,#HIGH(-5000) MOV TL0,#LOW(-5000) SETB TR0 DJNZ R0,WAIT CPL P1.0 SJMP WAIT TANSO2: CLR TF1 DJNZ R1,WAIT CPL P1.3 SJMP WAIT ;=== END ; PHẦN 5 : CHƯƠNG TRÌNH TẠO XUNG VUƠNG TẦN SỐ 10KHZ TRÊN CHÂN P1.0 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 62 VỚI MỨC CAO 75 CKM MỨC THẤP 25 CKM CÁCH 1 : ;=== ORG 0000H ;=== ;Chuong trinh chinh MAIN: MOV TMOD,#22H MOV TH0,#(-75) MOV TH1,#(-100) SETB TR0 SETB TR1 WAIT: JB TF0,LOOP1 JB TF1,LOOP2 SJMP WAIT LOOP1: CLR TF0 CLR P1.1 SJMP WAIT LOOP2: CLR TF1 SETB P1.1 SJMP WAIT ;=== END ; CÁCH 2: ;=== ORG 0000H ;=== ;Chuong trinh chinh MAIN: MOV TMOD,#02H WAIT: MOV TH0,#HIGH(-75) SETB TR0 WAIT1: JNB TF0,WAIT1 CLR TF0 CLR P1.0 MOV TH0,#HIGH(-25) SETB TR0 WAIT2: JNB TF0,WAIT2 SETB P1.0 SJMP WAIT ;=== END VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 63 ; PHẦN 6 : CHƯƠNG TRÌNH TẠO XUNG VUƠNG TẦN SỐ 2KHZ TRÊN CHÂN P1.3 VỚI MỨC CAO 400 CKM MỨC THẤP 100 CKM ;=== ORG 0000H ;=== ;Chuong trinh chinh MAIN: MOV TMOD,#11H LAP: MOV TH0,#HIGH(-400) MOV TL0,#LOW(-400) MOV TH1,#HIGH(-500) MOV TL1,#LOW(-500) SETB TR0 SETB TR1 SETB P1.3 WAIT: JB TF0,LOOP1 JB TF1,LOOP2 SJMP WAIT LOOP1: CLR TF0 CLR P1.3 SJMP WAIT LOOP2: CLR TF1 SETB P1.3 SJMP LAP ;=== END ; BÀI 8: CHƯƠNG TRÌNH NGẮT NGỒI : PHẦN 1 : CHƯƠNG TRÌNH NHẤN START (P3.2) ĐÈN SÁNG SAU 15S THÌ TẮT , TRONG QUÁ TRÌNH ĐÈN SÁNG NẾU NHẤN START KHƠNG CĨ TÁC DỤNG ;=== ;Khai bao ngat ngoai o ;=== ORG 0000H JMP MAIN ORG 0003H JMP NGATNGOAIO ORG 000BH JMP NGATTIMER0 ;=== VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 64 ;Chuong trinh chinh MAIN: MOV IE,#83H MOV TMOD,#01H MOV TH0,#HIGH(-60000) MOV TL0,#LOW(-60000) CLR P1.1 SJMP $ ;=== NGATNGOAIO: SETB P1.1 MOV R0,#0 SETB TF0 RETI ;=== NGATTIMER0: CLR EX0 INC R0 CLR TR0 MOV TH0,#HIGH(-60000) MOV TL0,#LOW(-60000) SETB TR0 CJNE R0,#250,EXIT CLR P1.1 SETB EX0 CLR TR0 EXIT: RETI ;=== END ; PHẦN 2 : CHƯƠNG TRÌNH NHẤN START (P3.2) ĐÈN SÁNG SAU 15S THÌ TẮT , TRONG QUÁ TRÌNH ĐÈN SÁNG NẾU NHẤN START THÌ ĐÈN SÁNG THÊM 15S NỮA : ;=== ORG 0000H LJMP MAIN ;=== ;Khai bao ngat ORG 0003H LJMP NGATNGOAIO ORG 000BH LJMP NGATTIMER0 ;=== ;Chuong trinh chinh MAIN: MOV IE,#83H MOV TMOD,#01H MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) MOV P0,#0FFH CLR P1.1 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 65 SJMP $ ;=== NGATNGOAIO: SETB P1.1 MOV R0,#0 SETB TF0 RETI ;=== NGATTIMER0: INC R0 CLR TR0 MOV TH0,#HIGH(-60000) MOV TL0,#LOW(-60000) SETB TR0 CJNE R0,#250,EXIT CLR P1.1 CLR TR0 EXIT: RETI ;=== END ; PHẦN 3 : CHƯƠNG TRÌNH NHẤN VÀ DỮ START (P3.2) ĐÈN SÁNG. KHI NHẢ TAY RA ĐÈN SANG SAU 15S THÌ TẮT , TRONG QUÁ TRÌNH ĐÈN SÁNG NẾU NHẤN START THÌ KHƠNG CĨ TÁC DỤNG : ;=== ORG 0000H LJMP MAIN ;=== ;Khai bao ngat ORG 0003H LJMP NHANSTART ORG 000BH LJMP NGATTIMER0 ;=== ;Chuong trinh chinh MAIN: MOV IE,#83H MOV TMOD,#01H MOV TH0,#HIGH(-60000) MOV TL0,#LOW(-60000) CLR P1.1 SJMP $ ;=== NHANSTART: SETB P1.1 MOV R0,#0 JNB P3.2,$ SETB TF0 RETI ;=== NGATTIMER0: CLR EX0 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 66 INC R0 CLR TR0 MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 CJNE R0,#250,EXIT CLR P1.1 CLR TR0 SETB EX0 EXIT: RETI ;=== END ; BÀI 9: CHƯƠNG TRÌNH NGẮT BỘ ĐỊNH THỜI TIMER PHẦN 1 : CHƯƠNG TRÌNH TẠO XUNG VUƠNG TẦN SỐ 2KHZ TRÊN CHÂN P1.1 SỬ DỤNG NGẮT TIMER1 ;2KHZ CO 500 CKM VOI MUC CAO 250CKM , MUC THAP 250 CKM ;=== ORG 0000H LJMP MAIN ;=== ;Khai bao ngat ngoai ORG 001BH CPL P1.1 RETI ;=== ORG 0030H ;Chuong trinh chinh MAIN: MOV IE,#88H MOV TMOD,#20H MOV TH1,#HIGH(-250) SETB TR1 JMP $ ;=== END ; PHẦN 2 : CHƯƠNG TRÌNH TẠO XUNG VUƠNG TẦN SỐ 500HZ TRÊN CHÂN P1.1 SỬ DỤNG NGẮT TIMER1 ;500HZ CO 2000 CKM VOI MUC CAO 1000CKM , MUC THAP 1000 CKM ;=== ORG 0000H LJMP MAIN ;=== ;Khai bao ngat ngoai ORG 001BH VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 67 CPL P1.1 CLR TR1 MOV TH1,#HIGH(-1000) MOV TL1,#LOW(-1000) SETB TR1 RETI ;=== ORG 0030H ;Chuong trinh chinh MAIN: MOV IE,#88H MOV TMOD,#10H MOV TH1,#HIGH(-1000) MOV TL1,#LOW(-1000) SETB TR1 JMP $ ;=== END ; PHẦN 3 : CHƯƠNG TRÌNH TẠO XUNG VUƠNG TẦN SỐ 10KHZ TRÊN CHÂN P1.0 VỚI MỨC CAO 75 CKM MỨC THẤP 25 CKM . SỬ DỤNG NGẮT TIMER ;=== ORG 0000H LJMP MAIN ;=== ;Khai bao ngat ngoai ORG 001BH LJMP NGATTIMER1 ORG 000BH LJMP NGATTIMER0 ;=== ORG 0030H ;Chuong trinh chinh MAIN: MOV IE,#8AH MOV TMOD,#22H MOV TH1,#(-100) MOV TH0,#(-75) SETB TR0 SETB TR1 SJMP $ NGATTIMER0: CLR TF0 CLR P1.0 CLR ET0 ;Ngung Ngat Timer0 CLR TR0 ;Ngung Hoat Dong Timer0 RETI NGATTIMER1: CLR TF1 SETB P1.0 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 68 SETB ET0 ;Cho phep Ngat Timer0 SETB TR0 ;Cho Timer0 Hoat Dong RETI ;=== END ; PHẦN 4 : CHƯƠNG TRÌNH TẠO XUNG VUƠNG TẦN SỐ 1KHZ TRÊN CHÂN P1.0 VỚI MỨC CAO 750 CKM MỨC THẤP 250 CKM ;=== ORG 0000H LJMP MAIN ;=== ;Khai bao ngat ngoai ORG 001BH LJMP NGATTIMER1 ORG 000BH LJMP NGATTIMER0 ;=== ORG 0030H ;Chuong trinh chinh MAIN: MOV IE,#8AH MOV TMOD,#21H MOV TH1,#(-250) MOV TH0,#HIGH(-1000) MOV TL0,#LOW(-1000) SETB TR0 SETB TR1 SJMP $ NGATTIMER0: CLR TR0 CLR P1.0 MOV TH0,#HIGH(-1000) MOV TL0,#LOW(-1000) SETB TR0 SETB ET1 ;Ngung Ngat Timer0 SETB TR1 ;Ngung Hoat Dong Timer0 RETI NGATTIMER1: SETB P1.0 CLR ET1 ;Cho phep Ngat Timer0 CLR TR1 ;Cho Timer0 Hoat Dong RETI ;=== END ; VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 69 PHẦN 5 : CHƯƠNG TRÌNH TẠO XUNG VUƠNG TẦN SỐ 10KHZ TRÊN CHÂN P1.0 VỚI MỨC CAO 400 CKM MỨC THẤP 100 CKM ;=== ORG 0000H LJMP MAIN ;=== ;Khai bao ngat ngoai ORG 001BH LJMP NGATTIMER1 ORG 000BH LJMP NGATTIMER0 ;=== ORG 0030H ;Chuong trinh chinh MAIN: MOV IE,#8AH MOV TMOD,#11H MOV TH0,#HIGH(-400) MOV TL0,#LOW(-400) MOV TH1,#HIGH(-500) MOV TL1,#LOW(-500) SETB TR0 SETB TR1 CLR P1.0 SJMP $ ;=== NGATTIMER1: CLR TR1 CLR P1.0 MOV TH0,#HIGH(-400) MOV TL0,#LOW(-400) MOV TH1,#HIGH(-500) MOV TL1,#LOW(-500) SETB TR1 SETB ET0 ;Cho phep Ngat Timer0 SETB TR0 ;Cho Timer0 Hoat Dong RETI ;=== NGATTIMER0: SETB P1.0 CLR ET0 ;Ngung Ngat Timer0 CLR TR0 ;Ngung Hoat Dong Timer0 RETI ;=== END ; PHẦN 6A : CHƯƠNG TRÌNH TẠO XUNG VUƠNG TẦN SỐ 1KHZ TRÊN CHÂN P1.0 VỚI MỨC CAO 500 CKM ( KHI Ở MỨC CAO LÀ 1 XUNG VUƠNG NHỎ CĨ MỨC CAO 25 MỨC THẤP 25 ) MỨC THẤP 500 CKM ;=== VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 70 ORG 0000H LJMP MAIN ;=== ;Khai bao ngat ngoai ORG 001BH LJMP NGATTIMER1 ORG 000BH LJMP NGATTIMER0 ;=== ORG 0030H ;Chuong trinh chinh MAIN: MOV IE,#8AH MOV TMOD,#12H MOV TH0,#HIGH(-25) MOV TH1,#HIGH(-500) MOV TL1,#LOW(-500) SETB TR0 SETB TR1 CLR P1.0 SJMP $ ;=== NGATTIMER1: CLR TR1 MOV TH1,#HIGH(-500) MOV TL1,#LOW(-500) CPL P1.0 SETB TR1 RETI ;=== NGATTIMER0: CPL P1.1 RETI ;=== END ; PHẦN 6B : CHƯƠNG TRÌNH TẠO XUNG VUƠNG TẦN SỐ 1KHZ TRÊN CHÂN P1.0 VỚI MỨC CAO 10S ( KHI Ở MỨC CAO LÀ 1 XUNG VUƠNG NHỎ CĨ MỨC CAO 100CKM MỨC THẤP 100CKM ) MỨC THẤP 10S ;=== ORG 0000H LJMP MAIN ;=== ;Khai bao ngat ngoai ORG 001BH LJMP NGATTIMER1 ORG 000BH LJMP NGATTIMER0 ;=== ORG 0030H ;Chuong trinh chinh MAIN: VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 71 MOV IE,#8AH MOV TMOD,#21H MOV TH1,#(-100) MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR1 SETB TR0 MOV R7,#200 SJMP $ ;=== NGATTIMER0: CLR TR0 MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 DJNZ R7,THOAT CPL TR1 CPL ET1 CPL P1.0 THOAT: RETI ;=== NGATTIMER1: CPL P1.0 RETI ;=== END ; BÀI 10: CHƯƠNG TRÌNH ĐIỀU KHIỂN LED ĐƠN Bài 1: "sáng lần lượt" Phần cứng: 8 led nối với Port 1, được định vị trí như sau: led 1 nối với P1.0, lần lượt cho đến led 8 (nối với P1.7). Biết led sáng khi tín hiệu xuất ở các chân Port 1 ở giá trị 1. Viết chương trình để các led nối với Port 1 sáng lần lượt từng led từ led 1 đến led 8. Các quá trình trên được lặp lại khơng ngừng. Minh hoạ: • Cách 1: Cách này đơn giản là làm cho các led sáng bằng cách thiết đặt các giá trị thích hợp cho các bit của Port để làm led sáng theo từng trạng thái, cách này đơn giản nhưng cần viết dài và tốn dung lượng bộ nhớ Rom. Chương trình : VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 72 ; Chuong trình; ; ///// LED SANG LAN LUOT -CACH DON GIAN \\\\\\ ; ////////___ led sang lan luot tu led 1 den led 8-P1___\\\\\\\ ; //////////___ sang o muc 1 va tat o muc 0___\\\\\\\\\\\\\ ; ////////___ lap di lap lai khong gioi han___\\\\\\\\ ; \\\\\\\\\\\\ nap gia tri cho tung trang thai //// ORG 000H ; khai bao dia chi de bat dau chuong trinh tren Rom MOV P1,#00000000B ;===>>>> lam 8 led noi P1 tat LCALL DELAY ;===>>>>goi chuong trinh con Delay XUAT: MOV P1,#00000001B ;===>>>> lam led 1 sang LCALL DELAY MOV P1,#00000010B ;===>>>> lam led 2 sang LCALL DELAY MOV P1,#00000100B ;===>>>> lam led 3 sang LCALL DELAY MOV P1,#00001000B ;===>>>> lam led 4 sang LCALL DELAY MOV P1,#00010000B ;===>>>> lam led 5 sang LCALL DELAY MOV P1,#00100000B ;===>>>> lam led 6 sang LCALL DELAY MOV P1,#01000000B ;===>>>> lam led 7 sang LCALL DELAY MOV P1,#10000000B ;===>>>> lam led 8 sang LCALL DELAY SJMP XUAT ;===>>>> nhay ve thuc hien tu dau ; >>>>>>>>>>>>>> delay >>> ga'n R7=#0FFH, 1 chu ki may KT2: MOV R6,#0FFH ;===>>>> ga'n R6=#0FFH, 1 chu ki may KT1: DJNZ R6,KT1 ;===>>>> giam R6 xuong 1, R6 khac 0->giam tiep,2ckm DJNZ R7 ,KT2 ;===>>>> giam R7 xuong 1, R6 khac 0-> ve Kt2,2ckm RET ;===>>>> ket thuc chuong trinh con Delay ;___ END ;===>>>> ket thuc chuong trinh ; Cách2: Để led sáng lần lượt, cần làm cho tín hiệu xuất ra giá trị 1 một khoảng thời gian để cĩ thể nhận biết được. Đầu tiên cho P1 tắt, sau đĩ làm cho bit A.0 lên 1, sử dụng lệnh xoay trái dữ liệu trên thanh Ram A, mỗi lần xoay giá trị 1 sẽ chuyển lần lượt qua A.1 - A.2 - A.3 -A.4 - A.5 -A.6 - A.7 - A.0, mỗi lần xoay xuất tín hiệu ra P1 sẽ thấy led sáng lần lượt từ led 1 đến led 8. VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 73 Chương trình: ; Chuong trình:; ; ///// LED SANG LAN LUOT \\\\\\ ; ; ////////////////___ led sang lan luot tu led 1 den led 8___\\\\\\\\\\\\\\\\\\\\\\\\\\\ ; ///////////////___ sang o muc 1 va tat o muc 0___\\\\\\\\\\\\\\\\\\\\\\\\\ ; //////////////___ lap di lap lai khong gioi han___\\\\\\\\\\\\\\\\\\\\\ ; >>>>>>>>>>>>> ; \\\\\\\\\\\\ nap thanh Ram A=#00000001B //////////////// ; \\\\\\\\\\\\\ ket hop xoay phai thanh Ram A va xuat du lieu //////////////// ; ORG 000H ; khai bao dia chi de bat dau chuong trinh tren Rom MOV P1,#0 ;===>>>> lam 8 led noi P1 tat LCALL DELAY ;===>>>>goi chuong trinh con Delay MOV A,#00000001B ;===>>>> A co gia tri 00000001B XUAT: MOV P1,A ;===>>>> xuat du lieu A ra P1 dieu khien led LCALL DELAY ;===>>>>goi chuong trinh con Delay RL A SJMP XUAT ;===>>>> nhay ve thuc hien tu dau ; >>>> >>>>>>>>>>>> delay >>> ga'n R7=#0FFH, 1 chu ki may KT2: MOV R6,#0FFH ;===>>>> ga'n R6=#0FFH, 1 chu ki may KT1: DJNZ R6,KT1 ;===>>>> giam R6 xuong 1, R6 khac 0->giam tiep,2ckm VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 74 DJNZ R7 ,KT2 ;===>>>> giam R7 xuong 1, R6 khac 0-> ve Kt2,2ckm RET ;===>>>> ket thuc chuong trinh con Delay ;___ END ;===>>>> ket thuc chuong trinh ; Giải thích: ORG 000H là lệnh chỉ dẫn: chương trình này được lưu vào ROM bắt đầu từ địa chỉ 000H. Khi mới bắt đầu chương trình, Mov P1,#0 làm tất cả các led đều tắt, LCall Delay làm cho thời gian tắt đủ để mắt người nhận ra. Mov A,#00000001B làm cho bit A.0 của thanh ghi A được set lên 1, các bit cịn lại ở giá trị 0. Tiếp theo trong chương trình là nhãn Xuat: vị trí trở về, trên lưu đồ giải thuật là điểm mũi tên trở về. Mov P1,A xuất tín hiệu ra P1, lúc này led 1 sáng lên. Tiếp theo là lệnh gọi chương trình con LCall Delay. Câu lệnh RL A làm trạng thái các bit dịch sang trái 1 bit, trước đĩ chỉ cĩ A.0 ở giá trị 1, sau câu lệnh A.1 mang giá trị 1, cịn bit A.0 bây giờ mang giá trị 0 do bit A.7 cĩ giá trị 0 chuyển sang. Sjmp Xuat chương trình nhảy đến đoạn chương trình được đánh dấu bằng nhãn Xuat, nên nhớ rằng chương lệnh gọi Sjmp chỉ nhảy được đến vị trí cách lệnh gọi khơng quá 128 byte, nếu vượt qua giới hạn này chương trình dịch sẽ báo lỗi, khi đĩ cần thay Sjmp bằng Ljmp vì Ljmp cĩ thể nhảy đến vị trí bất kì trên ROM. Lúc này chương trình bắt đầu từ nhãn Xuat: Sau nhãn Xuat: là câu lệnh Mov P1,A tín hiệu được xuất ra P1, lúc này P1.1 lên giá trị 1, led thứ hai sáng, các led cịn lại khơng sáng. Câu lệnh RL A làm trạng thái các bit dịch sang trái 1 bit: A.2 lên 1, các bit khác mang giá trị 0. Các quá trình trên được lặp lại liên tục (với câu lệnh Sjmp Xuat và nhãn Xuat: ). Kết quả cuối cùng như trên hình minh họa phía trên. Bài 2: "sáng lần lượt" Phần cứng: 32 led nối với Port 0,1,2,3, được định vị trí như sau: led 1 nối với P0.0, lần lượt cho đến led 32 (nối với P3.7). Biết led sáng khi tín hiệu xuất ở giá trị 1.Viết chương trình để các led nối với Port 0,1,2,3 sáng lần lượt từng led từ led 1 đến led 32. Các quá trình được lặp lại khơng giới hạn. Minh hoạ: VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 75 Cách 1: Cách này cũng như cách 1 trong bài 5, làm cho các led sáng bằng cách thiết đặt các giá trị thích hợp cho các Port để làm led sáng theo từng trạng thái, cách này đơn giản nhưng cần viết dài và tốn dung lượng bộ nhớ Rom. ; ///// 32 LED SANG LAN LUOT- CACH DON GIAN \\\\\\ ; ////////////////___ led sang lan luot tu led 1 den led 32___\\\\\\\\\\\\\\\\\\\\\\\\\\\ ; ///////////////___ sang o muc 1 va tat o muc 0___\\\\\\\\\\\\\\\\\\\\\\\\\ ; //////////////___ lap di lap lai khong gioi han___\\\\\\\\\\\\\\\\\\\\\ ; >>>>>>>>>>>>> ; \\\\\\\\\\\\ nap gia tr? cho tung trang thai //////////////// ; ORG 000H ; Khai Bao Dia Chi De Bat Dau Chuong Trinh Tren Rom MOV P0,#0 ;===>>>> ||| MOV P1,#0 ;===>>>> ||| CAC LED DEU TAT MOV P2,#0 ;===>>>> ||| MOV P3,#0 ;===>>>> ||| LCALL DELAY ;===>>>>GOI CHUONG TRINH CON DELAY XUAT: ; >>>> >>> LAM LED P0 SANG >>> LAM LED 1 SANG LCALL DELAY ;===>>>>GOI CHUONG TRINH CON DELAY MOV P0,#00000010B ;===>>>> LAM LED 2 SANG LCALL DELAY MOV P0,#00000100B ;===>>>> LAM LED 3 SANG LCALL DELAY MOV P0,#00001000B ;===>>>> LAM LED 4 SANG LCALL DELAY MOV P0,#00010000B ;===>>>> LAM LED 5 SANG LCALL DELAY MOV P0,#00100000B ;===>>>> LAM LED 6 SANG LCALL DELAY MOV P0,#01000000B ;===>>>> LAM LED 7 SANG LCALL DELAY MOV P0,#10000000B ;===>>>> LAM LED 8 SANG LCALL DELAY ; >>>> >>>>>>LAM LED P1 SANG >>> LAM P0 TAT MOV P1,#00000001B ;===>>>> LAM LED 1 SANG LCALL DELAY MOV P1,#00000010B ;===>>>> LAM LED 2 SANG LCALL DELAY MOV P1,#00000100B ;===>>>> LAM LED 3 SANG LCALL DELAY MOV P1,#00001000B ;===>>>> LAM LED 4 SANG LCALL DELAY MOV P1,#00010000B ;===>>>> LAM LED 5 SANG LCALL DELAY MOV P1,#00100000B ;===>>>> LAM LED 6 SANG LCALL DELAY MOV P1,#01000000B ;===>>>> LAM LED 7 SANG LCALL DELAY VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 76 MOV P1,#10000000B ;===>>>> LAM LED 8 SANG LCALL DELAY ; >>>>> LAM LED P2 SANG >>> LAM P1 TAT MOV P2,#00000001B ;===>>>> LAM LED 1 SANG LCALL DELAY MOV P2,#00000010B ;===>>>> LAM LED 2 SANG LCALL DELAY MOV P2,#00000100B ;===>>>> LAM LED 3 SANG LCALL DELAY MOV P2,#00001000B ;===>>>> LAM LED 4 SANG LCALL DELAY MOV P2,#00010000B ;===>>>> LAM LED 5 SANG LCALL DELAY MOV P2,#00100000B ;===>>>> LAM LED 6 SANG LCALL DELAY MOV P2,#01000000B ;===>>>> LAM LED 7 SANG LCALL DELAY MOV P2,#10000000B ;===>>>> LAM LED 8 SANG LCALL DELAY ; >> >>>LAM LED P1 SANG >>> LAM P2 TAT MOV P3,#00000001B ;===>>>> LAM LED 1 SANG LCALL DELAY MOV P3,#00000010B ;===>>>> LAM LED 2 SANG LCALL DELAY MOV P3,#00000100B ;===>>>> LAM LED 3 SANG LCALL DELAY MOV P3,#00001000B ;===>>>> LAM LED 4 SANG LCALL DELAY MOV P3,#00010000B ;===>>>> LAM LED 5 SANG LCALL DELAY MOV P3,#00100000B ;===>>>> LAM LED 6 SANG LCALL DELAY MOV P3,#01000000B ;===>>>> LAM LED 7 SANG LCALL DELAY MOV P3,#10000000B ;===>>>> LAM LED 8 SANG LCALL DELAY MOV P3,#00000000B ;===>>>> LAM LED P3 TAT LJMP XUAT ; ===>>>> NHAY VE THUC HIEN TU DAU ; >>>>>>>>>>>>>>>>>> DELAY >>> GAN R7=#0FFH, 1 CHU KI MAY KT2: MOV R6,#0FFH ;===>>>> GAN R6=#0FFH, 1 CHU KI MAY KT1: DJNZ R6,KT1 ;===>>>> GIAM R6 XUONG 1, R6 KHAC 0-> GIAM TIEP DJNZ R7,KT2 ;===>>>> GIAM R7 XUONG 1, R6 KHAC 0-> VE KT2 RET ;===>>>> KET THUC CHUONG TRINH CON ;___ ___ END ;===>>>> KET THUC CHUONG TRINH VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 77 ; Câu lệnh cuối quay trở về đầu phải dùng Ljmp Xuat chứ khơng sử dụng Sjmp vì khoảng cách từ vị trí chương trình bắt đầu đến câu lệnh gọi trở về lớn 128 Cách 2: Kết hợp các lệnh xoay và di chuyển dữ liệu để chương trình viết ngắn gọn hơn. Phân tích: Tại mỗi thời điểm chỉ cĩ 1 led sáng, do đĩ cĩ thể sử dụng lệnh xoay trái trạng thái các bit của các Port, với một bit nào đĩ được đặt lên 1, xoay bit này lần lượt qua P0,P1,P2,P3 sẽ đạt kết quả. Vấn đề đặt ra là làm sao để xoay 32 bit của P0,P1,P2,P3 trong khi đĩ chỉ cĩ thanh ghi A thực hiện được lệnh xoay. Khơng thể thực hiện xoay 32 bit của 4 Port bằng một lệnh duy nhất mà phải trải qua nhiều bước. Để xoay trạng thái các bit trong một ơ nhớ bất kì, đầu tiên chuyển giá trị của ơ nhớ đĩ lên thanh ghi A, rồi dùng lệnh xoay thanh ghi A, sau đĩ chuyển kết quả về lại ơ nhớ cần xoay,kết quả ơ nhớ đã được xoay. Bây giờ cĩ thể qui ước cụm từ "xoay ơ nhớ" thay cho các bước vừa nêu. Để xoay 32 bit (trong bài này là P0,P1,P2,P3), trước hết xoay trái ơ nhớ đầu tiên (P0) cùng với cờ C (giá trị đầu tiên của cờ C được được đặt trước tùy từng trường hợp cụ thể hoặc do chương trình thực hiện), sau khi xoay ơ nhớ đầu tiên với cờ C, các trạng thái của các bit trong ơ nhớ đĩ chuyển qua một bit, giá trị của cờ C chuyển vào bit 0, bit 7 của ơ nhớ đĩ chuyển vào cờ nhớ C. Xoay ơ nhớ thứ hai với cờ nhớ C, giá trị của C trước đĩ chuyển vào bit 0 của ơ nhớ thứ hai (mà giá trị này trước đĩ là của bit 7 ơ nhớ thứ nhất), giá trị của bit 7 trong ơ nhớ thứ hai chuyển vào cờ nhớ C. Tiếp tục xoay ơ nhớ thứ 3 và thứ 4 với cờ nhớ C. Kết quả cuối cùng trạng thái của 32 bit được dịch sang trái 1 bit, bit 0 của ơ nhớ đầu tiên là giá trị của C trước đĩ và giá trị của cờ nhớ C hiện tại là của bit 7 của ơ nhớ thứ 4 chuyển sang. Giải thuật: VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 78 Chương trình: VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 79 ; ///// 32 LED SANG LAN LUOT \\\\\\ ; ////////////////___ LED SANG LAN LUOT TU LED 1 DEN LED 32___\\\\\\\\\\\\\\ ; ///////////////___ SANG O MUC 1 VA TAT O MUC 0___\\\\\\\\\\\\\\\\\ ; //////////////___ LAP DI LAP LAI KHONG GIOI HAN___\\\\\\\\\\\\\\ ; >>>>>>>>>>>>> ; \\\\\\\\ SU DUNG LENH XOAY PHAI VOI CO C XOAY 32 BIT VOI C //////// ORG 000H ; KHAI BAO DIA CHI DE BAT DAU CHUONG TRINH TREN ROM MOV P0,#0 ;===>>>> ||| TAT TAT CA CA LED MOV P1,#0 ;===>>>> ||| MOV P2,#0 ;===>>>> ||| MOV P3,#0 ;===>>>> ||| SETB C ;===>>>> LAM CO C LEN 1 XOAY32BIT: MOV A,P0 ;|||||||||| RLC A ;||||||||||===>>>> XOAY TRAI P0 VOI CO NHO C MOV P0,A ;|||||||||| MOV A,P1 ;@@@@ RLC A ;@@@@ ===>>>> XOAY TRAI P1 VOI CO NHO C MOV P1,A ;@@@@ MOV A,P2 ;##### RLC A ;##### ===>>>> XOAY TRAI P2 VOI CO NHO C MOV P2,A ;##### MOV A,P3 ;!!!!!!!!!!! RLC A ;!!!!!!!!!!!===>>>> XOAY TRAI P3 VOI CO NHO C MOV P3,A ;!!!!!!!!!!! LCALL DELAY ;===>>>>GOI CHUONG TRINH CON DELAY SJMP XOAY32BIT ;===>>>> NHAY VE THUC HIEN TU DAU ; >>>>>>> >>>>>> DELAY KET THU CHUONG TRINH CON DELAY ;___ END ;===>>>> KET THUC CHUONG TRINH ; VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 80 Bài 3: " Sáng dồn 8 led" Phần cứng: 8 led nối với Port 0 được định vị trí như sau: led 1 nối với P0.0, lần lượt cho đến led 8 (nối với P0.7). Biết led sáng khi tín hiệu xuất ở mức 1.Viết chương trình để các led nối với Port 0 sáng dồn từ led 1 đến led 8 sau đĩ tắt hết led và lặp lại. Các quá trình được lặp lại khơng giới hạn. Minh hoạ: • Cách 1: Cách này đơn giản là làm cho các led sáng bằng cách thiết đặt các giá trị thích hợp cho các Port để làm led sáng theo từng trạng thái, cách này đơn giản nhưng cần viết dài và tốn dung lượng bộ nhớ Rom. Nếu cần thiết các bạn tự giải Cách 2: Ở cách này giải thuật phức tạp hơn: Chia quá trình sáng thành hai quá trình đơn: quá trình cĩ 1 led sáng xoay vịng và quá trình các led sáng cố định cĩ lưu giữ trạng thái led cuối chu trình, kết hợp hai chu trình trên sẽ ra kết quả cần thực hiện. Dùng thanh ghi R3 để làm cho bit mang giá trị 1 xoay vịng như ở bài 5. Dùng ơ nhớ 30H dùng lưu giá trạng thái cuối của quá trình.(ban đầu 30H= #00000000B) Thực hiện OR: R3 với 30H rồi xuất ra P0 sau mỗi lần R3 xoay 1 bit. Trong quá trình đầu: một bit mang giá trị 1 trên R3 xoay từ vị trí R3.0 đến R3.7, vì 30H lúc này đang mang giá trị là #00000000B, nên khi OR R3 với 30H rồi xuất ra P0 sẽ thấy 1 led sáng di chuyển từ led 1 đến led 8. Khi vị trí sáng đến led thứ 8 vi điều khiển lưu lại giá trị của P0 vào 30H. Trong quá trình hai: bit mang giá trị 1 trên R3 vẫn xoay, lúc này 30H cĩ bit 30H.7 đang ở giá trị 1 tức là 30H đang mang giá trị #10000000B,nên khi OR R3 với 30H rồi xuất ra P0 sẽ thấy led 8 sáng cố định, trong lúc đĩ cĩ 1 led sáng di chuyển từ led 1 đi vào. Đến led 7 vi điều khiển lưu lại giá trị P0 vào 30H (giá trị mới lưu là #11000000B). Các quá trình tiếp tục như trên. Như vậy cần phải đếm số quá trình đã thực hiện, khi quá trình thực hiện đến lần thứ 8, lúc này các led đều sáng hết, quá trình phải được lặp lại từ đầu. Dùng thanh ghi R0 để lưu giữ giá trị này Trong quá trình thực hiện, số bit tham gia vào xoay giá trị 1 sẽ giảm theo các quá trình, vì vậy cần kiểm sốt số lần xoay trái trong mỗi quá trình. Dùng thanh ghi R1 lưu giữ giá trị này. VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 81 Giải thuật VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 82 Chương trình: ; ///// SANG DON 8 LED \\\\\\ ; ////////////////___ SANG DAN TU LED 1 DEN LED 8___\\\\\\\\\\\\\\\\\\\ ; ///////////////___ SANG O MUC 1 VA TAT O MUC 0___\\\\\\\\\\\\\\ ; //////////////___ LAP DI LAP LAI KHONG GIOI HAN___\\\\\\\\\\\\\\\\\ ; >>>>>>>>>>>>> ORG 000H ; Khai Bao Dia Chi De Bat Dau Chuong Trinh Tren Rom TUDAU: MOV P0,#00H MOV R0,#8 ;+++>>>SO QUA TRINH THUC HIEN MOV 30H,#00H SD2: MOV 01H,00H ;+++>>> VI KHONG CO LENH MOV R1,R0 MOV R3,# 00H SETB C SD1: LCALL DELAY MOV A,R3 ;@@@@ RLC A ;@@@@===>>>XOAY TRAI R3 MOV R3,A ;@@@@ ORL A,30H ;+++>>> THUC HIEN PHEP OR GIUA A VA 30H, KET QUA O A MOV P0,A ;===>>>XUAT KET QUA RA P0 DJNZ R1,SD1 MOV 30H,P0 ;===>>> LUU GIU TRANG THAI CUOI DJNZ R0,SD2 LJMP TUDAU ; >>>>>>>> >>>>>>>>>>> DELAY >>> GAN R7=#0FFH, 1 CHU KI MAY KT2: MOV R6,#0FFH ;===>>>> GAN R6=#0FFH, 1 CHU KI MAY KT1: DJNZ R6,KT1 ;== > Giam R6 Xuong 1, R6 Khac 0-> Giam Tiep DJNZ R7,KT2 ;===>> GIAM R7 XUONG 1, R6 KHAC 0-> VE KT2 RET ;===>>>> KET THUC CHUONG TRINH CON ;___ END ;===>>>> KET THUC CHUONG TRINH ; VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 83 Bài 3: CHƯƠNG TRÌNH ĐIỀU KHIỂN LED SÁNG DẦN TỪ TRÁI QUA PHẢI LƯU ĐỒ GIẢI THUẬT : CHƯƠNG TRÌNH : ;Chuong trình:; ///// SANG DAN 8 LED \\\\\\ ; /////////////___ Sang dan tu trai qua phai___\\\\\\\\\\\\\\\ ; //////////___ sang o muc 0 va tat o muc 1___\\\\\\\\\\\ VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 84 ; //////////////___ lap di lap lai khong gioi han___\\\\\\\\\\ ; >>>>>>>>>>>>> ORG 000H ; khai bao dia chi de bat dau chuong trinh tren Rom TUDAU: MOV A,#0FFH ;===>>>> lam 8 led noi P3 tat LAP: MOV P1,A LCALL DELAY ;===>>>>goi chuong trinh con Delay CLR C ;===>>>> lam CO C Xuong O RLC A ;===>>> xoay thanh ghi A JC LAP ;===>>>> nhay ve nhan "X1" neu C=0 LJMP TUDAU ;===>>>> nhay ve thuc hien tu dau ; >>>>>>>>>>>>>>>> delay >>> ga'n R7=#0FFH, 1 chu ki may KT3: MOV 71H,#100 KT2: MOV 72H,#0FFH ;===>>>> ga'n R6=#0FFH, 1 chu ki may KT1: DJNZ 72H,KT1 ;===>>>> giam R6 xuong 1, R6 khac 0->giam tiep,2ckm DJNZ 71H,KT2 ;===>>>> giam R7 xuong 1, R6 khac 0-> ve Kt2,2ckm DJNZ 70H,KT3 RET ;===>>>> ket thuc chuong trinh con Delay ;=== END ;===>>>> ket thuc chuong trinh ; Bài 4: CHƯƠNG TRÌNH ĐIỀU KHIỂN LED SÁNG DẦN TỪ PHẢI QUA TRÁI LƯU ĐỒ GIẢI THUẬT : ;Chuong trình:; ///// SANG DAN 8 LED \\\\\\ ; /////////////___ Sang dan tu phai qua trai___\\\\\\\\\\\\\\\ ; //////////___ sang o muc 0 va tat o muc 1___\\\\\\\\\\\ ; //////////////___ lap di lap lai khong gioi han___\\\\\\\\\\ ; >>>>>>>>>>>>> VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 85 ORG 000H ; khai bao dia chi de bat dau chuong trinh tren Rom TUDAU: MOV A,#0FFH ;===>>>> lam 8 led noi P1 tat LCALL DELAY ;===>>>>goi chuong trinh con Delay LAP: MOV P1,A LCALL DELAY ;===>>>>goi chuong trinh con Delay CLR C ;===>>>> lam CO C Xuong O RRC A ;===>>> xoay thanh ghi A JC LAP ;===>>>> nhay ve nhan "X1" neu C=0 LJMP TUDAU ;===>>>> nhay ve thuc hien tu dau ; >>>>>>>>>>>>>>>> delay >>> ket thuc chuong trinh con Delay ;=== END ;===>>>> ket thuc chuong trinh ; Bài 5: CHƯƠNG TRÌNH ĐIỀU KHIỂN LED SÁNG DẦN TỪ TRÁI QUA PHẢI RỒI TẮT TỪ TRÁI QUA PHẢI ;Chuong trình: ///// SANG DAN 8 LED \\\\\\ ; /////////////___ Sang dan tu trai sang phai roi tat dan tu trai sang phai___\\\\\\\\\\\\\\\ ; //////////___ sang o muc 0 va tat o muc 1___\\\\\\\\\\\ ; //////////////___ lap di lap lai khong gioi han___\\\\\\\\\\ ; >>>>>>>>>>>>> ORG 000H ; khai bao dia chi de bat dau chuong trinh tren Rom TUDAU: MOV A,#0FFH ;===>>>> lam 8 led noi P1 tat LAP1: MOV P1,A ;===>>>> xuat ra led LCALL DELAY ;===>>>>goi chuong trinh con Delay CLR C ;===>>>> lam co C xuong 0 RLC A ;===>>> xoay thanh ghi A JC LAP1 ;===>>>> nhay ve nhan "LAP1" neu C=1 MOV A,#00H ;===>>>> lam 8 led noi P1 sang LAP2: MOV P1,A ;===>>>> xuat ra led LCALL DELAY ;===>>>>goi chuong trinh con Delay SETB C ;===>>>> lam co C len 1 RLC A ;===>>> xoay thanh ghi A JNC LAP2 ;===>>>> nhay ve nhan "LAP2" neu C=0 SJMP TUDAU ;===>>>> nhay ve thuc hien tu dau ; >>>>>>>>>>>>>>>> delay >>> ga'n R7=#0FFH, 1 chu ki may VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 86 KT2: MOV R6,#0FFH ;===>>>> ga'n R6=#0FFH, 1 chu ki may KT1: DJNZ R6,KT1 ;===>>>> giam R6 xuong 1, R6 khac 0->giam tiep,2ckm DJNZ R7 ,KT2 ;===>>>> giam R7 xuong 1, R6 khac 0-> ve Kt2,2ckm RET ;===>>>> ket thuc chuong trinh con Delay ;___ END ;===>>>> ket thuc chuong trinh ; 8 Bài 6: CHƯƠNG TRÌNH ĐIỀU KHIỂN LED SÁNG DẦN TỪ TRÁI QUA PHẢI RỒI NGƯỢC LẠI SÁNG TỪ PHẢI QUA ;Chuong trình: ///// SANG DAN 8 LED \\\\\\ ; /////////////___ Sang dan tu trai sang phai roi nguoc lai___\\\\\\\\\\\\\\\ ; //////////___ sang o muc 0 va tat o muc 1___\\\\\\\\\\\ ; //////////////___ lap di lap lai khong gioi han___\\\\\\\\\\ ; >>>>>>>>>>>>> ORG 000H ; khai bao dia chi de bat dau chuong trinh tren Rom TUDAU: MOV A,#0FFH ;===>>>> lam 8 led noi P1 tat LAP1: MOV P1,A ;===>>>> xuat ra led LCALL DELAY ;===>>>>goi chuong trinh con Delay CLR C ;===>>>> lam co C xuong 0 RLC A ;===>>> xoay thanh ghi A JC LAP1 ;===>>>> nhay ve nhan "LAP1" neu C=1 MOV A,#0FFH ;===>>>> lam 8 led noi P1 tat LAP2: MOV P1,A ;===>>>> xuat ra led LCALL DELAY ;===>>>>goi chuong trinh con Delay CLR C ;===>>>> lam co C len 1 RRC A ;===>>> xoay thanh ghi A JC LAP2 ;===>>>> nhay ve nhan "LAP2" neu C=1 SJMP TUDAU ;===>>>> nhay ve thuc hien tu dau ; >>>>>>>>>>>>>>>> delay >>> ga'n R7=#0FFH, 1 chu ki may KT2: MOV R6,#0FFH ;===>>>> ga'n R6=#0FFH, 1 chu ki may KT1: DJNZ R6,KT1 ;===>>>> giam R6 xuong 1, R6 khac 0->giam tiep,2ckm DJNZ R7 ,KT2 ;===>>>> giam R7 xuong 1, R6 khac 0-> ve Kt2,2ckm RET ;===>>>> ket thuc chuong trinh con Delay ;=== END ;===>>>> ket thuc chuong trinh ; VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 87 BÀI 11: CHƯƠNG TRÌNH ĐỒNG HỒ SỐ : PHẦN 1 : CHƯƠNG TRÌNH ĐỒNG HỒ VỚI GIÂY VÀ PHÚT : ;Nguoi viet :VUONG VAN HUNG ;Ngay viet :20/06/2008 ;=== GIAY DATA 7CH DONVIPHUT DATA 7DH PHUT DATA 7EH DONVIGIAY DATA 7FH CHUCPHUT DATA 2EH CHUCGIAY DATA 2FH ;=== ;Chuong trinh chinh ORG 0000H INIT: MOV TMOD,#01H MOV GIAY,#0 MOV PHUT,#0 MAIN: CALL DELAY1S INC GIAY MOV A,GIAY CJNE A,#60,MAIN MOV GIAY,#0 INC PHUT MOV A,PHUT CJNE A,#60,MAIN MOV PHUT,#0 SJMP MAIN ;=== HIENTHI: CALL MAHOA MOV P0,CHUCGIAY CALL DELAY MOV P0,DONVIGIAY CALL DELAY MOV P0,CHUCPHUT CALL DELAY MOV P0,DONVIPHUT CALL DELAY RET ;=== MAHOA: MOV A,GIAY MOV B,#10 DIV AB ADD A,#10110000B MOV CHUCGIAY,A MOV A,B ADD A,#01110000B MOV DONVIGIAY,A MOV A,PHUT MOV B,#10 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 88 DIV AB ADD A,#11100000B MOV CHUCPHUT,A MOV A,B ADD A,#11010000B MOV DONVIPHUT,A RET ;=== DELAY1S: MOV R0,#20 LAPDELAY1S: CALL HIENTHI CALL DELAY50MS DJNZ R0,LAPDELAY1S RET ;=== DELAY50MS: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET DELAY: LOOP1: MOV R1,#20 LOOP2: MOV R2,#200 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== END ; VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- I DATA DATA 72H 71H DATA GIO 73H 74H DATA PHUT 75H DATA GIAY NAM0 78H NAM1 DATA 79H DATA THANG0 DATA DATA THANG1 NGAY0 DATA 76H 7AH NGAY1 7CH DATA 77H DATA 7BH GIO0 7DH DATA GIO1 7EH DATA PHUT0 7FH DATA PHUT1 GIAY0 GIAY1 ;Khai bao bien / hang so / dau vao/ra ;=== ;Nguoi vietDinh: Do Quang ho ;dong ;Chuong trinh phuc vu hoc Vi dieu khien PHẦ V ƯƠNG V AD0 7 13 A QA AD1 1 12 SO NAM B QB N 2:CH AD2 2 11 C QC AD0 AD3 6 10 D QD 470n C4 9 QE 3 15 LT QF AD1 4 14 BI QG 5 LE/STB Ă 470n C5 AD0 7 13 A QA AD1 1 4511 U2 12 N HÙNG B QB AD2 AD2 2 11 NG TRÌNH ƯƠNG TRÌNH C QC AD3 6 10 D QD VI CHƯƠNG TRÌNH 470n C6 9 QE 3 15 LT QF AD3 4 14 BI QG 5 LE/STB 470n C7 AD0 7 13 A QA AD1 4511 U4 1 12 SO THANG B QB AD2 2 11 C QC AD3 6 10 D QD 9 QE 3 15 LT QF 4 14 BI QG RESPACK-8 RP1 5 LE/STB 9 AD0 7 13 A QA 8 AD1 1 4511 U5 12 B QB ĐỒ 7 AD2 2 11 C QC 6 AD3 6 10 D QD 5 9 QE NG V 4 3 15 RESPACK-8 RP2 LT QF 3 4 14 BI QG Đ 2 5 LE/STB AD0 7 13 I A QA ỀU KHI AD1 4511 U6 1 1 12 SO NGAY 1 2 3 4 5 6 7 8 9 B QB AD2 2 11 Ớ C QC AD3 6 10 D QD AD4 * AD3 AD2 AD1 AD0 VCC AD7 AD6 AD5 AD4 23 1 9 I GIÂY – PHÚT - GI A 0 QE AD5 22 2 3 15 B 1 LT QF AD6 21 3 4 14 C 2 BI QG AD7 20 4 5 D 3 LE/STB AD0 ỂN AD3 AD2 AD1 AD0 AD7 AD6 AD5 AD4 5 7 13 4 A QA 18 6 AD1 1 4511 U7 12 A15 A14 A13 A12 A11 A10 A9 A8 E1 5 B QB 19 7 AD2 2 11 E2 6 C QC 8 AD3 6 10 17 16 13 12 37 38 39 15 14 11 10 28 27 26 25 24 23 22 21 32 33 34 35 36 7 D QD 9 9 * 8 QE U1 80C51 10 3 15 9 LT QF P0.2/AD2 P0.1/AD1 P0.0/AD0 P3.7/RD P3.6/WR P3.5/T1 P3.4/T0 P3.3/INT1 P3.2/INT0 P3.1/TXD P3.0/RXD P2.7/A15 P2.6/A14 P2.5/A13 P2.4/A12 P2.3/A11 P2.2/A10 P2.1/A9 P2.0/A8 P0.7/AD7 P0.6/AD6 P0.5/AD5 P0.4/AD4 P0.3/AD3 11 4 14 10 BI QG 13 5 11 LE/STB 14 AD0 7 13 12 A QA Đ AD1 4511 U8 15 1 12 SO GIO 13 B QB 16 AD2 2 11 14 C QC 17 AD3 6 10 15 D QD 9 NGH H: CƠNG QE 74HC154 U3 3 15 LT QF 4 14 BI QG 5 LE/STB AD0 Ờ VÀNGÀYTHÁNG– –N Ă XTAL1 XTAL2 7 13 PSEN A QA 4511 U9 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 RST AD1 ALE 1 12 EA B QB AD2 2 11 C QC AD3 6 10 D QD 31 29 19 18 8 7 6 5 4 3 2 1 9 30 9 QE 3 15 VCC LT QF 4 14 BI QG 11.059MHz 5 RES LE/STB 27p C2 AD0 7 13 A QA 4511 U10 X1 AD1 1 12 PHUT SO B QB AD2 2 11 GON Ệ SÀI C QC AD3 6 10 D QD 9 QE 3 15 LT QF 27p C3 4 14 BI QG 5 LE/STB AD0 7 13 A QA AD1 1 4511 U11 12 B QB CLASS: AD2 2 11 C QC RES AD3 6 10 D QD 9 QE 3 15 LT QF 4 14 BI QG 5 LE/STB AD0 7 13 VCC A QA 4511 U12 AD1 1 12 GIAYSO B QB T307. 3 3 ĐĐT307. AD2 10k R0 2 11 C QC 1u C1 AD3 6 10 D QD M : 9 QE Trang 89 3 15 LT QF 4 14 BI QG 5 LE/STB AD0 7 13 A QA AD1 1 4511 U13 12 B QB AD2 2 11 C QC AD3 6 10 D QD 9 QE 3 15 LT QF 4 14 BI QG 5 LE/STB 4511 U14
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 90 NGAY DATA 70H THANG DATA 6FH NAM DATA 6EH DEM DATA 6DH ;Bien dung dem vong lap tinh giay TAM DATA 6CH SONGAY DATA 6BH ;=== ORG 0000H LJMP INIT ;=== ;Khai bao ngat ORG 0003H LJMP CHINHGIO ORG 000BH LJMP TINHGIO ORG 0030H ;=== ;Chuong trinh chinh INIT: SETB EX0 SETB ET0 CLR IT0 MOV TMOD,#10001001B ;TIMER 0 CHAY 16 BIT, NGUNG KHI CO NGAT 0 MOV DEM,#20 MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) MOV NAM,#1 MOV THANG,#1 MOV NGAY,#1 MOV GIO,#1 MOV PHUT,#1 MOV GIAY,#1 MOV SONGAY,#5 SETB TR0 SETB EA MAIN: SJMP MAIN ;=== ;Cac chuong trinh con va chuong trinh phuc vu ngat ;=== CHINHGIO: ;SV tu viet RETI ;=== TINHGIO: CLR TR0 MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 DJNZ DEM,THOATTINHGIO MOV DEM,#1 ;du 1 giay INC GIAY MOV A,GIAY CJNE A,#2,CAPNHATGIO MOV GIAY,#0 ;du 1 phut INC PHUT MOV A,PHUT CJNE A,#2,CAPNHATGIO VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 91 MOV PHUT,#0 ;du 1 gio INC GIO MOV A,GIO CJNE A,#2,CAPNHATGIO MOV GIO,#0 ;DU 1 NGAY INC NGAY ;TANG NGAY LEN MOV A,NGAY CJNE A,SONGAY,CAPNHATGIO MOV NGAY,#0 INC THANG ;DU 1 THANG MOV A,THANG CJNE A,#13,XETTHANG MOV THANG,#1 ;DU 1 NAM INC NAM XETTHANG: ;XET THANG DE TIM SONGAY CALL TIMSONGAYTRONGTHANG CAPNHATGIO: MOV R6,#0 MOV R0,#6EH LAPCAPNHAT: MOV A,@R0 MOV B,#10 DIV AB SWAP A ADD A,R6 SWAP A MOV P0,A CALL DELAY INC R6 MOV A,B SWAP A ADD A,R6 SWAP A MOV P0,A CALL DELAY INC R6 INC R0 CJNE R0,#74H,LAPCAPNHAT THOATTINHGIO: RETI ;=== TIMSONGAYTRONGTHANG: MOV A,THANG CJNE A,#2,THANGKHAC2 MOV A,NAM ;THANG = 2, XET NAM NHUAN HAY KHƠNG ? MOV B,#4 DIV AB MOV A,B CJNE A,#0,NAMTHUONG ;NAM CHIA HET CHO 4 ? MOV SONGAY,#3 ;NAM NHUAN SJMP THOATTIMNGAY NAMTHUONG: MOV SONGAY,#2 SJMP THOATTIMNGAY THANGKHAC2: CJNE A,#8,XETMUA MOV SONGAY,#5 ;THANG = 8 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 92 SJMP THOATTIMNGAY XETMUA: ;THANG KHAC 8 JNC THANGCAO JB ACC.1,THANGLENHO ;THANG CHAN 4,6 MOV SONGAY,#4 SJMP THOATTIMNGAY THANGLENHO: ;1,3,5,7 MOV SONGAY,#5 SJMP THOATTIMNGAY THANGCAO: ;C=0, THANG > 8 JB ACC.1,THANGLECAO ; ;THANG CHAN 10,12 MOV SONGAY,#5 SJMP THOATTIMNGAY THANGLECAO: ;9,11 MOV SONGAY,#4 THOATTIMNGAY: RET ;=== DELAY: DELAY1: MOV R1,#10 DELAY2: MOV R2,#250 DJNZ R2,$ DJNZ R1,DELAY2 RET ;=== END ; VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 93 BÀI 12: CHƯƠNG TRÌNH ĐỒNG HỒ SỐ GIAO TIẾP NGOẠI VI: PHẦN 1 : CHƯƠNG TRÌNH ĐỒNG VỚI GIÂY VÀ PHÚT CĨ MỞ RỘNG PORT XUẤT NHẬP : ;=== GIAY DATA 7CH DONVIPHUT DATA 7DH PHUT DATA 7EH DONVIGIAY DATA 7FH CHUCPHUT DATA 2EH CHUCGIAY DATA 2FH CHEDO EQU 0300H PORTA EQU 0000H ;=== ;Chuong trinh chinh VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 94 ORG 0000H INIT: MOV TMOD,#01H MOV GIAY,#0 MOV PHUT,#0 MOV DPTR,#CHEDO MOV A,#10000000B MOVX @DPTR,A MAIN: CALL DELAY1S INC GIAY MOV A,GIAY CJNE A,#60,MAIN MOV GIAY,#0 INC PHUT MOV A,PHUT CJNE A,#60,MAIN MOV PHUT,#0 SJMP MAIN ;=== CAPNHATGIO: MOV A,GIAY MOV B,#10 DIV AB ADD A,#10110000B MOV DPTR,#PORTA MOVX @DPTR,A CALL DELAY MOV A,B ADD A,#01110000B MOV DPTR,#PORTA MOVX @DPTR,A CALL DELAY MOV A,PHUT MOV B,#10 DIV AB ADD A,#11100000B MOV DPTR,#PORTA MOVX @DPTR,A CALL DELAY MOV A,B ADD A,#11010000B MOV DPTR,#PORTA MOVX @DPTR,A CALL DELAY RET ;=== DELAY1S: MOV R0,#20 LAPDELAY1S: CALL CAPNHATGIO CALL DELAY50MS DJNZ R0,LAPDELAY1S RET VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 95 ;=== DELAY50MS: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET ;=== DELAY: LOOP1: MOV R1,#10 LOOP2: MOV R2,#100 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== END ; VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 96 13 12 9 13 12 9 13 12 9 13 12 9 13 12 9 13 12 9 13 12 9 13 12 9 13 12 9 13 12 9 13 12 9 13 12 9 11 10 11 10 11 10 11 10 11 10 11 10 11 10 11 10 11 10 11 10 11 10 11 10 15 15 15 15 15 15 15 15 15 15 15 15 14 14 14 14 14 14 14 14 14 14 14 14 U15 U16 U17 U18 U19 U20 U21 U22 U23 U24 U25 U26 QF QF QF QF QF QF QF QF QF QF QF QF QA QB QE QA QB QE QA QB QE QA QB QE QA QB QE QA QB QE QA QB QE QA QB QE QA QB QE QA QB QE QA QB QE QA QB QE QC QD QC QD QC QD QC QD QC QD QC QD QC QD QC QD QC QD QC QD QC QD QC QD QG 4511 QG 4511 QG 4511 QG 4511 QG 4511 QG 4511 QG 4511 QG 4511 QG 4511 QG 4511 QG 4511 QG 4511 A B C D LT BI LE/STB A B C D LT BI LE/STB A B C D LT BI LE/STB A B C D LT BI LE/STB A B C D LT BI LE/STB A B C D LT BI LE/STB A B C D LT BI LE/STB A B C D LT BI LE/STB A B C D LT BI LE/STB A B C D LT BI LE/STB A B C D LT BI LE/STB A B C D LT BI LE/STB 7 1 2 6 3 4 7 1 2 6 3 4 7 1 2 6 3 4 7 1 2 6 3 4 7 1 2 6 3 4 7 1 2 6 3 4 7 1 2 6 3 4 7 1 2 6 3 4 7 1 2 6 3 4 7 1 2 6 3 4 7 1 2 6 3 4 7 1 2 6 3 4 5 5 5 5 5 5 5 5 5 5 5 5 PA0 PA1 PA2 PA3 PA0 PA1 PA2 PA3 PA0 PA1 PA2 PA3 PA0 PA1 AP2 AP3 AP0 AP1 PA2 PA3 PA0 PA1 PA2 PA3 AP0 AP1 AP2 AP3 PA0 PA1 PA2 PA3 PA0 PA1 PA2 PA3 PA0 PA1 PA2 PA3 PA0 PA1 PA2 PA3 PA0 PA1 PA2 PA3 U6 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 A0 10 11 AD0 A0 D0 A1 AD1 0 1 2 3 4 5 6 7 8 9 U27 9 12 10 11 12 13 14 15 A1 D1 A2 8 13 AD2 74HC154 A2 D2 A3 7 15 AD3 A3 D3 A4 6 16 AD4 A4 D4 A5 5 17 AD5 A5 D5 A6 4 18 AD6 A6 D6 A7 3 19 AD7 A7 D7 A B C D E1 E2 A8 25 A8 A9 24 A9 23 22 21 20 18 19 A10 21 A10 A11 23 A11 U7 A12 2 A12 A0 2 3 AD0 Q0 D0 A1 5 4 AD1 Y4 20 Q1 D1 CE A2 6 7 AD2 26 Q2 D2 CS A3 9 8 AD3 /WR 27 6264 Q3 D3 WE A4 12 13 AD4 /RD 22 Q4 D4 OE A5 15 14 AD5 Q5 D5 A6 16 17 AD6 Q6 D6 A7 19 18 AD7 Q7 D7 1 OE ALE PA4 PA5 PA5 PA7 11 LE 74HC373 PA0 PA1 PA2 PA3 U8 Y0 15 1 A13 C10 C11 C12 C13 Y0 A Y1 14 2 A14 470n 470n 470n 470n Y1 B Y2 13 3 A15 Y2 C Y3 12 Y3 Y4 11 Y4 Y5 10 6 Y5 E1 Y6 9 4 Y6 E2 Y7 7 5 Y7 E3 74LS138 C8 C9 RP1 U9 27pX2 27p U10 9 AD0 AD0 39 19 P0.0/AD0 XTAL1 PA0 4 34 AD0 8 AD1 AD1 38 PA0 D0 P0.1/AD1 PA1 3 33 AD1 7 AD2 AD2 37 PA1 D1 P0.2/AD2 11.059MHz PA2 2 32 AD2 6 AD3 AD3 36 18 PA2 D2 P0.3/AD3 XTAL2 PA3 1 31 AD3 5 AD4 AD4 35 PA3 D3 P0.4/AD4 PA4 40 30 AD4 4 AD5 AD5 34 PA4 D4 P0.5/AD5 PA5 39 29 AD5 3 AD6 AD6 33 PA5 D5 P0.6/AD6 PA6 38 28 AD6 2 AD7 AD7 32 9 PA6 D6 P0.7/AD7 RST PA7 37 27 AD7 PA7 D7 1 A8 21 P2.0/A8 VCC 18 5 /RD A9 22 PB0 RD P2.1/A9 19 36 /WR RESPACK-8 A10 23 PB1 WR P2.2/A10 20 9 A8 A11 24 29 PSEN PB2 A0 P2.3/A11 PSEN 21 8 A9 A12 25 30 ALE PB3 A1 P2.4/A12 ALE 22 35 A13 26 31 PB4 RESET P2.5/A13 EA 23 A14 27 PB5 VCC P2.6/A14 24 6 Y0 A15 28 PB6 CS P2.7/A15 25 PB7 RXD RXD 10 1 P1.0 P1.0 P3.0/RXD P1.0 14 TXD TXD 11 2 P1.1 P1.1 PC0 P3.1/TXD P1.1 15 INT0 INT0 12 3 P1.2 P1.2 PC1 P3.2/INT0 P1.2 16 INT1 INT1 13 4 P1.3 P1.3 PC2 P3.3/INT1 P1.3 17 T0 T0 14 5 P1.4 P1.4 PC3 P3.4/T0 P1.4 13 T1 T1 15 6 P1.5 P1.5 PC4 P3.5/T1 P1.5 12 /WR /WR 16 7 P1.6 P1.6 PC5 P3.6/WR P1.6 11 /RD /RD 17 8 P1.7 P1.7 PC6 P3.7/RD P1.7 10 PC7 9 8 7 6 5 4 3 2 1 80C51 8255A RP2 VCC RESPACK-8 PHẦN 2 : CHƯƠNG TRÌNH ĐỒNG VỚI GIỜ PHÚT GIÂY VÀ NGÀY THÁNG NĂM CĨ MỞ RỘNG PORT XUẤT NHẬP : ;=== ;Khai bao bien / hang so / dau vao/ra GIAY1 DATA 7FH GIAY0 DATA 7EH PHUT1 DATA 7DH PHUT0 DATA 7CH GIO1 DATA 7BH GIO0 DATA 7AH NGAY1 DATA 79H VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 97 NGAY0 DATA 78H THANG1 DATA 77H THANG0 DATA 76H NAM1 DATA 75H NAM0 DATA 74H GIAY DATA 73H PHUT DATA 72H GIO DATA 71H NGAY DATA 70H THANG DATA 6FH NAM DATA 6EH DEM DATA 6DH ;Bien dung dem vong lap tinh giay TAM DATA 6CH SONGAY DATA 6BH PORTA EQU 0000H CHEDO EQU 0300H ;=== ORG 0000H ;=== ;Khai bao ngat LJMP INIT ORG 0003H LJMP CHINHGIO ORG 000BH LJMP TINHGIO ORG 0030H ;=== ;Chuong trinh chinh INIT: SETB EX0 SETB ET0 CLR IT0 MOV TMOD,#10001001B ;TIMER 0 CHAY 16 BIT, NGUNG KHI CO NGAT 0 MOV DEM,#20 MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) MOV NAM,#1 MOV THANG,#1 MOV NGAY,#1 MOV GIO,#1 MOV PHUT,#1 MOV GIAY,#1 MOV SONGAY,#5 SETB TR0 SETB EA MOV DPTR,#CHEDO MOV A,#10000000B MOVX @DPTR,A MAIN: SJMP MAIN ;=== ;Cac chuong trinh con va chuong trinh phuc vu ngat ;=== CHINHGIO: ;SV tu viet RETI ;=== TINHGIO: VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 98 CLR TR0 MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 DJNZ DEM,THOATTINHGIO MOV DEM,#20 ;du 1 giay INC GIAY MOV A,GIAY CJNE A,#24,CAPNHATGIO MOV GIAY,#0 ;du 1 phut INC PHUT MOV A,PHUT CJNE A,#12,CAPNHATGIO MOV PHUT,#0 ;du 1 gio INC GIO MOV A,GIO CJNE A,#12,CAPNHATGIO MOV GIO,#0 ;DU 1 NGAY INC NGAY ;TANG NGAY LEN MOV A,NGAY CJNE A,SONGAY,CAPNHATGIO MOV NGAY,#0 INC THANG ;DU 1 THANG MOV A,THANG CJNE A,#13,XETTHANG MOV THANG,#1 ;DU 1 NAM INC NAM XETTHANG: ;XET THANG DE TIM SONGAY CALL TIMSONGAYTRONGTHANG CAPNHATGIO: MOV R6,#0 MOV R0,#6EH ; cho nam vao R0 LAPCAPNHAT: MOV A,@R0 ; cho R0 ( nam ) vao thanh ghi A MOV B,#10 DIV AB SWAP A ;Dao 4 bit cao ra sau va 4 bit thap ra truoc ADD A,R6 ; cong A voi R6 nhan cho led thu 1 sang vì R6 mang gia tri 0 SWAP A ;MOV P0,A MOV DPTR,#PORTA MOVX @DPTR,A CALL DELAY INC R6 ; tang R6 len 1 don vi , nhan cho led thu 2 sang MOV A,B SWAP A ADD A,R6 SWAP A ;MOV P0,A MOV DPTR,#PORTA MOVX @DPTR,A CALL DELAY INC R6 INC R0 ;Tang gia tri thanh ghi R0 len 1 don vi( nhay toi thanh ghi 6FH : thang) CJNE R0,#74H,LAPCAPNHAT THOATTINHGIO: RETI ;=== VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 99 TIMSONGAYTRONGTHANG: MOV A,THANG CJNE A,#2,THANGKHAC2 MOV A,NAM ;THANG = 2, XET NAM NHUAN HAY KHƠNG ? MOV B,#4 DIV AB MOV A,B CJNE A,#0,NAMTHUONG ;NAM CHIA HET CHO 4 ? MOV SONGAY,#3 ;NAM NHUAN SJMP THOATTIMNGAY NAMTHUONG: MOV SONGAY,#2 SJMP THOATTIMNGAY THANGKHAC2: CJNE A,#8,XETMUA MOV SONGAY,#5 ;THANG = 8 SJMP THOATTIMNGAY XETMUA: ;THANG KHAC 8 JNC THANGCAO JB ACC.1,THANGLENHO ;THANG CHAN 4,6 MOV SONGAY,#4 SJMP THOATTIMNGAY THANGLENHO: ;1,3,5,7 MOV SONGAY,#5 SJMP THOATTIMNGAY THANGCAO: ;C=0, THANG > 8 JB ACC.1,THANGLECAO ; ;THANG CHAN 10,12 MOV SONGAY,#5 SJMP THOATTIMNGAY THANGLECAO: ;9,11 MOV SONGAY,#4 THOATTIMNGAY: RET ;=== DELAY: DELAY1: MOV R1,#20 DELAY2: MOV R2,#200 DJNZ R2,$ DJNZ R1,DELAY2 RET ;=== END ; PHẦN 3 : CHƯƠNG TRÌNH MỞ RỘNG PORT XUẤT NHẬP : BÀI 1: ;CHUONG TRINH MO RONG PORT ;=== ;Khai bao bien / hang so / dau vao/ra PORTA EQU 0000H PORTB EQU 0100H VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 100 PORTC EQU 0200H CHEDO EQU 0300H ;=== ORG 0000H ;=== ;Chuong trinh chinh INIT: MOV TMOD,#01H MOV DPTR,#CHEDO MOV A,#10010001B ;PORTA INPUT , PORTB OUTPUT MOVX @DPTR,A MAIN: MOV DPTR,#PORTA MOVX A,@DPTR MOV DPTR,#PORTB MOVX @DPTR,A SJMP MAIN ;=== DELAY1S: MOV R1,#2 AGAIN: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 WAIT: JNB TF0,WAIT CLR TF0 CLR TR0 DJNZ R1,AGAIN RET ;=== END ; VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 101 BÀI 2: ;CHUONG TRINH MO RONG PORT ;=== ;Khai bao bien / hang so / dau vao/ra PORTA EQU 0000H PORTB EQU 0100H PORTC EQU 0200H CHEDO EQU 0300H ;=== ORG 0000H ;=== ;Chuong trinh chinh INIT: MOV TMOD,#01H MOV DPTR,#8111H MAIN: JB P3.7,$ JNB P3.7,$ MOV A,P3 ;==>||||||| MOVX @DPTR,A ;==>||||||| LUU PORT3 VAO TRONG RAM MOV A,#0 JB P3.7,$ JNB P3.7,$ MOVX A,@DPTR ;==>||||||| MOV P1,A ;==>||||||| XUAT GIA TRI TRONG RAM RA PORT1 SJMP MAIN ;=== DELAY1S: MOV R1,#2 AGAIN: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 WAIT: JNB TF0,WAIT CLR TF0 CLR TR0 DJNZ R1,AGAIN RET ;=== END ; BÀI 13: CHƯƠNG TRÌNH GARA Ơ TƠ : Cho hệ thống thực hiện việc kiểm sốt số lượng xe ơ tơ trong 1 gara tự động cĩ sức chứa 250 xe như sau : • Ở ngõ vào và ra gắn 1 cảm biến mỗi nơi để đếm số xe vào/ra gara. Tổng số xe trong gara được tính bằng hiệu số giữa số lượng xe vào/ra. VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 102 • Việc kiểm sốt vào ra được thực hiện bằng thẻ từ : người lái xe phải đưa thẻ qua máy quét, thẻ hợp lệ thì một tín hiệu dạng một xung sẽ được đưa về bộ điều khiển để mở cổng vào/ra. • Cổng được mở bằng 1 động cơ DC, đĩng 3s sau khi cảm biến đếm xe ngừng tích cực (xe đã qua) • Khi bãi xe cịn chỗ trống thì bật đèn xanh, đầy thì báo bằng đèn đỏ. • Hiển thị số chỗ cịn trống ra Led 7 đoạn. Giả sử bộ điều khiển được thiết kế từ họ 8051. Hãy vẽ sơ đồ kết nối các tín hiệu điều khiển với 8051( tự chọn mức tích cực) và vẽ lưu đồ giải thuật cho hệ thống hoạt động. Viết CT cụ thể. ;CHUONG TRINHGARA OTO ;=== ;KHAI BAO BIEN DEM DATA 7AH TRAM DATA 7BH CHUC DATA 7CH DONVI DATA 7DH CHONG DATA 7EH GIOIHAN DATA 7FH ;=== ORG 0000H LJMP MAIN ;=== ;chuong trinh ngat timer0 ORG 000BH ET0ISR: CALL MAHOA CALL XUATLED RETI ;=== ;chuong trinh ngat ngoai 0 ORG 0003H LJMP EX0ISR ;=== ;chuong trinh ngat ngoai 1 ORG 0013H LJMP EX1ISR ;=== ORG 0030H MAIN: MOV IE,#87H MOV TMOD,#11H MOV TH0,#(-100) VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 103 SETB IT0 SETB IT1 SETB TR0 MOV DEM,#245 MOV GIOIHAN,#250 MOV P2,DEM MOV P1,#00H SJMP $ ;=== EX0ISR: MOV A,CHONG CJNE A,#0,CHOVAO KHONGCHOVAO: CLR EX0 SETB P1.5 CLR P1.2 SJMP THOAT CHOVAO: CLR P1.5 ; DEN DAY TAT SETB P1.2 ; DEN CHONG SANG SETB P1.0 ; MO CUA LOI VAO CALL DELAY3S CLR P1.0 ; DUNG MO CUA LOI VAO JB P3.0,$ ;===>| JNB P3.0,$ ;===>| CAM BIEN DEM XE VAO INC DEM SETB P1.1 ; DONG CUA LOI VAO CALL DELAY3S CLR P1.1 ; DUNG DONG CUA LOI VAO THOAT: RETI ;=== EX1ISR: SETB P1.3 ; MO CUA LOI RA CALL DELAY3S CLR P1.3 ; DUNG MO CUA LOI RA JB P3.1,$ ;===>| JNB P3.1,$ ;===>| CAM BIEN DEM XE RA DEC DEM CLR P1.5 ; DEN DAY TAT SETB P1.2 ; DEN XANH SANG SETB EX0 ; CHO PHEP XE VAO SETB P1.4 ; DONG CUA LOI RA CALL DELAY3S CLR P1.4 ; DUNG DONG CUA LOI RA RETI ;=== MAHOA: MOV A,GIOIHAN MOV B,DEM SUBB A,B MOV CHONG,A MOV A,CHONG MOV B,#100 DIV AB ADD A,#11010000B MOV TRAM,A MOV A,B VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 104 MOV B,#10 DIV AB ADD A,#10110000B MOV CHUC,A MOV A,B ADD A,#01110000B MOV DONVI,A RET ;=== XUATLED: MOV P0,TRAM CALL DELAY MOV P0,CHUC CALL DELAY MOV P0,DONVI CALL DELAY RET ;=== DELAY: LOOP1: MOV R1,#20 LOOP2: MOV R2,#200 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== DELAY3S: MOV R0,#20 LAP: CALL DELAY50MS DJNZ R0,LAP RET ;=== DELAY50MS: MOV TH1,#HIGH(-50000) MOV TL1,#LOW(-50000) SETB TR1 JNB TF1,$ CLR TR1 CLR TF1 RET ;=== END ; BÀI 14: CHƯƠNG TRÌNH ĐẾM SỐ HỌC SINH RA VÀO PHỊNG HỌC: 1. Thiết kế hệ thống đếm số người trong một phịng học như sau : Phịng chỉ cĩ 1 cửa ra vào được gắn 2 cảm biến cĩ cùng độ cao, cảm biến 1 ở mé ngồi và cảm biến 2 ở mé trong phịng. Thực hiện việc đếm số người bằng cách nếu cảm biến 1 phát hiện người rồi đến cảm biến 2 (cĩ người đi vào VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 105 phịng) thì tăng biến đếm, ngược lại nếu cảm biến 2 phát hiện trước thì giảm biến đếm. Lưu ý : 2 bài trên khơng cần xét các trường hợp đặc biệt, ai xét được thì tốt CÁCH 1: LƯU ĐƠ GIẢI THUẬT: CHƯƠNG TRÌNH : ;=== ;Khai bao bien / hang so / dau vao/ra TAM BIT 00H DEM DATA 7EH ;=== ORG 0030H ;=== ;Chuong trinh chinh MAIN: MOV C,P3.0 ; CAM BIEN DAT MEP NGOAI PHONG HOC MOV TAM,C MOV DEM,#0 MOV P2,DEM ;=== LAP: JB P3.0,KHONG_DEM VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 106 JNB TAM,KHONG_DEM JNB P3.1,GIAM_DEM ; Kiem Tra Cam Bien Phia Mep Trong Phong Hoc ;=== TANG_DEM: INC DEM MOV P2,DEM SJMP KHONG_DEM ;=== GIAM_DEM: DEC DEM MOV P2,DEM ;=== KHONG_DEM: MOV C,P3.0 MOV TAM,C CALL DELAY LJMP LAP ;=== DELAY: MOV R1,#100 LOOP: MOV R2,#250 DJNZ R2,$ DJNZ R1,LOOP RET ;=== END ; CÁCH 2: ;DEM SO HOC SINH RA VAO PHONG HOC ;Nguoi viet : VUONG VAN HUNG ;Ngay viet :10/07/2008 ;=== ;Khai bao bien / hang so / dau vao/ra TAM BIT 00H DEM DATA 7EH TRAM DATA 7AH CHUC DATA 7BH DONVI DATA 7CH ;=== ORG 0000H LJMP MAIN ORG 000BH LJMP NGATTIMER0 ORG 0003H LJMP NGATNGOAI0 ;=== ORG 0030H MAIN: MOV IE,#10000111B MOV TMOD,#02H VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 107 MOV TH0,#(-100) MOV DEM,#0 MOV P2,DEM SETB TR0 SETB IT0 SJMP $ ;=== NGATTIMER0: CALL MAHOA CALL XUATLED RETI ;=== NGATNGOAI0: ; MOI KHI CO CANH XUONG CHAN P3.2 JB P3.0,VAO RA: DEC DEM SJMP THOAT VAO: INC DEM THOAT: RETI ;=== MAHOA: MOV A,DEM MOV B,#100 DIV AB ADD A,#11010000B MOV TRAM,A MOV A,B MOV B,#10 DIV AB ADD A,#10110000B MOV CHUC,A MOV A,B ADD A,#01110000B MOV DONVI,A RET ;=== XUATLED : MOV P0,TRAM CALL DELAY MOV P0,CHUC CALL DELAY MOV P0,DONVI CALL DELAY RET ;=== DELAY: LOOP1: MOV R1,#20 LOOP2: MOV R2,#200 VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3
- CHƯƠNG TRÌNH VI ĐIỀU KHIỂN * ĐH: CƠNG NGHỆ SÀI GON Trang 108 DJNZ R2,$ DJNZ R1,LOOP2 RET ;=== END ; BÀI 15: CHƯƠNG TRÌNH TRUYỀN THƠNG: U1_MASTER C1 C4 27pX2 27p VCC 39 19 P0.0/AD0 XTAL1 38 P0.1/AD1 37 P0.2/AD2 11.059MHz 36 18 P0.3/AD3 XTAL2 35 P0.4/AD4 34 R24R23R22R21R20R19R18R17 P0.5/AD5 33 10k10k10k10k10k10k10k10k P0.6/AD6 32 9 P0.7/AD7 RST 21 P2.0/A8 VCC 22 P2.1/A9 23 P2.2/A10 24 29 P2.3/A11 PSEN 25 30 P2.4/A12 ALE 26 31 P2.5/A13 EA 27 P2.6/A14 28 P2.7/A15 THU 10 1 P3.0/RXD P1.0 PHAT 11 2 P3.1/TXD P1.1 12 3 P3.2/INT0 P1.2 13 4 P3.3/INT1 P1.3 14 5 P3.4/T0 P1.4 D9 15 6 P3.5/T1 P1.5 16 7 P3.6/WR P1.6 VCC 17 8 D10 P3.7/RD P1.7 LED-BIBY 80C51 D11 LED-BIBY D12 A8 LED-BIBY A9 A10 A11 C2 C3 D13 A12 U2_SLAVE LED-BIBY 27pX1 27p A13 A14 39 19 P0.0/AD0 XTAL1 D14 A15 38 LED-BIBY P0.1/AD1 37 P0.2/AD2 11.059MHz 36 18 P0.3/AD3 XTAL2 D15 35 LED-BIBY P0.4/AD4 34 P0.5/AD5 33 P0.6/AD6 D16 32 9 LED-BIBY P0.7/AD7 RST A8 21 P2.0/A8 VCC A9 22 LED-BIBY P2.1/A9 A10 23 P2.2/A10 A11 24 29 P2.3/A11 PSEN A12 25 30 P2.4/A12 ALE A13 26 31 P2.5/A13 EA A14 27 P2.6/A14 A15 28 P2.7/A15 PHAT 10 1 P3.0/RXD P1.0 THU 11 2 P3.1/TXD P1.1 12 3 P3.2/INT0 P1.2 13 4 P3.3/INT1 P1.3 14 5 P3.4/T0 P1.4 15 6 P3.5/T1 P1.5 16 7 P3.6/WR P1.6 17 8 P3.7/RD P1.7 80C51 CHƯƠNG TRÌNH GIAO TIẾP TRUYỀN THƠNG: BÀI 1: CHƯƠNG TRÌNH TRUYỀN THƠNG GIỮA 2 IC 8051 : 8051 _ MATER VÀ 8051_SLAVE 8051 _ MATER ĐỌC GIÁ TRỊ TỪ PORT2 NỐI VỚI CÁC CƠNG TẮC VÀ TRUYỀN GIÁ TRỊ ĐỌC ĐƯỢC ĐĨ CHO 8051_SLAVE ( 8051_SLAVE XUẤT GIÁ TRỊ NHẬN ĐƯỢC RA PORT2) ;CHUONG TRINH MATER VƯƠNG VĂN HÙNG * CLASS: ĐĐT307. 3