Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 64 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
64
Dung lượng
207 KB
Nội dung
Bài 5: Chương trình điều khiển hiển thị số 1234 bốn LED (LED7, LED6, LED5 LED4 nối với Port0; tín hiệu SEL7, SEL6, SEL5 SEL4 nối với P1.0, P1.1, P1.2 P1.3) Giáo trình thực hành vi xử lý 103 Biên soạn: Phạm Quang Trí Trình tự tiến hành thí nghiệm: 1.1 Kết nối thiết bị thí nghiệm • Q trình kết nối thiết bị thí nghiệm tương tự Bài 1.2 Vẽ lưu đồ giải thuật viết chương trình điều khiển ;*************************************************** ;CHUONG TRINH DIEU KHIEN HIEN THI SO 1234 TREN LED DOAN ;*************************************************** ;KET NOI: LED -> PORT0 ; SEL LED -> PORT1 ;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = ;*************************************************** ORG 00H MAIN: MOV P1,#0FEH ;CHO PHEP LED SANG MOV P0,#99H ;HIEN THI SO LCALL DELAYLED MOV P1,#0FDH ;CHO PHEP LED SANG MOV P0,#0B0H ;HIEN THI SO LCALL DELAYLED MOV P1,#0FBH ;CHO PHEP LED SANG MOV P0,#0A4H ;HIEN THI SO LCALL DELAYLED MOV P1,#0F7H ;CHO PHEP LED SANG MOV P0,#0F9H ;HIEN THI SO LCALL DELAYLED SJMP MAIN ;**************************************************** DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS PUSH 00H PUSH 01H MOV R1,#5 DEL: MOV R0,#250 DJNZ R0,$ DJNZ R1,DEL POP 01H POP 00H RET END Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 hai LED (LED7, LED6 nối với Port0; tín hiệu SEL-ABC nối với P1.0 - P1.1) 1.2 Vẽ lưu đồ giải thuật viết chương trình điều khiển ;*************************************************** ;CHUONG TRINH DIEU KHIEN HIEN THI 00 -> 99 TREN LED DOAN ;*************************************************** ;KET NOI: LED -> PORT0 ; SEL ABC -> PORT1 ;CHE DO: MULTI, BCD IN, MULTI EXT TO 4, CA, ACTIVE = ;*************************************************** ORG 00H MAIN: MOV 61H,#00H ;HANG CHUC MOV 60H,#00H ;HANG DON VI MP1: LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI INC 60H ;TANG HANG DON VI MOV A,60H CJNE A,#10,MP1 ;KIEM TRA HANG DON VI > MOV 60H,#00H ;XOA HANG DON VI (DON VI = 0) INC 61H ;TANG HANG CHUC MOV A,61H CJNE A,#10,MP1 ;KIEM TRA HANG CHUC > SJMP MAIN ;*************************************************** ;CTC QUET HIEN THI LED DOAN (2 LED DOAN) ;*************************************************** ;LED: ANODE CHUNG, KICH HOAT MUC 0, DOAN: DP (MSB) -> A (LSB) ;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM ;*************************************************** ;NAME: DISP7SEGMUL2EXT ;INPUT: 61H,60H = MA DOAN (CHUC - DON VI) ;OUTPUT: P0 = DOAN LED - DP (MSB) -> A (LSB) ; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD) ;*************************************************** DISP7SEGMUL2EXT: PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI PUSH 00H MOV A,#01H ;MA QUET MOV R0,#61H ;DIA CHI VUNG MA HIEN THI DISP: MOV P0,@R0 ;XUAT MA HIEN THI MOV P1,A ;XUAT MA QUET LCALL DELAYLED MOV P0,#0FFH ;CHONG LAM DEC R0 ;LAY MA HIEN THI KE TIEP DEC A ;CHUYEN SANG LED KE TIEP CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI POP ACC RET ;**************************************************** DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI PUSH 00H MOV R0,#50 MOV TMOD,#01H LOOP2: MOV TH0,#0ECH MOV TL0,#78H SETB TR0 SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY LCALL DISP7SEGMUL2EXT ;GOI CTC QUET HIEN THI JNB TF0,SCAN CLR TR0 CLR TF0 DJNZ R0,LOOP2 POP 00H RET ;**************************************************** DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS PUSH 00H PUSH 01H MOV R1,#10 DEL: MOV R0,#250 DJNZ R0,$ DJNZ R1,DEL POP 01H POP 00H RET END ;CHUONG TRINH DIEU KHIEN HIEN THI SO 12345678 TREN LED DOAN ;*************************************************** ;KET NOI: LED -> PORT0 ; SEL ABC -> PORT1 ;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT TO 4, CA, ACTIVE = ;*************************************************** ORG 00H MAIN: MOV P1,#00H ;CHO PHEP LED SANG MOV P0,#80H ;HIEN THI SO LCALL DELAYLED MOV P1,#01H ;CHO PHEP LED SANG MOV P0,#0F8H ;HIEN THI SO LCALL DELAYLED MOV P1,#02H ;CHO PHEP LED SANG MOV P0,#82H ;HIEN THI SO LCALL DELAYLED MOV P1,#03H ;CHO PHEP LED SANG MOV P0,#92H ;HIEN THI SO LCALL DELAYLED MOV P1,#04H ;CHO PHEP LED SANG MOV P0,#99H ;HIEN THI SO LCALL DELAYLED MOV P1,#05H ;CHO PHEP LED SANG MOV P0,#0B0H ;HIEN THI SO LCALL DELAYLED MOV P1,#06H ;CHO PHEP LED SANG MOV P0,#0A4H ;HIEN THI SO LCALL DELAYLED MOV P1,#07H ;CHO PHEP LED SANG MOV P0,#0F9H ;HIEN THI SO LCALL DELAYLED SJMP MAIN ;**************************************************** DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS PUSH 00H PUSH 01H MOV R1,#5 DEL: MOV R0,#250 DJNZ R0,$ DJNZ R1,DEL POP 01H POP 00H RET END Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 tám LED (LED0 đến LED7 nối với Port0; tín hiệu SEL-ABC nối với P1.0 - P1.2) Trình tự tiến hành thí nghiệm: 1.1 Kết nối thiết bị thí nghiệm • Q trình kết nối thiết bị thí nghiệm tương tự Bài 1.2 Vẽ lưu đồ giải thuật viết chương trình điều khiển ;*************************************************** ;CHUONG TRINH DIEU KHIEN HIEN THI 00000000 -> 99999999 TREN LED DOAN ;*************************************************** ;KET NOI: LED -> PORT0 ; SEL ABC -> PORT1 ;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT TO 8, CA, ACTIVE = ;*************************************************** ORG 00H MAIN: MOV R7,#00H ;SO HIEN THI BAN DAU MOV R6,#00H MOV R5,#00H ;SO HIEN THI BAN DAU MOV R4,#00H MP1: LCALL BCD8TO7SEG ;GIAI MA BCD SANG MA DOAN LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI MOV A,R4 ;TANG GIA TRI (CHUC - DON VI) ADD A,#1 DA A MOV R4,A CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (CHUC - DON VI) MOV A,R5 ;TANG GIA TRI (NGAN - TRAM) ADD A,#1 DA A MOV R5,A CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (NGAN - TRAM) MOV A,R6 ;TANG GIA TRI (TR NGAN - CH NGAN) ADD A,#1 DA A MOV R6,A CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (TR NGAN - CH NGAN) MOV A,R7 ;TANG GIA TRI (CH TRIEU - TRIEU) ADD A,#1 DA A MOV R7,A CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (CH TRIEU - TRIEU) SJMP MAIN ;*************************************************** ;CTC QUET HIEN THI LED DOAN (8 LED DOAN) ;*************************************************** ;LED: ANODE CHUNG, KICH HOAT MUC 0, DOAN: DP (MSB) -> A (LSB) ;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM ;*************************************************** ;NAME: DISP7SEGMUL8EXT ;INPUT: 67H,66H = MA DOAN (CH TRIEU - TRIEU) ; 65H,64H = MA DOAN (TR NGAN - CH NGAN) ; 63H,62H = MA DOAN (NGAN - TRAM) ; 61H,60H = MA DOAN (CHUC - DON VI) ;OUTPUT: P0 = DOAN LED - DP (MSB) -> A (LSB) ; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD) ;*************************************************** DISP7SEGMUL8EXT: PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI PUSH 00H MOV A,#07H ;MA QUET MOV R0,#67H ;DIA CHI VUNG MA HIEN THI DISP: MOV P0,@R0 ;XUAT MA HIEN THI MOV P1,A ;XUAT MA QUET LCALL DELAYLED MOV P0,#0FFH ;CHONG LEM DEC R0 ;LAY MA HIEN THI KE TIEP DEC A ;CHUYEN SANG LED KE TIEP CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI POP ACC RET ;**************************************************** DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS PUSH 00H PUSH 01H MOV R1,#5 DEL: MOV R0,#250 DJNZ R0,$ DJNZ R1,DEL POP 01H POP 00H RET ;*************************************************** DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI PUSH 00H MOV R0,#50 MOV TMOD,#01H LOOP2: MOV TH0,#0ECH MOV TL0,#78H SETB TR0 SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY LCALL DISP7SEGMUL8EXT ;GOI CTC QUET HIEN THI JNB TF0,SCAN CLR TR0 CLR TF0 DJNZ R0,LOOP2 POP 00H RET ;*************************************************** ;CTC GIAI MA TU SO BCD NEN SANG MA DOAN (4 SO BCD NEN) ;*************************************************** ;LED: ANODE CHUNG, DOAN: DP (MSB) -> A (LSB) ;GIA TRI GIAI MA: -> ;*************************************************** ;NAME: BCD6TO7SEG ;INPUT: R7 = SO BCD NEN (CH TRIEU - TRIEU) ; R6 = SO BCD NEN (TR NGAN - CH NGAN) ; R5 = SO BCD NEN (NGAN - TRAM) ; R4 = SO BCD NEN (CHUC - DON VI) ;OUTPUT: 67H,66H = MA DOAN (CH TRIEU - TRIEU) ; 65H,64H = MA DOAN (TR NGAN - CH NGAN) ; 63H,62H = MA DOAN (NGAN - TRAM) ; 61H,60H = MA DOAN (CHUC - DON VI) ;*************************************************** BCD8TO7SEG: PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI PUSH DPL PUSH ACC MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA DOAN MOV A,R4 ;LAY SO BCD CAN GIAI MA ANL A,#0FH ;XOA BIT CAO MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO MOV A,R4 ;LAY SO BCD CAN GIAI MA ANL A,#0F0H ;XOA BIT THAP SWAP A ;HOAN CHUYEN CAO - THAP MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO MOV A,R5 ;LAY SO BCD CAN GIAI MA ANL A,#0FH ;XOA BIT CAO MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO MOV A,R5 ;LAY SO BCD CAN GIAI MA ANL A,#0F0H ;XOA BIT THAP SWAP A ;HOAN CHUYEN CAO - THAP MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO MOV A,R6 ;LAY SO BCD CAN GIAI MA ANL A,#0FH ;XOA BIT CAO MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 64H,A ;CAT BCD HANG CHUC NGAN VAO O NHO MOV A,R6 ;LAY SO BCD CAN GIAI MA ANL A,#0F0H ;XOA BIT THAP SWAP A ;HOAN CHUYEN CAO - THAP MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 65H,A ;CAT BCD HANG TRAM NGAN VAO O NHO MOV A,R7 ;LAY SO BCD CAN GIAI MA ANL A,#0FH ;XOA BIT CAO MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 66H,A ;CAT BCD HANG TRIEU VAO O NHO MOV A,R7 ;LAY SO BCD CAN GIAI MA ANL A,#0F0H ;XOA BIT THAP SWAP A ;HOAN CHUYEN CAO - THAP MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 67H,A ;CAT BCD HANG CHUC TRIEU VAO O NHO POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI POP DPL POP DPH RET ;*************************************************** CODE7SEG: ;VUNG CHUA MA DOAN (0 -> 9) DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END Bài 1: Chương trình điều khiển hiển thị đếm GIỜ – PHÚT – GIÂY sáu LED (LED6,7: đếm GIÂY; LED4,5: đếm PHÚT; LED2,3: đếm GIỜ ORG 00H MAIN: MOV R7,#00H ;GIO MOV R6,#00H ;PHUT MOV R5,#00H ;GIAY MP1: LCALL BCD6TO7SEG ;GIAI MA BCD SANG MA DOAN LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI MOV A,R5 ;TANG GIAY ADD A,#1 DA A MOV R5,A CJNE A,#60H,MP1 ;KIEM TRA GIAY > 59 MOV R5,#0 ;XOA GIAY MOV A,R6 ;TANG PHUT ADD A,#1 DA A MOV R6,A CJNE A,#60H,MP1 ;KIEM TRA PHUT > 59 MOV R6,#0 ;XOA PHUT MOV A,R7 ;TANG GIO ADD A,#1 DA A MOV R7,A CJNE A,#60H,MP1 ;KIEM TRA GIO > 59 SJMP MAIN ;*************************************************** ;CTC GIAI MA TU SO BCD NEN SANG MA DOAN (3 SO BCD NEN) ;*************************************************** ;LED: ANODE CHUNG, DOAN: DP (MSB) -> A (LSB) ;GIA TRI GIAI MA: -> ;*************************************************** ;NAME: BCD6TO7SEG ;INPUT: R7 = SO BCD NEN (TR NGAN - CH NGAN) ; R6 = SO BCD NEN (NGAN - TRAM) ; R5 = SO BCD NEN (CHUC - DON VI) ;OUTPUT: 65H,64H = MA DOAN (TR NGAN - CH NGAN) ; 63H,62H = MA DOAN (NGAN - TRAM) ; 61H,60H = MA DOAN (CHUC - DON VI) ;*************************************************** BCD6TO7SEG: PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI PUSH DPL PUSH ACC MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA DOAN MOV A,R5 ;LAY SO BCD CAN GIAI MA ANL A,#0FH ;XOA BIT CAO MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO MOV A,R5 ;LAY SO BCD CAN GIAI MA ANL A,#0F0H ;XOA BIT THAP SWAP A ;HOAN CHUYEN CAO - THAP MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO MOV A,R6 ;LAY SO BCD CAN GIAI MA ANL A,#0FH ;XOA BIT CAO MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO MOV A,R6 ;LAY SO BCD CAN GIAI MA ANL A,#0F0H ;XOA BIT THAP SWAP A ;HOAN CHUYEN CAO - THAP MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO MOV A,R7 ;LAY SO BCD CAN GIAI MA ANL A,#0FH ;XOA BIT CAO MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 64H,A ;CAT BCD HANG CHUC NGAN VAO O NHO MOV A,R7 ;LAY SO BCD CAN GIAI MA ANL A,#0F0H ;XOA BIT THAP SWAP A ;HOAN CHUYEN CAO - THAP MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 65H,A ;CAT BCD HANG TRAM NGAN VAO O NHO POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI POP DPL POP DPH RET CODE7SEG: ;VUNG CHUA MA DOAN (0 -> 9) DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;*************************************************** ;CTC QUET HIEN THI LED DOAN (6 LED DOAN) ;*************************************************** JB P1.1,NEXTKEY2 ;Y: KEY1 KHONG DUOC NHAN MOV R0,#1 ;NAP GIA TRI CUA NUT -> KEY1 NHAN NEXTKEY2: JB P1.2,COMPARE ;Y: KEY2 KHONG DUOC NHAN MOV R0,#2 ;NAP GIA TRI CUA NUT -> KEY2 NHAN COMPARE: CJNE R0,#1,NEXT_COM1 ;Y: NUT NHAN KHONG PHAI LA KEY1 RL A ;NUT NHAN LA KEY1 -> QUAY THUAN BUOC ACALL ROTATE NEXT_COM1: CJNE R0,#2,NEXT_COM2 ;Y: NUT NHAN KHONG PHAI LA KEY2 RR A ;NUT NHAN LA KEY2 -> QUAY NGHICH BUOC ACALL ROTATE NEXT_COM2: SJMP TESTKEY ;QUAY TRO VE ;**************************************************** ROTATE: ;CTC DIEU KHIEN QUAY MOTOR CJNE A,#10H,BIT4_BIT0 ;KIEM TRA TRANG THAI XUNG MOV A,#01H ;DIEU CHING TRANG THAI XUNG VE BUOC BIT4_BIT0: CJNE A,#80H,BIT7_BIT3 ;KIEM TRA TRANG THAI XUNG MOV A,#08H ;DIEU CHING TRANG THAI XUNG VE BUOC BIT7_BIT3: MOV P0,A ;XUAT XUNG KHIEN ACALL DELAY RET ;**************************************************** DELAY: ;CHUONG TRINH CON TAO THOI GIAN TRE 1S PUSH 00H MOV R0,#100 MOV TMOD,#01H LOOP2: MOV TH0,#HIGH(-10000) MOV TL0,#LOW(-10000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 DJNZ R0,LOOP2 POP 00H RET END I HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT) Bài 1: Chương trình điều khiển tạo sóng vng tuần hồn có tần số 10 Hz (sử dụng ngắt Timer) chân P0.0 hiển thị mức logic chân lên LED0 (LED0 nối với P0.0) ;CHUONG TRINH DIEU KHIEN TAO SONG VUONG TAI P0.0 CO SU DUNG NGAT TIMER0 ;*************************************************** ;KET NOI: LED -> PORT0 ;*************************************************** ORG 00H ;DIEM NHAP RESET SJMP MAIN ORG 0BH ;DIEM NHAP ISR TIMER0 T0ISR: CPL P0.0 ;DAO TRANG THAI P0.0 (TAO XUNG) RETI ORG 30H ;DIEM NHAP CHUONG TRINH CHINH MAIN: MOV TMOD,#01H ;TIMER0 -> TIMER 16 BIT MOV TH0,#(-50000) ;THOI GIAN TRE = 50 MS (THOI GIAN XUNG O MUC THAP HOAC MUC CAO) MOV TL0,#(-50000) ;CHU KY = x 50 = 100 MS -> F = 10 Hz SETB TR0 ;CHO TIMER BAT DAU CHAY MOV IE,#82H ;CHO PHEP NGAT TIMER0 HOAT DONG SJMP $ ;DUNG YEN END Bài 2: Chương trình điều khiển đếm số xung chân INT0 (sử dụng ngắt ngoài) hiển thị số xung (tối đa 255 lần) lên ba LED đoạn (LED7 – LED4 nối với Port0, SEL IN1 nối với Port1, PULSE nối với chân INT0) ;CHUONG TRINH DIEU KHIEN DEM SO XUNG TAI CHAN INT0 (SU DUNG NGAT NGOAI INT0) ;*************************************************** ;KET NOI: SEG -> PORT0, SEL LED -> PORT1, PULSE -> INT0 ;*************************************************** ORG 00H ;DIEM NHAP RESET SJMP MAIN ORG 03H ;DIEM NHAP ISR NGOAI EX0ISR: INC 40H ;TANG GIA TRI XUNG KICH RETI ORG 30H ;DIEM NHAP CHUONG TRINH CHINH MAIN: MOV 40H,#0 ;NAP GIA TRI XUNG KICH BAN DAU MOV IE,#81H ;CHO PHEP NGAT NGOAI HOAT DONG SETB IT0 ;DAT CHE DO NGAT NGOAI KICH KHOI CANH MP1: MOV R7,40H ;SO LUONG XUNG KICH ACALL BIN8TOBCD ;CHUYEN DOI BIN SANG BCD ACALL BCD4TO7SEG ;CHUYEN DOI BCD SANG DOAN ACALL DISP7SEGMUL4 ;HIEN THI SJMP MP1 ;*************************************************** BIN8TOBCD: ;CTC CHUYEN DOI SO BINARY BIT ( 9) DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;*************************************************** DISP7SEGMUL4: ;CTC QUET HIEN THI LED DOAN (4 LED DOAN) PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI PUSH 00H MOV A,#0F7H ;MA QUET MOV R0,#63H ;DIA CHI VUNG MA HIEN THI DISP: MOV P0,@R0 ;XUAT MA HIEN THI MOV P1,A ;XUAT MA QUET LCALL DELAYLED MOV P1,#0FFH ;CHONG LAM DEC R0 ;LAY MA HIEN THI KE TIEP RR A ;CHUYEN SANG LED KE TIEP CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI POP ACC RET ;*************************************************** DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS PUSH 00H PUSH 01H MOV R1,#5 DEL: MOV R0,#250 DJNZ R0,$ DJNZ R1,DEL POP 01H POP 00H RET END K HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER Bài 1: Chương trình điều khiển đếm liên tục số lượng xung (0000 – 9999) đưa vào chân T1 vi điều khiển hiển thị số lượng xung lên LED đoạn (PULSE nối với chân T1, LED7 – LED4 nối với Port0, SEL IN1 nối với Port1) ;CHUONG TRINH DIEU KHIEN TIMER/COUNTER DEM (0000 - 9999) VA HIEN THI XUNG TAI CHAN T1 ;*************************************************** ;KET NOI: PORT0 -> SEGMENT (DP -> A), PORT1 -> SELECT LED, PULSE -> T1 PIN ;*************************************************** ORG 00H MAIN: MOV TMOD,#50H ;COUNTER 16 BIT (MODE 1) MOV TH1,#0 ;XOA COUNTER MOV TL1,#0 SETB TR1 ;CHO PHEP COUNTER BAT DAU HOAT DONG MP1: MOV R7,TH1 ;CHUYEN SO XUNG DEM DUOC (TH1, TL1) RA HIEN THI MOV R6,TL1 ACALL BIN16TOBCD ;DOI MA BIN SANG MA BCD ACALL BCD4TO7SEG ;DOI MA BCD SANG MA DOAN ACALL DISP7SEGMUL4 ;HIEN THI GIA TRI LEN LED SJMP MP1 ;*************************************************** BIN16TOBCD: ;CTC CHUYEN DOI SO BINARY 16 BIT (= SJMP A_GREATER_EQ_B ;SO CHIA CHUA ? NOT_EQUAL: JC BELOW ;N: THUONG SO = TRONG R6 A_GREATER_EQ_B: SUBB A,B ;Y: SO DU CAT TRONG A XCH A,R6 ORL A,#1 ;THUONG SO = XCH A,R6 ;CAT TRONG R6 BELOW: DJNZ R2,DIVIDE ;DICH TIEP DEN 16 LAN XCH A,B ;SAU 16 LAN DICH TA DUOC B = SO DU POP ACC POP 02H RET ;*************************************************** BCD4TO7SEG: ;CTC GIAI MA TU SO BCD NEN SANG MA DOAN (2 SO BCD NEN) PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI PUSH DPL PUSH ACC MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA DOAN MOV A,R6 ;LAY SO BCD CAN GIAI MA ANL A,#0FH ;XOA BIT CAO MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO MOV A,R6 ;LAY SO BCD CAN GIAI MA ANL A,#0F0H ;XOA BIT THAP SWAP A ;HOAN CHUYEN CAO - THAP MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO MOV A,R7 ;LAY SO BCD CAN GIAI MA ANL A,#0FH ;XOA BIT CAO MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO MOV A,R7 ;LAY SO BCD CAN GIAI MA ANL A,#0F0H ;XOA BIT THAP SWAP A ;HOAN CHUYEN CAO - THAP MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI POP DPL POP DPH RET CODE7SEG: ;VUNG CHUA MA DOAN (0 -> 9) DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;*************************************************** DISP7SEGMUL4: ;CTC QUET HIEN THI LED DOAN (4 LED DOAN) PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI PUSH 00H MOV A,#0F7H ;MA QUET MOV R0,#63H ;DIA CHI VUNG MA HIEN THI DISP: MOV P0,@R0 ;XUAT MA HIEN THI MOV P1,A ;XUAT MA QUET LCALL DELAYLED MOV P1,#0FFH ;CHONG LAM DEC R0 ;LAY MA HIEN THI KE TIEP RR A ;CHUYEN SANG LED KE TIEP CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI POP ACC RET ;*************************************************** DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS PUSH 00H PUSH 01H MOV R1,#5 DEL: MOV R0,#250 DJNZ R0,$ DJNZ R1,DEL POP 01H POP 00H RET END K HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER Bài 2: Chương trình điều khiển đo tần số xung (0000 – 9999, đơn vị Hz) đưa vào chân T1 vi điều khiển hiển thị tần số xung lên LED đoạn (PULSE nối với chân T1, LED7 – LED4 nối với Port0, SEL IN1 nối với Port1) ;CHUONG TRINH DIEU KHIEN TIMER/COUNTER DO TAN SO XUNG TAI CHAN T1 ;*************************************************** ;KET NOI: PORT0 -> SEGMENT (DP -> A), PORT1 -> SELECT LED, PULSE -> T1 PIN ;*************************************************** ORG 00H ;DIEM NHAP RESET SJMP MAIN ORG 0BH ;DIEM NHAP ISR TIMER0 LJMP T0ISR ORG 30H ;DIEM NHAP CHUONG TRINH CHINH MAIN: MOV TMOD,#51H ;TIMER1: COUNTER 16 BIT (MODE 1), TIMER0: TIMER 16 BIT (MODE 1) MOV TH0,#HIGH(-50000) ;NAP GIA TRI THOI GIAN TRE 50 MS MOV TL0,#LOW(-50000) SETB TR0 ;CHO TIMER BAT DAU CHAY MOV IE,#82H ;CHO PHEP NGAT TIMER0 HOAT DONG MP1: MOV 40H,#0 ;NAP GIA TRI BIEN DEM SO LAN NGAT TIMER0 MOV R7,TH1 ;CHUYEN SO XUNG DEM DUOC (TH1, TL1) RA HIEN THI MOV R6,TL1 MOV TH1,#0 ;XOA COUNTER 1, CHUAN BI CHO LAN DEM XUNG TIEP THEO MOV TL1,#0 SETB TR1 ;COUNTER BAT DAU DEM ACALL BIN16TOBCD ;DOI MA BIN SANG MA BCD ACALL BCD4TO7SEG ;DOI MA BCD SANG MA DOAN MP2: ACALL DISP7SEGMUL4 ;HIEN THI GIA TRI LEN LED MOV A,40H CJNE A,#20,MP2 ;KIEM TRA DU 20 LAN NGAT = 1S CLR TR1 ;DUNG COUNTER SAU 1S -> SO XUNG TRONG 1S = TAN SO XUNG SJMP MP1 ;*************************************************** BIN16TOBCD: ;CTC CHUYEN DOI SO BINARY 16 BIT (= SJMP A_GREATER_EQ_B ;SO CHIA CHUA ? NOT_EQUAL: JC BELOW ;N: THUONG SO = TRONG R6 A_GREATER_EQ_B: SUBB A,B ;Y: SO DU CAT TRONG A XCH A,R6 ORL A,#1 ;THUONG SO = XCH A,R6 ;CAT TRONG R6 BELOW: DJNZ R2,DIVIDE ;DICH TIEP DEN 16 LAN XCH A,B ;SAU 16 LAN DICH TA DUOC B = SO DU POP ACC POP 02H RET ;*************************************************** BCD4TO7SEG: ;CTC GIAI MA TU SO BCD NEN SANG MA DOAN (2 SO BCD NEN) PUSH DPH PUSH DPL PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA DOAN MOV A,R6 ;LAY SO BCD CAN GIAI MA ANL A,#0FH ;XOA BIT CAO MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO MOV A,R6 ;LAY SO BCD CAN GIAI MA ANL A,#0F0H ;XOA BIT THAP SWAP A ;HOAN CHUYEN CAO - THAP MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO MOV A,R7 ;LAY SO BCD CAN GIAI MA ANL A,#0FH ;XOA BIT CAO MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO MOV A,R7 ;LAY SO BCD CAN GIAI MA ANL A,#0F0H ;XOA BIT THAP SWAP A ;HOAN CHUYEN CAO - THAP MOVC A,@A+DPTR ;LAY MA DOAN TUONG UNG MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI POP DPL POP DPH RET CODE7SEG: ;VUNG CHUA MA DOAN (0 -> 9) DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;*************************************************** DISP7SEGMUL4: ;CTC QUET HIEN THI LED DOAN (4 LED DOAN) PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI PUSH 00H MOV A,#0F7H ;MA QUET MOV R0,#63H ;DIA CHI VUNG MA HIEN THI DISP: MOV P0,@R0 ;XUAT MA HIEN THI MOV P1,A ;XUAT MA QUET LCALL DELAYLED MOV P1,#0FFH ;CHONG LAM DEC R0 ;LAY MA HIEN THI KE TIEP RR A ;CHUYEN SANG LED KE TIEP CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI POP ACC RET ;*************************************************** DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS PUSH 00H PUSH 01H MOV R1,#5 DEL: MOV R0,#250 DJNZ R0,$ DJNZ R1,DEL POP 01H POP 00H RET ;*************************************************** T0ISR: ;ISR TIMER0 - 50MS CLR TR0 CLR TF0 MOV TH0,#HIGH(-50000) ;NAP GIA TRI THOI GIAN TRE 50 MS MOV TL0,#LOW(-50000) INC 40H ;TANG BIEN DEM SO LAN NGAT - LAN = 50MS SETB TR0 RETI END N HỆ THỐNG ĐIỀU KHIỂN ADC Bài 2: Chương trình điều khiển biến đổi A/D thông qua ADC0809 hiển thị giá trị kênh ngõ vào (kênh IN0) lên ba LED đoạn (LED2, LED1 LED0; dạng số DEC từ -> 255) Sử dụng chế nhớ Hướng dẫn: Quá trình biến đổi A/D thực qua bước sau: o Xác lập địa chọn kênh ngõ vào (A0, A1, A2) o Tạo xung START/ALE cách xuất giá trị ngoại vi ADC0809 với địa ngoại vi chọn (CS: Chip Select) o Tạo thời gian delay 120 µ s o Đọc giá trị từ ngoại vi ADC0809 với địa ngoại vi chọn (giá trị có tầm từ - 255 tùy theo điện áp ngõ vào từ - 5V ⇒ độ phân giải 5V/255 = 19,6 mV) o Đổi giá trị thành điện áp (tính mV) cách nhân với 19,6 ≈ 20 o Đổi giá trị mã BCD nén o Xuất LED đoạn để hiển thị Đổi số nhị phân bit thành mã BCD nén (packed BCD): o Lấy giá trị cần chuyển đổi (0 – 255) chia cho 10 ⇒ Số dư mã BCD hàng đơn vị o Lấy kết (thương số) phép chia chia tiếp cho 10 ⇒ Số dư mã BCD hàng chục o Kết (thương số) phép chia ⇒ Mã BCD hàng trăm o Kết hợp mã BCD hàng chục hàng đơn vị lại thành mã BCD nén Còn mã BCD hàng trăm giữ nguyên o Chương trình mẫu: ;*************************************************** ;CTC CHUYEN DOI SO BINARY BIT (