Thông báo

Collapse
No announcement yet.

Help mach dong dong ho

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Help mach dong dong ho

    Tình hình là e đang có bài tập viết giao tiếp AT89C51 với led 7 đoạn đếm giờ phút giây bằng ngôn ngử ASM nhưng không biết viết ntn. Bro nào có mạch đó cho e với có dk không .thank nhiều
    ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

  • #2
    em viết được một đoạn như thế này nhưng sao khi hiển thị lên đếm giây xong được một phút mà led đếm phút sáng rồi lại tắ nhỉ. em kung không biết nửa, bro nào giúp em với
    link DONG HO.rar
    ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

    Comment


    • #3
      đã sửa lại code của chú, tham khảo rồi viết thêm cho led hour, viết hoài ko chạy thì post lên hỏi tiếp
      Code:
      	ORG	00H
      main:
      	MOV	P3,#00H
      	MOV	R1,#0
      	MOV	R2,#0
      	MOV	DPTR,#MALED7SEG
      LOOP:	CALL	GIAIMA
      	CALL	GIAIMA1
      	MOV	R5,#25
      LOOP1:	CALL	HIENTHI
      	CALL	HIENTHI1
      	DJNZ	R5,LOOP1
      	INC	R1
      	CJNE	R1,#60,LOOP
      	MOV	R1,#0
      	INC	R2
      	CJNE	R2,#60,LOOP
      	MOV	R2,#0
      	SJMP	LOOP
      HIENTHI:
      	MOV	P0,42H
      	SETB	P3.1
      	CALL	DELAY
      	CLR	P3.1
      	MOV	P0,41H
      	SETB	P3.0
      	CALL	DELAY
      	CLR	P3.0
      	RET
      HIENTHI1:
      	MOV	P0,44H
      	SETB	P3.3
      	CALL	DELAY
      	CLR	P3.3
      	MOV	P0,43H
      	SETB	P3.2
      	CALL	DELAY
      	CLR	P3.2
      	RET
      GIAIMA:
      	MOV	A,R1
      	MOV	B,#10
      	DIV	AB
      	MOVC	A,@A+DPTR
      	MOV	41H,A
      	MOV	A,B
      	MOVC	A,@A+DPTR
      	MOV	42H,A
      	RET
      GIAIMA1:
      	MOV	A,R2
      	MOV	B,#10
      	DIV	AB
      	MOVC	A,@A+DPTR
      	MOV	43H,A
      	MOV	A,B
      	MOVC	A,@A+DPTR
      	MOV	44H,A
      	RET
      DELAY:
      	MOV	R7,#20
      LAP:	MOV	R6,#250
      	DJNZ	R6,$
      	DJNZ	R7,LAP
      	RET
      MALED7SEG: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
      	END

      Comment


      • #4
        Nguyên văn bởi chung1608 Xem bài viết
        đã sửa lại code của chú, tham khảo rồi viết thêm cho led hour, viết hoài ko chạy thì post lên hỏi tiếp
        Code:
        	ORG	00H
        main:
        	MOV	P3,#00H
        	MOV	R1,#0
        	MOV	R2,#0
        	MOV	DPTR,#MALED7SEG
        LOOP:	CALL	GIAIMA
        	CALL	GIAIMA1
        	MOV	R5,#25
        LOOP1:	CALL	HIENTHI
        	CALL	HIENTHI1
        	DJNZ	R5,LOOP1
        	INC	R1
        	CJNE	R1,#60,LOOP
        	MOV	R1,#0
        	INC	R2
        	CJNE	R2,#60,LOOP
        	MOV	R2,#0
        	SJMP	LOOP
        HIENTHI:
        	MOV	P0,42H
        	SETB	P3.1
        	CALL	DELAY
        	CLR	P3.1
        	MOV	P0,41H
        	SETB	P3.0
        	CALL	DELAY
        	CLR	P3.0
        	RET
        HIENTHI1:
        	MOV	P0,44H
        	SETB	P3.3
        	CALL	DELAY
        	CLR	P3.3
        	MOV	P0,43H
        	SETB	P3.2
        	CALL	DELAY
        	CLR	P3.2
        	RET
        GIAIMA:
        	MOV	A,R1
        	MOV	B,#10
        	DIV	AB
        	MOVC	A,@A+DPTR
        	MOV	41H,A
        	MOV	A,B
        	MOVC	A,@A+DPTR
        	MOV	42H,A
        	RET
        GIAIMA1:
        	MOV	A,R2
        	MOV	B,#10
        	DIV	AB
        	MOVC	A,@A+DPTR
        	MOV	43H,A
        	MOV	A,B
        	MOVC	A,@A+DPTR
        	MOV	44H,A
        	RET
        DELAY:
        	MOV	R7,#20
        LAP:	MOV	R6,#250
        	DJNZ	R6,$
        	DJNZ	R7,LAP
        	RET
        MALED7SEG: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
        	END
        thanhk bác nhiều nhá.
        Last edited by thuongdtqb; 19-03-2012, 17:05.
        ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

        Comment


        • #5
          mà bác có thể giải thích dùm mấy lệnh bác thêm cho em với dk không
          Last edited by thuongdtqb; 19-03-2012, 17:11.
          ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

          Comment


          • #6
            em viết thêm led hour như thế này nhưng chạy bị giật. Em không biết do gì nửa bác coi dùm em với. Mà cho em hỏi lun là dòng lệnh: MOV R5,#25 có nghỉ là gì vậy và lệnh giảm R5: DJNZ R5,LOOP1 để làm gì . thank bac nhiều
            Code:
            	ORG	00H
            main:
            	MOV	P3,#00H
            	MOV	R1,#0
            	MOV	R2,#0
            	MOV	R3,#0
            	MOV	DPTR,#MALED7SEG
            LOOP:	CALL	GIAIMAGIAY
            	CALL	GIAIMAPHUT
            	CALL	GIAIMAGIO
            	MOV	R5,#25
            LOOP1:	CALL	HIENTHIGIAY
            	CALL	HIENTHIPHUT
            	CALL	HIENTHIGIO
            	DJNZ	R5,LOOP1
            	INC	R1
            	CJNE	R1,#60,LOOP
            	MOV	R1,#0
            	INC	R2
            	CJNE	R2,#60,LOOP
            	MOV	R1,#0
            	MOV	R2,#0
            	INC	R3
            	CJNE	R3,#60,LOOP
            	MOV	R3,#0
            	SJMP	LOOP
            HIENTHIGIAY:
            	MOV	P0,42H
            	SETB	P3.1
            	CALL	DELAY
            	CLR	P3.1
            	MOV	P0,41H
            	SETB	P3.0
            	CALL	DELAY
            	CLR	P3.0
            	RET
            HIENTHIPHUT:
            	MOV	P0,44H
            	SETB	P3.3
            	CALL	DELAY
            	CLR	P3.3
            	MOV	P0,43H
            	SETB	P3.2
            	CALL	DELAY
            	CLR	P3.2
            	RET
            HIENTHIGIO:
            	MOV	P0,46H
            	SETB	P3.5
            	CALL	DELAY
            	CLR	P3.5
            	MOV	P0,45H
            	SETB	P3.4
            	CALL	DELAY
            	CLR	P3.4
            	RET
            GIAIMAGIAY:
            	MOV	A,R1
            	MOV	B,#10
            	DIV	AB
            	MOVC	A,@A+DPTR
            	MOV	41H,A
            	MOV	A,B
            	MOVC	A,@A+DPTR
            	MOV	42H,A
            	RET
            GIAIMAPHUT:
            	MOV	A,R2
            	MOV	B,#10
            	DIV	AB
            	MOVC	A,@A+DPTR
            	MOV	43H,A
            	MOV	A,B
            	MOVC	A,@A+DPTR
            	MOV	44H,A
            	RET
            GIAIMAGIO:
            	MOV	A,R3
            	MOV	B,#10
            	DIV	AB
            	MOVC	A,@A+DPTR
            	MOV	45H,A
            	MOV	A,B
            	MOVC	A,@A+DPTR
            	MOV	46H,A
            	RET
            DELAY:
            	MOV	R7,#20
            LAP:	MOV	R6,#250
            	DJNZ	R6,$
            	DJNZ	R7,LAP
            	RET
            MALED7SEG: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
            	END
            ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

            Comment


            • #7
              vấn đề quét led bị giật và MOV R5,#25 để làm gì là hai vấn đề liên quan tới nhau. Chú tìm hiểu lại phương pháp quét led cụ thể là phần thời gian lưu ảnh sẽ hiểu. Sửa chương trình ko chỉ rặp khuôn cái đã sửa, mà phải sửa lại cái đã được sửa rồi.

              Comment


              • #8
                Thì thời gian lưu ảnh của mắt là 24 hình/S. Nhưng em vẩn không hỉu R5 ở đây để làm gì.Bác có thể giải thích cho em vớ dk không
                ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

                Comment


                • #9
                  Nguyên văn bởi thuongdtqb Xem bài viết
                  Thì thời gian lưu ảnh của mắt là 24 hình/S. Nhưng em vẩn không hỉu R5 ở đây để làm gì.Bác có thể giải thích cho em vớ dk không
                  lúc đầu dùng 4 lần gọi delay để tạo trì hoãn 1 giây, làm như thế tần số quét led thấp sẽ bị nháy, vì thế cần phải giảm delay mà giảm delay thì thời gian tăng nhỏ hơn 1 giây nên phải có R5 để đếm số lần quét led cho việc tính delay
                  (20*250*2)*4*25=1000000uS

                  Comment


                  • #10
                    Nguyên văn bởi chung1608 Xem bài viết
                    lúc đầu dùng 4 lần gọi delay để tạo trì hoãn 1 giây, làm như thế tần số quét led thấp sẽ bị nháy, vì thế cần phải giảm delay mà giảm delay thì thời gian tăng nhỏ hơn 1 giây nên phải có R5 để đếm số lần quét led cho việc tính delay
                    (20*250*2)*4*25=1000000uS
                    Thank bác nhé. Nếu như vậy có phải bây giờ em phải giảm thời gian delay sao cho gọi 8 lần delay đủ cho thời gian trì hoản 1s phải không bác. Em làm như thế này có được không?
                    Code
                    Code:
                    	ORG	00H
                    MAIN:
                    	MOV	P3,#00H
                    	MOV	R1,#0
                    	MOV	R2,#0
                    	MOV	R3,#0
                    	MOV	DPTR,#MALED7SEG
                    LOOP:	CALL	GIAIMAGIAY
                    	CALL	GIAIMAPHUT
                    	CALL	GIAIMAGIO
                    	CALL	DELAY
                    	MOV	R5,#25
                    LOOP1:	CALL	HIENTHIGIAY
                    	CALL	HIENTHIPHUT
                    	CALL	HIENTHIGIO
                    	CALL	DELAY
                    	DJNZ	R5,LOOP1
                    	INC	R1
                    	CJNE	R1,#60,LOOP
                    	MOV	R1,#0
                    	INC	R2
                    	CJNE	R2,#60,LOOP
                    	MOV	R1,#0
                    	MOV	R2,#0
                    	INC	R3
                    	CJNE	R3,#60,LOOP
                    	MOV	R3,#0
                    	SJMP	LOOP
                    HIENTHIGIAY:
                    	MOV	P0,42H
                    	SETB	P3.1
                    	CALL	DELAY
                    	CLR	P3.1
                    	MOV	P0,41H
                    	SETB	P3.0
                    	CALL	DELAY
                    	CLR	P3.0
                    	RET
                    HIENTHIPHUT:
                    	MOV	P0,44H
                    	SETB	P3.3
                    	CALL	DELAY
                    	CLR	P3.3
                    	MOV	P0,43H
                    	SETB	P3.2
                    	CALL	DELAY
                    	CLR	P3.2
                    	RET
                    HIENTHIGIO:
                    	MOV	P0,46H
                    	SETB	P3.5
                    	CALL	DELAY
                    	CLR	P3.5
                    	MOV	P0,45H
                    	SETB	P3.4
                    	CALL	DELAY
                    	CLR	P3.4
                    	RET
                    GIAIMAGIAY:
                    	MOV	A,R1
                    	MOV	B,#10
                    	DIV	AB
                    	MOVC	A,@A+DPTR
                    	MOV	41H,A
                    	MOV	A,B
                    	MOVC	A,@A+DPTR
                    	MOV	42H,A
                    	RET
                    GIAIMAPHUT:
                    	MOV	A,R2
                    	MOV	B,#10
                    	DIV	AB
                    	MOVC	A,@A+DPTR
                    	MOV	43H,A
                    	MOV	A,B
                    	MOVC	A,@A+DPTR
                    	MOV	44H,A
                    	RET
                    GIAIMAGIO:
                    	MOV	A,R3
                    	MOV	B,#10
                    	DIV	AB
                    	MOVC	A,@A+DPTR
                    	MOV	45H,A
                    	MOV	A,B
                    	MOVC	A,@A+DPTR
                    	MOV	46H,A
                    	RET
                    DELAY:
                    	MOV	R7,#10
                    LAP:	MOV	R6,#250
                    	DJNZ	R6,$
                    	DJNZ	R7,LAP
                    	RET
                    MALED7SEG: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
                    	END
                    (10*250*2)*8*25=1000000uS
                    Mà cho em hỏi cái biểu tượng $ trong chương trình delay có nghỉa gì vậy
                    Last edited by thuongdtqb; 21-03-2012, 08:48.
                    ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

                    Comment


                    • #11
                      Nguyên văn bởi thuongdtqb Xem bài viết
                      Thank bác nhé. Nếu như vậy có phải bây giờ em phải giảm thời gian delay sao cho gọi 6 lần delay đủ cho thời gian trì hoản 1s phải không bác. Mà cho em hỏi cái biểu tượng $ trong chương trình delay có nghỉa gì vậy
                      $ là nhãn nhảy về đầu dòng

                      Comment


                      • #12
                        Nguyên văn bởi chung1608 Xem bài viết
                        lúc đầu dùng 4 lần gọi delay để tạo trì hoãn 1 giây, làm như thế tần số quét led thấp sẽ bị nháy, vì thế cần phải giảm delay mà giảm delay thì thời gian tăng nhỏ hơn 1 giây nên phải có R5 để đếm số lần quét led cho việc tính delay
                        (20*250*2)*4*25=1000000uS
                        Mà cho em hỏi đoạn code này
                        Code:
                        LOOP:	CALL	GIAIMAGIAY
                        	CALL	GIAIMAPHUT  
                        	MOV	R5,#25 
                        LOOP1:	CALL	HIENTHIGIAY
                        	CALL	HIENTHIPHUT
                        	DJNZ	R5,LOOP1 
                        	INC	R1
                        	CJNE	R1,#60,LOOP
                        	MOV	R1,#0
                        Nếu tính như bác vậy thì em nghỉ là mới chạy chương trình vào thì thời gian delay là: (20*250*2)*4=40000uS. Sau khi thực hiện lệnh DJNZ R5,LOOP1 thì R5 giảm đi một đơn vị thì quay trở nhản LOOP1. Lúc này thời gian trì hoản delay sẻ là: (20*250*2)*2*24=500000uS. Tổng cộng time sau khi R5=0 là: 40000+500000=540000uS thôi ah. Không biết em tính thế có đứng không mong bác chỉ giáo dùm em với.
                        ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

                        Comment


                        • #13
                          Nguyên văn bởi thuongdtqb Xem bài viết
                          Mà cho em hỏi đoạn code này
                          Code:
                          LOOP:	CALL	GIAIMAGIAY
                          	CALL	GIAIMAPHUT  
                          	MOV	R5,#25 
                          LOOP1:	CALL	HIENTHIGIAY
                          	CALL	HIENTHIPHUT
                          	DJNZ	R5,LOOP1 
                          	INC	R1
                          	CJNE	R1,#60,LOOP
                          	MOV	R1,#0
                          Nếu tính như bác vậy thì em nghỉ là mới chạy chương trình vào thì thời gian delay là: (20*250*2)*4=40000uS. Sau khi thực hiện lệnh DJNZ R5,LOOP1 thì R5 giảm đi một đơn vị thì quay trở nhản LOOP1. Lúc này thời gian trì hoản delay sẻ là: (20*250*2)*2*24=500000uS. Tổng cộng time sau khi R5=0 là: 40000+500000=540000uS thôi ah. Không biết em tính thế có đứng không mong bác chỉ giáo dùm em với.
                          chú bấm máy lộn 20*250*2*24=960000

                          Comment


                          • #14
                            Nguyên văn bởi chung1608 Xem bài viết
                            chú bấm máy lộn 20*250*2*24=960000
                            Thì lúc mới chạy chương trình vào thì thời gian delay là: (20*250*2)*4=40000uS rồi.Phia sau em bấm máy nhầm nhưng em tính lại là sau lệnh DJNZ R5,LOOP1 thì thời gian sẻ là: (20*250*2)*2*24=480000 và tổng cộng thời gian là 480000+40000=520000uS < 1000000uS như bác tính ah.
                            Ah cho em hỏi luôn nha: $ là nhản nhảy về đầu dòng, em vẩn không hiểu nhưng cụ thể trong chương trình delay đó $ là nhảy về đầu dòng nào ah
                            Last edited by thuongdtqb; 22-03-2012, 10:42.
                            ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

                            Comment


                            • #15
                              Nguyên văn bởi thuongdtqb Xem bài viết
                              thì lúc mới đầu là 40000uS rồi.
                              Ah em nhầm nhưng em tính lại là sau lệnh DJNZ R5,LOOP1 thì thời gian sẻ là: (20*250*2)*2*24=480000 và tổng cộng thời gian là 480000+40000=520000uS < 1000000uS như bác tính ah.
                              20*250*2 là thời gian của chương trình delay
                              delay trong quét led đc gọi 4 lần
                              cho là lúc đầu làm mấy 40000uS như chú nói thì 24 lần làm kết tiếp là
                              20*250*2*4*24= 960000uS

                              Comment

                              Về tác giả

                              Collapse

                              thuongdtqb Tìm hiểu thêm về thuongdtqb

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X