Professional Documents
Culture Documents
NET
@svkt.net
1: ;=====================================================================================
2: ;= CHƯƠNG TRÌNH HIỂN THỊ THỜI GIAN THEO PHƯƠNG PHÁP THÔNG THƯỜNG =
3: ;= ĐỒNG HỒ NÀY CHẠY KHÔNG ĐƯỢC CHÍNH XÁC =
4: ;= TÁC GIẢ: PHẠM MINH TUẤN, WEBSITE: WWW.SVKT.NET =
5: ;= CHÚ Ý, BẠN KHÔNG ĐƯỢC GÕ TIẾNG VIỆT VÀO BÀI LÀM, ĐÂY CHỈ LÀ MINH HỌA =
6: ;=====================================================================================
7: %*DEFINE(HIEN_THI(SO,B1,B2))( ;MACRO NÀY SẼ HIỆN THỊ LED 7 ĐỌAN THEO PHƯƠNG
8: MOV A,%SO ;PHÁP QUÉT.
9: MOV B,#10 ;BIẾT SỐ: SẼ HIỂN THỊ GIÁ TRỊ CỦA THANHH GHI
10: DIV AB ;BIẾN B1: BIT ĐIỀU KHIỂN LED HÀNG CHỤC
11: ADD A,#30H ;BIẾN B2: BIT ĐIỀU KHIÊN LED HÀNG ĐƠN VỊ
12: MOV R1,A ;BẠN CÓ THỂ HÌNH DUNG NHƯ SAU: MỘT SỐ ĐƯỢC
13: MOV P0,%B1 ;CHỨA TRONG THANH GHI NÀO ĐÓ CÓ GIÁ TRỊ TỪ
14: MOV P1,@R1 ;0-->99. VÍ DỤ: 25 .ĐEM CHIA CHO 10, THÌ ĐƯỢC
15: ACALL DELAY ;2 DƯ 5. VẬY TA CHỈ VIỆC HIỆN THỊ
16: MOV A,B ;TRÊN 2 LED SỐ 2 VÀ SỐ 5 THEO ĐÚNG THỨ TỰ,
17: ADD A,#30H ; THÌ SẼ CÓ SỐ 25
18: MOV R1,A ;ADD #30H LÀ BỞI VÌ TẠI ĐỊA CHỈ 30H ĐẶT MÃ LED
19: MOV P0,%B2 ;7 ĐỌAN LÀ SÓ 0, VÍ DỤ SỐ 5 ADD VỚI 30H THÌ
20: MOV P1,@R1 ;ĐƯỢC ĐỊA CHỈ 35H, ĐỊA CHỈ NÀY LÀ MÃ 7 ĐỌAN CỦA
21: ACALL DELAY ) ;SỐ 5, VIỆC CÒN LẠI LÀ ĐỊNH ĐỊA
22: ;CHỈ GIÁN TIẾP ĐỂ THAM CHIẾU ĐẾN Ô THỨ 35H
23: %*DEFINE(LED_CODE)(
24: MOV 30H,#0C0H ;MÃ SỐ 0 TƯƠNG ỨNG Ô 30H
25: MOV 31H,#0F9H ;MÃ SỐ 1 31H
26: MOV 32H,#0A4H ;....
27: MOV 33H,#0B0H
28: MOV 34H,#99H
29: MOV 35H,#92H
30: MOV 36H,#82H
31: MOV 37H,#0F8H
32: MOV 38H,#80H
33: MOV 39H,#90H)
34: GIAY EQU R2 ;THANH GHI NHỚ GIÂY
35: PHUT EQU R3 ;THANH GHI NHỚ PHÚT
36: GIO EQU R4 ;THANH GHI NHỚ GIỜ
37: LAP EQU R5 ;SỐ LẦN LẶP ĐỂ ĐỦ 1 GIÂY
38: THOI_GIAN EQU 255 ;THỜI GIAN CỦA MỖI LẦN LẶP
39: TGTRE EQU 20 ;THỜI GIAN TRỄ ĐỂ CHỐNG NHÒE KHI QUÉT LED
40:
41: ;KHOI TAO CAC GIA TRI BAN DAU
42: ;CHƯƠNG TRÌNH SỬ DỤNG PORT 1 LÀ PORT DATA, PORT 0 LÀ PORT LÀ PORT ĐIỀU KHIỂN
43: ;LED 7 ĐỌAN LÀ LED SÁNG KHI ĐƯỢC KÍCH MỨC THẤP
44: ORG 0000H
45: MAIN:
46: %LED_CODE ;KHƠI TẠO MÃ LED 7 ĐỌAN TẠI ĐÂY
47: MOV P0,#0FFH
48: MOV P1,#0FFH
49: MOV P2,#00H
50: MOV P3,#00H
51: MOV GIAY,#00H ;THANH GHI NHƠ GIÂY
52: MOV PHUT,#00H ;THANH GHI NHỚ PHÚT
53: MOV GIO,#00H ;THANH GHI NHỚ GIỜ
54: MOV LAP,#THOI_GIAN
55: LOOP:
56: %HIEN_THI(GIAY,#11111101B,#11111110B)
57: %HIEN_THI(PHUT,#11110111B,#11111011B)
58: %HIEN_THI(GIO,#11011111B,#11101111B)
59: DJNZ LAP,LOOP
60: MOV LAP,#THOI_GIAN
61: INC GIAY
62: CJNE GIAY,#60,LOOP
63: MOV GIAY,#00H
64: INC PHUT
65: CJNE PHUT,#60,LOOP
66: MOV PHUT,#00H
67: INC GIO
68: CJNE GIO,#24,LOOP
69: LJMP MAIN
70: DELAY:
71: MOV R7,#TGTRE
72: DJNZ R7,$
73: RET
74: ;=====================================================================================
75: ;= LỜI KẾT: BÀI NÀY CHỈ MANG TÍNH CHẤT MINH HỌA, KHÔNG THỂ CHÍNH XÁC ĐƯỢC =
76: ;= NẾU BẠN QUAN TÂM CÓ THỂ TÍNH TOẤN CHI TIẾT ĐỂ NÓ CÓ THỂ CHẠY CHÍNH XÁC =
77: ;= HI VỌNG LÀ VẬY =
78: ;= @SVKT.NET =
79: ;=====================================================================================
80: END
1: ;===============================================================================
2: ;= CHUONG TRÌNH NÀY SỬ DỤNG TIMER LÀM ĐỒNG HỒ ĐIỆN TỬ =
3: ;= CHẠY KHÁ CHÍNH XÁC HƠN PHƯƠNG PHÁP THÔNG THƯỜNG =
4: ;= VIẾT BỞI PHẠM MINH TUẤN, @SVKT.NET =
5: ;===============================================================================
6: %*DEFINE(HIEN_THI(SO,B1,B2))(
7: MOV A,%SO
8: MOV B,#10
9: DIV AB
10: ADD A,#30H
11: MOV R1,A
12: MOV P0,%B1
13: MOV P1,@R1
14: ACALL DELAY
15: MOV A,B
16: ADD A,#30H
17: MOV R1,A
18: MOV P0,%B2
19: MOV P1,@R1
20: ACALL DELAY )
21: ;===============================================================================
22: %*DEFINE(LED_CODE)( ;KHỞI TẠO MÃ 7 ĐỌAN
23: MOV 30H,#0C0H
24: MOV 31H,#0F9H
25: MOV 32H,#0A4H
26: MOV 33H,#0B0H
27: MOV 34H,#99H
28: MOV 35H,#92H
29: MOV 36H,#82H
30: MOV 37H,#0F8H
31: MOV 38H,#80H
32: MOV 39H,#90H)
33: ;===============================================================================
34: GIAY EQU R2
35: PHUT EQU R3
36: GIO EQU R4
37: LAP EQU R5
38: ;===============================================================================
39: ORG 0000H
40: ;CHUONG TRÌNH CHÍNH
41: MAIN:
42: MOV TMOD, #00000001B ;SỬ DỤNG TIMER 0 CHẾ ĐỘ 1, 16BIT.
43: MOV TH0,#HIGH(-50000) ;ÐÊM 50.000uMS THÌ PHẤT CỜ
44: MOV TL0,#LOW(-50000)
45: SETB TR0
46: MOV P0,#0FFH
47: MOV P1,#0FFH
48: MOV GIAY,#00H ;THANH GHI NHỚ GIÂY
49: MOV PHUT,#00H ;THANH GHI NHỚ PHÚT
50: MOV GIO,#00H ;THANH GHI NHỚ GIỜ
51: MOV LAP,#21 ;KHỞI TẠO THANH GHI LẶP, MỖI LẦN 50.000uMS, 20
52: SETB TR0 ;LẦN x 50uMS = 1S
53: CLR TF0 ;KHỞI ÐỘNG TIMER 0
54: LOOP:
55: %HIEN_THI(GIAY,#11111101B,#11111110B)
56: %HIEN_THI(PHUT,#11110111B,#11111011B)
57: %HIEN_THI(GIO,#11011111B,#11101111B)
58: ; KIEM TRA NEU TIMMER 1 DEM DU, 20x50.000uMs , THI TANG GIA TRI GIAY, TRO VE
59: JNB TF0,LOOP
60: CLR TF0
61: CLR TR0
62: MOV TH0, #HIGH(-50000)
63: MOV TL0, #LOW(-50000)
64: SETB TR0 ;KH?I Ð?NG L?I TIMER .
65:
66: DJNZ LAP,LOOP ;GIỜ THÌ CÓ THỂ HIỂU LÀ 21 CHỨ KHÔNG
67: MOV LAP,#21 ;PHẢI LÀ 20, GIẢM TỪ 21 VÈ 1 LÀ 20 LẦN
68: INC GIAY
69: CJNE GIAY,#60,LOOP
70: ;59 GIÂY, TANG 1 PHÚT, GIÂY VỀ 00
71: MOV GIAY,#00H
72: INC PHUT
73: CJNE PHUT,#60,LOOP
74: ;59 PHÚT, TANG 1 GIỜ, PHÚT VỀ 00
75: MOV PHUT,#00H
76: INC GIO
77: CJNE GIO,#24,LOOP
78: ;24 GIỜ, HẾT, CHẠY LẠI
79: LJMP MAIN
80: ;HÀM CHỐNG NHÒE
81: DELAY:
82: MOV R7,#255
83: DJNZ R7,$
84: RET
85: ;===============================================================================
86: ;= CÁI NÀY CHẠY KHÁ CHÍNH XÁC, NHƯNG CẦN PHẢI TÍNH TÓAN, =
87: ;= THÊM ĐỂ CÓ THẾ CHÍNH XÁC HƠN =
88: ;= =
89: ;= @SVKT.NET =
90: ;===============================================================================
91: END
1: ;===============================================================================
2: ;= CHƯƠNG TRÌNH SỬ DỤNG NGẮT CỦA TIMER 0 ĐỂ TÍNH TÓAN THỜI GIAN =
3: ;= LÀM ĐỒNG HỒ ĐIỆN TỬ =
4: ;= CHƯƠNG TRÌNH ĐƯỢC VIẾT BỞI PHẠM MINH TUẤN =
5: ;= @SVKT.NET =
6: ;===============================================================================
7: %*DEFINE(LED_CODE)( ;KHƠI TẠO MÃ 7 ĐỌAN
8: MOV 30H,#0C0H
9: MOV 31H,#0F9H
10: MOV 32H,#0A4H
11: MOV 33H,#0B0H
12: MOV 34H,#99H
13: MOV 35H,#92H
14: MOV 36H,#82H
15: MOV 37H,#0F8H
16: MOV 38H,#80H
17: MOV 39H,#90H)
18: ;===============================================================================
19: %*DEFINE(HIEN_THI(SO,B1,B2))(
20: MOV A,%SO
21: MOV B,#10
22: DIV AB
23: ADD A,#30H
24: MOV R1,A
25: MOV P0,%B1
26: MOV P1,@R1
27: ACALL DELAY
28: MOV A,B
29: ADD A,#30H
30: MOV R1,A
31: MOV P0,%B2
32: MOV P1,@R1
33: ACALL DELAY )
34: %*DEFINE(NAP_GIA_TRI)( CLR TR0
35: MOV TH0,#HIGH(-50000)
36: MOV TL0,#LOW(-50000)
37: SETB TR0)
38: ;===============================================================================
39: GIAY EQU R2
40: PHUT EQU R3
41: GIO EQU R4
42: LAP EQU R5
43: ;===============================================================================
44: ORG 00H
45: LJMP MAIN
46: ORG 0BH ;VECTƠ NGẮT CỦA TIMER0
47: LJMP ISP_TIMER0
48: ORG 30H ;CHƯƠNG TRÌNH CHÍNH BẮT ĐẦU Ở ĐÂY
49: MAIN:
50: %LED_CODE ;KHỞI TẠO MÃ 7 ĐỌAN
51: MOV IE,#10000010B ;CHO PHÉP NGẮT TIMER 0
52: MOV TMOD,#00000001 ;TIMER 0 CHẠY CHẾ ĐỘ 1, 16BIT
53: MOV LAP,#21
54: MOV GIO,#00
55: MOV PHUT,#00
56: MOV GIAY,#00
57: MOV P0,#0FFH
58: MOV P1,#0FFH
59: SETB TR0
60: SETB TF0 ;CHO NGẮT NGAY KHI KHỞI TẠO CÁC GIÁ TRỊ
61: LOOP:
62: %HIEN_THI(GIAY,#11111101B,#11111110B)
63: %HIEN_THI(PHUT,#11110111B,#11111011B)
64: %HIEN_THI(GIO,#11011111B,#11101111B)
65: LJMP LOOP ; CỨ HIỂN THỊ VÀ ĐỢI NGẮT
66: ISP_TIMER0:
67: DJNZ LAP,EXIT ;ĐỦ 20 LẦN CHƯA, CHƯA THÌ VỀ, ĐỢI NGẮT
68: MOV LAP,#21 ;ĐỦ RỒI THÌ TRẢ LẠI GIÁ TRỊ
69: INC GIAY
70: CJNE GIAY,#60,EXIT
71: MOV GIAY,#00
72: ;59 S THÌ VỀ 00, TĂNG 1 PHÚT
73: INC PHUT
74: CJNE PHUT,#60,EXIT
75: MOV PHUT,#00
76: ;ĐỦ 59 PHÚT THÌ TRỞ VỀ 0, TĂNG 1 H
77: INC GIO
78: CJNE GIO,#24,EXIT
79: MOV GIO,#00
80: ;ĐỦ 24 H THÌ VỀ LÀM LẠI
81: EXIT:
82: %NAP_GIA_TRI
83: RETI
84: DELAY:
85: MOV R7,#255
86: DJNZ R7,$
87: RET
88: ;===============================================================================
89: ;= END @SVKT.NET
=
90: ;===============================================================================
91: END
SVKT.NET