MỤC ĐÍCH: • Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển và sử dụng mô hình thí nghiệm để kiểm chứng.. • Khảo sát nguyên lý hoạt động và phươ
Trang 1KHOA CÔNG NGHỆ ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP TÀI LIỆU HƯỚNG DẪN
THÍ NGHIỆM - THỰC HÀNH
Trang 2K HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER
A MỤC ĐÍCH:
• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển và sử dụng mô hình thí nghiệm để kiểm chứng
• Điều khiển thiết bị ngoại vi bằng các port của vi điều khiển
• Tìm hiểu các chế độ hoạt động của Timer và Counter
• Khảo sát nguyên lý hoạt động và phương pháp lập trình điều khiển Timer và Counter
• Thiết kế các ứng dụng thực tế có sử dụng các bộ định thời gian (Timer) và các bộ đếm sự kiện (Counter)
B YÊU CẦU:
• Nắm vững tập lệnh của vi điều khiển MCS-51
• Nắm vững phương pháp vận hành các Timer và Counter có trong chip vi điều khiển
• Biết cách lập trình Timer và Counter ở các chế độ khác nhau, cách tính toán các khoảng thời gian định thời mong muốn
• Thiết kế và điều khiển được các ứng dụng có sử dụng Timer và Counter như: đồng hồ, bộ đếm sản phẩm,
…
Trang 3K 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) được đưa vào chân T1 của vi điều
khiển và hiển thị số lượng xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1)
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm
• Tắt nguồn cấp cho mơ hình thí nghiệm
• Dùng dây bus 4 nối J64 (PORT1) ở khối vi điều khiển với J1 (SEL IN1) ở khối LED 7 đoạn (chú ý là ta chỉ nối 4 bit thấp của J64 với J1)
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối giải mã
• Dùng dây bus 1 nối J33 (PULSE) ở khối tạo xung với J66 (PORT3 / FUNCTION) ở khối vi điều khiển (chú ý là ta chỉ nối bit 5 (chân T1) của J66 và J33 lại với nhau)
• Dùng dây bus 3 nối J113 (POWER) ở khối tạo xung và J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn
LED 7 ĐOẠN 7SEG7 IN
SEL IN2
7SEG6 IN 7SEG5 IN 7SEG4 IN 7SEG7 INMUL
A0 A7
CHIP CLOCK OUT
POWER SW
8
NGUỒN
+5V
3
TẠO XUNG
3
1
1.2 Sơ đồ nguyên lý của hệ thống:
AD7
AD0
AD0 AD2 AD4 AD6
AD7 AD5 AD3 AD1
A C E F G
A C E F G
AD0 A AD1 B AD2 C AD3 D AD4 E AD5 F AD6 G
A C E F G
A C E F G
P1.3
P1.2
P1.0
XTAL2 18
XTAL1 19
ALE 30
EA 31
PSEN 29
RST 9
P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32
P1.0 1
P1.1 2
P1.2 3
P1.3 4
P1.4 5
P1.5 6
P1.6 7
P1.7 8
P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28
P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
2 4 6 8
1
RP1
10K
MẠCH ĐIỀU KHIỂN TIMER/COUNTER (ĐẾM XUNG)
LED7
Q1
A1015 +5V
LED6
Q2
A1015
+5V
R2
1K
R3
1K
R4
56
R5
56
R6
56
R7
56
R8
56
R9
56
R10
56
LED5
Q3
A1015 +5V
LED4
Q4
A1015
+5V
R11
1K
R12
1K
C3
10uF
R1
10k
+5V
A B
U1(P3.5/T1)
Trang 4K 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) được đưa vào chân T1 của vi điều
khiển và hiển thị số lượng xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1)
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển
BCD4TO7SEG
(XEM CTC NÀY TẠI VÍ DỤ B6 M7I)
DISP7SEGMUL4
(XEM CTC NÀY TẠI VÍ DỤ B6 MBI)
DELAYLED
(XEM CTC NÀY TẠI VÍ DỤ B3.1 MBI)
VÙNG DỮ LIỆU CODE7SEG C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H
KHỞI ĐỘNG TIMER (COUNTER 1, MODE 1) (TMOD) = 50H XÓA COUNTER 1 (TH1/TL1) = 0000H CHO COUNTER HOẠT ĐỘNG
(TR1) = 1
MAIN:
MP1:
ĐỌC SỐ XUNG ĐẾM ĐƯỢC
(R7) = TH1 (R6) = TL1 GỌI CTC CHUYỂN ĐỔI SỐ BIN SANG SỐ BCD
BIN16TOBCD GỌI CTC CHUYỂN ĐỔI SỐ BCD SANG MÃ 7 ĐOẠN
BCD4TO7SEG GỌI CTC QUÉT - HIỂN THỊ DISP7SEGMUL4
BIN16TOBCD
(XEM CTC NÀY TẠI PHẦN HƯỚNG DẪN CỦA VÍ DỤ K3)
DIV16TO8
(XEM CTC NÀY TẠI PHẦN HƯỚNG DẪN CỦA VÍ DỤ K3)
;***************************************************
;CHUONG TRINH DIEU KHIEN TIMER/COUNTER DEM (0000 - 9999) VA HIEN THI XUNG TAI CHAN T1
;***************************************************
;KET NOI: PORT0 -> 7 SEGMENT (DP -> A)
; PORT1 -> SELECT LED
; PULSE -> T1 PIN
;***************************************************
MAIN:
MOV TMOD ,#50H ;COUNTER 16 BIT (MODE 1)
MOV TH1 ,#0 ;XOA COUNTER 1
MOV TL1 ,#0
SETB TR1 ;CHO PHEP COUNTER BAT DAU HOAT DONG
MP1:
MOV R6 , TL1
ACALL BIN16TOBCD ;DOI MA BIN SANG MA BCD
ACALL BCD4TO7SEG ;DOI MA BCD SANG MA 7 DOAN
ACALL DISP7SEGMUL4 ;HIEN THI GIA TRI LEN LED
SJMP MP1
;***************************************************
BIN16TOBCD: ;CTC CHUYEN DOI SO BINARY 16 BIT (<= 9999) SANG SO BCD.
PUSH ACC
PUSH B
MOV B ,#10
ACALL DIV16TO8 ;LAY R7,R6 CHIA CHO 10
MOV B ,#10
ACALL DIV16TO8 ;TIEP TUC CHIA CHO 10
MOV B ,#10
MOV A , R6
DIV AB ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG TRAM, ACC CHUA SO HANG NGAN
SWAP A ;DUA SO HANG NGAN LEN 4 BIT CAO
POP B ;LAY SO HANG TRAM TU STACK
ORL A , B ;KET HOP SO HANG NGAN VA SO HANG TRAM
MOV R7 , A ;R7 = NGAN - TRAM
POP ACC ;LAY SO HANG CHUC TU STACK
SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO
POP B ;LAY SO HANG DON VI TU STACK
Trang 5K 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) được đưa vào chân T1 của vi điều
khiển và hiển thị số lượng xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1)
ORL A , B ;KET HOP SO HANG CHUC VA SO HANG DON VI
MOV R6 , A ;R6 = CHUC - DON VI
POP B
POP ACC
RET
;***************************************************
DIV16TO8: ;CTC CHIA SO BINARY 16 BIT CHO SO BINARY 8 BIT.
PUSH 02H ;CAT THANH GHI R2
PUSH ACC ;CAT THANH GHI A
MOV R2 ,#16 ;CHO PHEP DICH 16 LAN
CLR A
DIVIDE:
CLR C
XCH A , R6 ;DICH BIT 7 CUA R6 VAO
RLC A ;CARRY, BIT 0 CUA R6
XCH A , R6 ;BANG 0
XCH A , R7 ;DICH BIT CARRY VAO
XCH A , R7
RLC A ;DICH BIT 7 CUA R7 VAO A
CJNE A , B ,NOT_EQUAL ;XEM SO BIT DA DICH >=
SJMP A_GREATER_EQ_B ;SO CHIA CHUA ?
NOT_EQUAL:
JC BELOW ;N: THUONG SO = 0 TRONG R6
A_GREATER_EQ_B:
SUBB A , B ;Y: SO DU CAT TRONG A
XCH A , R6
ORL A ,#1 ;THUONG SO = 1
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 7 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 7 DOAN
MOV A , R6 ;LAY SO BCD CAN GIAI MA
ANL A ,#0FH ;XOA 4 BIT CAO
MOVC A , @A+DPTR ;LAY MA 7 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 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A , @A+DPTR ;LAY MA 7 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 4 BIT CAO
MOVC A , @A+DPTR ;LAY MA 7 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 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A , @A+DPTR ;LAY MA 7 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 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;***************************************************
DISP7SEGMUL4: ;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN).
Trang 6K 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) được đưa vào chân T1 của vi điều
khiển và hiển thị số lượng xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1)
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 LEM
DEC R0 ;LAY MA HIEN THI 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
1.4 Lưu chương trình và biên dịch chương trình
1.5 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có
1.6 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip hoạt động
1.7 Nạp chương trình vào vi điều khiển
1.8 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển
1.9 Bật nguồn cho mô hình thí nghiệm Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ bước 3 đến bước 9
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)
Trang 7K HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER
Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi
điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1)
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1
1.2 Sơ đồ nguyên lý của hệ thống:
AD7
AD0
AD0 AD2 AD4 AD6
AD7 AD5 AD3 AD1
A C E F G
A C E F G
AD0 A AD1 B AD2 C AD3 D AD4 E AD5 F AD6 G
A C E F G
A C E F G
P1.3
P1.2
P1.0
XTAL2 18
XTAL1 19
ALE 30
EA 31
PSEN 29
RST 9
P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32
P1.0 1
P1.1 2
P1.2 3
P1.3 4
P1.4 5
P1.5 6
P1.6 7
P1.7 8
P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28
P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
2 4 6 8
1
RP1
10K
MẠCH ĐIỀU KHIỂN TIMER/COUNTER (ĐO TẦN SỐ XUNG) LED7
Q1
A1015 +5V
LED6
Q2
A1015
+5V
R2
1K
R3
1K
R4
56
R5
56
R6
56
R7
56
R8
56
R9
56
R10
56
LED5
Q3
A1015 +5V
LED4
Q4
A1015
+5V
R11
1K
R12
1K
C3
10uF
R1
10k
+5V
A B
U1(P3.5/T1)
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển
;***************************************************
;CHUONG TRINH DIEU KHIEN TIMER/COUNTER DO TAN SO XUNG TAI CHAN T1
;***************************************************
;KET NOI: PORT0 -> 7 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)
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 7 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
Trang 8K HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER
Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi
điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1)
;***************************************************
BIN16TOBCD: ;CTC CHUYEN DOI SO BINARY 16 BIT (<= 9999) SANG SO BCD.
PUSH ACC
PUSH B
MOV B ,#10
ACALL DIV16TO8 ;LAY R7,R6 CHIA CHO 10
MOV B ,#10
ACALL DIV16TO8 ;TIEP TUC CHIA CHO 10
MOV B ,#10
MOV A , R6
DIV AB ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG TRAM, ACC CHUA SO HANG NGAN
SWAP A ;DUA SO HANG NGAN LEN 4 BIT CAO
POP B ;LAY SO HANG TRAM TU STACK
ORL A , B ;KET HOP SO HANG NGAN VA SO HANG TRAM
MOV R7 , A ;R7 = NGAN - TRAM
POP ACC ;LAY SO HANG CHUC TU STACK
SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO
POP B ;LAY SO HANG DON VI TU STACK
ORL A , B ;KET HOP SO HANG CHUC VA SO HANG DON VI
MOV R6 , A ;R6 = CHUC - DON VI
POP B
POP ACC
RET
;***************************************************
DIV16TO8: ;CTC CHIA SO BINARY 16 BIT CHO SO BINARY 8 BIT.
PUSH 02H ;CAT THANH GHI R2
PUSH ACC ;CAT THANH GHI A
MOV R2 ,#16 ;CHO PHEP DICH 16 LAN
CLR A
DIVIDE:
CLR C
XCH A , R6 ;DICH BIT 7 CUA R6 VAO
RLC A ;CARRY, BIT 0 CUA R6
XCH A , R6 ;BANG 0
XCH A , R7 ;DICH BIT CARRY VAO
XCH A , R7
CJNE A , B ,NOT_EQUAL ;XEM SO BIT DA DICH >=
SJMP A_GREATER_EQ_B ;SO CHIA CHUA ?
NOT_EQUAL:
JC BELOW ;N: THUONG SO = 0 TRONG R6
A_GREATER_EQ_B:
SUBB A , B ;Y: SO DU CAT TRONG A
XCH A , R6
ORL A ,#1 ;THUONG SO = 1
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 7 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 7 DOAN
MOV A , R6 ;LAY SO BCD CAN GIAI MA
ANL A ,#0FH ;XOA 4 BIT CAO
MOVC A , @A+DPTR ;LAY MA 7 DOAN TUONG UNG
Trang 9K HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER
Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi
điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1)
MOV 60H, A ;CAT BCD HANG DON VI VAO O NHO
MOV A , R6 ;LAY SO BCD CAN GIAI MA
ANL A ,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A , @A+DPTR ;LAY MA 7 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 4 BIT CAO
MOVC A , @A+DPTR ;LAY MA 7 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 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A , @A+DPTR ;LAY MA 7 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 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;***************************************************
DISP7SEGMUL4: ;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 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 LEM
DEC R0 ;LAY MA HIEN THI 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 - 1 LAN = 50MS
SETB TR0
RETI
END
Trang 10K HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER
Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi
điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1)
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)