Thông báo

Collapse
No announcement yet.

DS1307 bị đứng

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

  • DS1307 bị đứng

    Lúc đầu em viết code chạy rất ok. Nhưng tự nhiên bữa nay con DS1307 không chạy nữa, giờ phút giây cứ đứng yên một chỗ. Em nghi ngờ là bit CH không được set về 0 làm dao động trong con DS không chạy nên cũng đã set bit này về 0 nhưng vẫn không được. Nhờ các bác chỉ giùm xem nguyên nhân là do đâu

  • #2
    Em gửi code để các bác xem bị lỗi gì, giúp giùm em với.
    Attached Files

    Comment


    • #3
      Bạn reset giây về 0 là chạy dc àh
      Mạch nạp Pickit 2 SE ---> 170k BH 1 năm
      Pic 18F2550 PDIP Thailand bao test 60K/1c


      Comment


      • #4
        Em đã thử rồi nhưng vẫn không được

        Comment


        • #5
          bạn ở đâu mang w mình tét dùm cho
          Mạch nạp Pickit 2 SE ---> 170k BH 1 năm
          Pic 18F2550 PDIP Thailand bao test 60K/1c


          Comment


          • #6
            Nguyên văn bởi phuong197 Xem bài viết
            Lúc đầu em viết code chạy rất ok. Nhưng tự nhiên bữa nay con DS1307 không chạy nữa, giờ phút giây cứ đứng yên một chỗ. Em nghi ngờ là bit CH không được set về 0 làm dao động trong con DS không chạy nên cũng đã set bit này về 0 nhưng vẫn không được. Nhờ các bác chỉ giùm xem nguyên nhân là do đâu
            thay thử cục pin xem sao.
            |

            Comment


            • #7
              Thay pin cũng ko hết đâu, do bị ds1307 bị treo đó, viết ct reset cho giây về 0 là hết àh
              Mạch nạp Pickit 2 SE ---> 170k BH 1 năm
              Pic 18F2550 PDIP Thailand bao test 60K/1c


              Comment


              • #8
                dang chạy má bị đứng lại ko chạy nưa ak,cái này hình như bị lỗi phần cứng rồi bạn ak,m cung vừa mới làm xong cái đồ án đồng hồ sử dụng ds 1307 lúc đầu không chạy nhung tác động 1 lực nhỏ vao thạch anh cua ds là chạy,có lúc thì đứng im reset cũng ko dc nữa,reset liên tục bạn ak,

                Comment


                • #9
                  Em ở Bạch Đằng-Bình Thạnh, bác ở gần đó không

                  Comment


                  • #10
                    Nói chung là em đã thử tất cả các cách có thể, từ thay pin, viết chương trình để set thanh ghi giây về 0, tác động lực lên thạnh anh nhưng tất cả đều không có tác dụng gì.

                    Comment


                    • #11
                      hiện tại mình đang làm một đồ án về con này cho thằng em. mình ở hàng xanh nếu cần bạn có thể đem con đó wa mình thử cho. mình đã có code và mạch sẵn đã chạy ok.

                      Comment


                      • #12
                        Có gì bạn cho địa chỉ hay số điện thoại để mình liên lạc được không

                        Comment


                        • #13
                          Các bạn có thể xem qua cái mach của mình được không. Mình làm đồ án đồng hồ số dùng led đơn hiển thị gio: phut: giay mình làm phần cứng xong rồi, chương trình mình cũng đã viêt. Đây là sơ đồ mạch của minh đây các bạn xem giúp mình có vấn đề chi không nhé.

                          Vấn đề là khi mình làm mạch xong rồi nạp chương trình nó chỉ hiện thị mỗi 6 số 8 không à. Khi mình tháo con vi điều khiển ra nó cũng hiển thị 6 số 8 bạn ạ, các bạn có thể góp ý cho mình phần cứng bị lỗi chỗ nào không nhé. Nếu như thế này thì không có sự tham gia của vi điều khiển thì làm sao mà điều khiển được đồng hồ. Còn đây là code của nó mà mình đã sưu tấm được của anh pctcom
                          Code:
                          $MOD51
                          ;=====================================
                          
                            	XUNG_NHAY	 	DATA	38H		; XUNG 100ms
                           	BIEN_NHAY    	DATA	39H		;0 = SANG TAT CA DEN , 1 = NHAY led TUONG UNG KHI set
                            	GIAY         	DATA	40H
                            	PHUT         	DATA	41H
                            	GIO          	DATA	42H
                            	DONVI_GIAY   	DATA	47H
                            	CHUC_GIAY    	DATA	48H
                            	DONVI_PHUT   	DATA	49H
                            	CHUC_PHUT    	DATA	4AH
                            	DONVI_GIO    	DATA	4BH
                           	CHUC_GIO     	DATA	4CH
                          	PHAN_TRAM_GIAY	DATA	4DH
                          	FLAG_SET		DATA	4EH 	;0 = KHONG SET , 1 = SET PHUT , 2 = SET GIO
                          	LED_GIAY       	BIT		P2.0
                          	LED_C_GIAY     	BIT		P2.1
                           	LED_PHUT       	BIT		P2.2
                          	LED_C_PHUT     	BIT		P2.3
                          	LED_GIO       	BIT		P2.4
                          	LED_C_GIO     	BIT		P2.5
                          ;--------I2C-------
                          	SCL				BIT		P3.0
                          	SDA				BIT		P3.1
                          	SW_1			BIT		P3.2
                          	SW_2			BIT		P3.3
                          	SW_3			BIT		P3.4
                          	LED_DATA		EQU		P0
                          	BYTE_W			EQU	11010000B
                          	BYTE_R			EQU	11010001B
                          	ADD_LOW			EQU	62H
                          	DATA_DS			EQU	63H
                          ;=====================================
                          ;=====================================
                          	ORG 00H
                          	LJMP 	MAIN
                          ;===========================
                          ;===========================
                          	ORG 0BH
                          	LJMP 	NGAT_TIME
                          ;===========================
                          ;===========================
                          	ORG 030H
                          MAIN: 					;reset tat ca cac bien
                          	MOV 	GIAY,#0
                          	MOV 	PHUT,#0
                          	MOV 	GIO,#0
                          	MOV 	BIEN_NHAY,#0
                          	MOV		XUNG_NHAY,#0
                          	MOV		FLAG_SET,#0
                          	MOV 	R0,#0
                          	MOV 	IE,#10001010B
                          	MOV 	TMOD,#11H
                          	MOV 	TL0,#LOW(-9216)
                          	MOV 	TH0,#HIGH(-9216)
                          	SETB 	TR0
                          	MOV		A,#0FFH
                          	MOV		LED_DATA,A
                          	MOV 	DPTR,#BANGSO
                          		CLR	SCL
                          		CLR	SDA
                          		NOP
                          		SETB	SCL
                          		SETB	SDA
                          		NOP
                          		MOV     ADD_LOW,#00H
                          		MOV     DATA_DS,#00H
                          		LCALL   WRITE_BYTE
                          	
                          ;==========================================
                          LOOP_HIEN_THI:			; chuong trinh chinh chay tai day
                          ;==========================================
                          	MOV 	A,FLAG_SET				
                          	CJNE 	A,#0,L_HT
                          	CALL 	INIT_PORT
                          L_HT:
                          	LCALL   HIEN_THI
                          	LCALL 	SCAN_KEY
                          	SJMP 	LOOP_HIEN_THI
                          ;==========================================
                          
                          
                          	INIT_PORT:
                          ;==================================================READS SECONDS
                          READ_SEC:
                          			MOV     ADD_LOW,#00h
                          			LCALL   READ_BYTE
                          			MOV 	GIAY,DATA_DS
                          			LCALL	I2C_STOP
                          ;==================================================READS MINUTES
                          			MOV     ADD_LOW,#01h
                          			LCALL   READ_BYTE
                          			MOV 	PHUT,DATA_DS
                          			LCALL	I2C_STOP
                          ;==================================================READS HOURS
                          			MOV     ADD_LOW,#02h
                          			LCALL   READ_BYTE
                          			MOV 	GIO,DATA_DS
                          			LCALL	I2C_STOP
                          	RET
                          ;==================================================================================
                          ;=====stop I2C communication
                          I2C_Stop:
                          	CLR       SDA
                          	SETB      SCL
                          	NOP
                          	SETB      SDA
                          	RET
                          ;==================================================================================
                          ;*****************************************************
                          ;*            WRITE DATA_DS TO DS1307 1 BYTE	*
                          ;*	INPUT 	: ADD_LOW		*
                          ;*		: DATA_DS			*
                          ;*****************************************************
                          WRITE_BYTE:            CLR     SDA                   ;start bit
                                                 CLR     SCL
                                                 MOV     A,#BYTE_W        ;send control byte
                                                 LCALL   LOOP_BYTE
                                                 SETB    SDA
                                                 SETB    SCL
                                                 JB      SDA,WRITE_BYTE        ;loop until busy
                                                 CLR     SCL
                                                 MOV     A,ADD_LOW             ;send address low
                                                 LCALL   LOOP_BYTE
                                                 SETB    SDA
                                                 SETB    SCL
                                                 JB      SDA,WRITE_BYTE        ;loop until busy
                                                 CLR     SCL
                                                 MOV     A,DATA_DS                ;send DATA
                                                 LCALL   LOOP_BYTE
                                                 SETB    SDA
                                                 SETB    SCL
                                                 JB      SDA,WRITE_BYTE        ;loop until busy
                                                 CLR     SDA
                                                 CLR     SCL
                                                 SETB    SCL                   ;stop bit
                                                 SETB    SDA
                                                 RET
                          
                          ;******************************************************
                          ;*            READ DATA FROM DS1307 1 BYTE	*
                          ;* INPUT  : ADD_HIGH			*
                          ;*        : ADD_LOW				*
                          ;* OUTPUT : DATA_DS			*
                          ;******************************************************
                          READ_BYTE:             CLR     SDA                   ;start bit
                                                 CLR     SCL
                                                 MOV     A,#BYTE_W        ;send control byte
                                                 LCALL   LOOP_BYTE
                                                 SETB    SDA
                                                 SETB    SCL
                                                 JB      SDA,READ_BYTE         ;loop until busy
                                                 CLR     SCL
                                                 MOV     A,ADD_LOW             ;send address low
                                                 LCALL   LOOP_BYTE
                                                 SETB    SDA
                                                 SETB    SCL
                                                 JB      SDA,READ_BYTE         ;loop until busy
                                                 CLR     SCL
                          
                                                 SETB    SCL
                                                 SETB    SDA
                                                 CLR     SDA                   ;start bit
                                                 CLR     SCL
                                                 MOV     A,#BYTE_R        ;send control byte
                                                 LCALL   LOOP_BYTE
                                                 SETB    SDA
                                                 SETB    SCL
                                                 JB      SDA,READ_BYTE         ;loop until busy
                                                 CLR     SCL
                                                 LCALL   LOOP_READ
                                                 SETB    SDA
                                                 SETB    SCL
                                                 CLR     SCL
                          
                                                 SETB    SCL                   ;stop bit
                                                 SETB    SDA
                                                 RET
                          
                          ;****************************************************
                          ;*                      WRITE                       *
                          ;* INPUT: ACC                                       *
                          ;****************************************************
                          LOOP_BYTE:             PUSH    02H
                                                 MOV     R2,#08H
                          LOOP_SEND:             RLC     A
                                                 MOV     SDA,C
                                                 SETB    SCL
                                                 CLR     SCL
                                                 DJNZ    R2,LOOP_SEND
                                                 POP     02H
                                                 RET
                          ;*****************************************************
                          ;*                       READ                        *
                          ;* OUTPUT: ACC                                       *
                          ;*****************************************************
                          LOOP_READ:             PUSH   02H
                                                 MOV    R2,#08H
                          LOOP_READ1:            SETB   SCL
                                                 MOV    C,SDA
                                                 CLR    SCL
                                                 RLC    A
                                                 DJNZ   R2,LOOP_READ1
                                                 MOV    DATA_DS,A
                                                 POP    02H
                                                 RET
                          
                          
                          ;==========================================
                          TACHSO:								; tach rieng hang chuc va hang don vi bang cach chia cho 10
                          ;==========================================
                          	MOV 	A,GIAY					;Lan luot chia cac Bien: Giay, Phut, Gio cho 10 
                          	MOV 	B,#10H 					;de tach phan Don Vi va Hang Chuc ra, de cat rieng vao cac Bien tuong ung.
                          	DIV 	AB                 		;PHAN NGUYEN trong A, PHAN DU trong B
                          	MOV 	CHUC_GIAY,A   			;Luu lai HANG CHUC Giay
                          	MOV 	DONVI_GIAY,B  			;luu lai DON VI Giay
                          	;==========
                          	MOV 	A,PHUT
                          	MOV 	B,#10H
                          	DIV 	AB
                          	MOV 	CHUC_PHUT,A
                          	MOV 	DONVI_PHUT,B
                          	;==========
                          	MOV 	A,GIO
                          	MOV 	B,#10H
                          	DIV 	AB
                          	MOV 	CHUC_GIO,A
                          	MOV 	DONVI_GIO,B
                          RET
                          ;========================================
                          HIEN_THI: 							; HIEN THI LED 7 DOAN
                          ;========================================
                              MOV 	A,FLAG_SET			
                          	CJNE 	A,#0,CHOP_NHAY
                              LCALL   HIENTHI
                              AJMP	THOAT_HIENTHI
                          ;========================================
                          CHOP_NHAY:							; KIEM TRA BIEN NHAY VA FLAG_SET DE TAO HIEU UNG NHAY LED DANG SETING
                          ;=================================
                          	MOV 	A,BIEN_NHAY				
                          	CJNE 	A,#0,CHOP_NHAY1
                          	LCALL 	HIENTHI
                          	AJMP	THOAT_HIENTHI
                          CHOP_NHAY1:
                          	LCALL	NHAY
                          	JMP CHOP_NHAY
                          THOAT_HIENTHI:
                          RET
                          ;=================================
                          HIENTHI:
                          ;=================================
                          	LCALL 	HIENTHI_S
                          	LCALL 	HIENTHI_P
                          	LCALL 	HIENTHI_G
                          RET
                          ;=================================
                          NHAY:
                          ;=================================
                          	MOV		A,FLAG_SET				
                          	CJNE 	A,#1,KT1		
                          	LCALL 	HIENTHI_S
                          	LCALL 	HIENTHI_G
                          KT1:
                          	MOV		A,FLAG_SET				
                          	CJNE 	A,#2,THOAT_N
                          	LCALL 	HIENTHI_S
                          	LCALL 	HIENTHI_P
                          THOAT_N:
                          RET
                          ;=================================
                          HIENTHI_S:
                          ;=================================
                          			;hien thi hang don vi cua Giay
                          	MOV 	A,DONVI_GIAY
                          	MOVC 	A,@A+DPTR
                              MOV     LED_DATA,A
                              CLR 	LED_GIAY
                          	LCALL 	DL
                          	SETB 	LED_GIAY
                          ;==========
                              MOV 	A,CHUC_GIAY		;hien thi hang chuc cua Giay
                          	MOVC 	A,@A+DPTR
                              MOV 	LED_DATA,A
                          	CLR 	LED_C_GIAY
                          	LCALL 	DL
                          	SETB 	LED_C_GIAY
                          RET	
                          ;=================================
                          HIENTHI_P:
                          ;=================================
                          	MOV 	A,DONVI_PHUT	;hien thi hang don vi cua Phut
                          	MOVC 	A,@A+DPTR
                          	MOV 	LED_DATA,A
                          	CLR 	LED_PHUT
                          	LCALL 	DL
                          	SETB 	LED_PHUT
                          ;============
                          	MOV 	A,CHUC_PHUT		;hien thi hang chuc cua Phut
                          	MOVC 	A,@A+DPTR
                          	MOV 	LED_DATA,A
                          	CLR 	LED_C_PHUT
                          	LCALL 	DL
                          	SETB 	LED_C_PHUT
                          RET	
                          ;=================================
                          HIENTHI_G:
                          ;=================================
                          	MOV 	A,DONVI_GIO		;hien thi hang don vi cua gio
                          	MOVC 	A,@A+DPTR
                          	MOV 	LED_DATA,A
                          	CLR 	LED_GIO
                          	LCALL 	DL
                          	SETB 	LED_GIO
                          	;============
                          	MOV 	A,CHUC_GIO		;hien thi hang chuc cua Gio
                          	MOVC 	A,@A+DPTR
                          	MOV 	LED_DATA,A
                          	CLR 	LED_C_GIO
                          	LCALL 	DL
                          	SETB	LED_C_GIO
                          RET
                          ;=================================
                          NGAT_TIME:
                          ;=================================
                          	INC		XUNG_NHAY
                          	INC 	PHAN_TRAM_GIAY   		;DAT TIMER CHAY 1/100 GIAY
                          	MOV 	TL0,#LOW(-9216)
                          	MOV 	TH0,#HIGH(-9216)
                          	SETB 	TR0
                          	;===============   
                          	PUSH ACC
                          	PUSH PSW						;Thanh ghi trang thái chuong trình
                          	;==========
                          	MOV 	A,XUNG_NHAY				;TAO XUNG NHAP NHAY = 1/4 GIAY
                          	CJNE 	A,#25,TIME1
                          	MOV 	XUNG_NHAY,#0
                          	INC		BIEN_NHAY
                          	MOV 	A,BIEN_NHAY				
                          	CJNE 	A,#3,TIME1
                          	MOV 	BIEN_NHAY,#0
                          	;==========
                          TIME1:
                          	MOV 	A,PHAN_TRAM_GIAY		;Kiem tra bien PHAN_TRAM_GIAY - Thoat khoi ngat Time0 neu khong =
                          	CJNE 	A,#100,THOAT_NGAT_TIME
                          	MOV 	PHAN_TRAM_GIAY,#0		;Neu = 100 thì set bien nay = 0
                          	;===============
                          THOAT_NGAT_TIME:
                          	LCALL 	TACHSO
                          	POP 	PSW
                          	POP 	ACC
                          RETI
                          ;==================================
                          SCAN_KEY:					;KIEM TRA PHIM NHAN
                          ;==================================
                          SW1:				        ;SET TIME
                          	JB		SW_1,SW2
                          	INC		FLAG_SET				
                          	MOV		A,FLAG_SET
                          	CJNE 	A,#3,L_SW1
                          
                          ;==========	
                          		MOV     ADD_LOW,#01H
                          		MOV     DATA_DS,PHUT
                          		LCALL   WRITE_BYTE
                          ;==========	
                          	MOV             FLAG_SET,#0
                          
                          L_SW1:
                          	LCALL	DL1
                          	LCALL	DL1
                          	LCALL	DL1
                          	LCALL	DL1
                          	LJMP	NOKEY
                          ;===============
                          SW2:						  ;SET_MIN
                          	JB		SW_2,SW3				
                          	MOV		A,FLAG_SET				
                          	CJNE 	A,#0,SW20
                          	LJMP	NOKEY
                          SW20:
                          	MOV		A,FLAG_SET				
                          	CJNE 	A,#1,TANG_GIO			;
                          	JB		SW_2,SW3
                          ;===============
                          TANG_PHUT:
                          	INC 	PHUT					;Roi tang Bien phut them 1
                          	MOV 	A,PHUT
                          	CJNE 	A,#60,L_SW2				;
                          	MOV 	PHUT,#0					;Neu = 60 thì set bien nay = 0
                          L_SW2:
                          	LCALL	DL1
                              LCALL	DL1
                          	LJMP	SW2
                          ;===============
                          TANG_GIO:                            ;SET HOUR
                          	JB		SW_2,SW3
                          	MOV		A,FLAG_SET
                          	CJNE 	A,#2,SW3
                          	JB		SW_2,SW3
                          	INC 	GIO						;Roi tang Bien Gio them 1
                          	MOV 	A,GIO
                          	CJNE 	A,#24,L_TANG_GIO		;Bien gio = 60? - Thoat khoi ngat Time0 neu khong =
                          	MOV 	GIO,#0	
                          L_TANG_GIO:
                          	LCALL	DL1
                              LCALL	DL1
                          	LJMP	TANG_GIO
                          ;==============================
                          SW3:								;DANG NHAN SW3?
                          	JB		SW_3,NOKEY				;KHONG NHAN SW2? KIEM TRA SW3
                          	MOV		A,FLAG_SET				
                          	CJNE 	A,#0,SW30
                          	LJMP	NOKEY
                          SW30:	
                          	MOV		A,FLAG_SET				;DANG NHAN SW2. KIEM TRA CHE DO CHINH GIO HAY CHINH PHUT.	
                          	CJNE 	A,#1,GIAM_GIO			;
                          	JB		SW_3,NOKEY
                          ;===============	
                          GIAM_PHUT:
                          	DEC 	PHUT					;Roi tang Bien phut them 1
                          	MOV 	A,PHUT
                          	CJNE 	A,#-1,L_SW3			;Bien Phut = -1? - Thoat khoi ngat Time0 neu khong =
                          	MOV 	PHUT,#59			;Neu = -1 thì set bien nay = 60
                          L_SW3:
                          	LCALL	DL1
                              LCALL	DL1
                          	LJMP	SW3
                          ;===============
                          GIAM_GIO: 
                          ;===============   
                          	JB		SW_3,NOKEY
                          	MOV		A,FLAG_SET
                          	CJNE 	A,#2,NOKEY
                          	
                          	LCALL	HIENTHI
                          	JB		SW_3,NOKEY
                          	DEC 	GIO						;Roi Giam Bien Gio them 1
                          	MOV 	A,GIO
                          	CJNE 	A,#-1,L_GIAM_GIO				;Bien gio = -1? - Thoat khoi ngat Time0 neu khong =
                          	MOV 	GIO,#23	
                          L_GIAM_GIO:
                          	LCALL	DL1
                              LCALL	DL1
                          	LJMP 	GIAM_GIO
                          ;===============	
                          NOKEY:
                          RET
                          ;=================================
                          DL:
                          ;=================================
                          	MOV 	R7,#200
                          	DJNZ 	R7,$
                          	RET
                          ;==================
                          DL1:			 
                          ;==================
                           PUSH 00H
                           PUSH 01H
                           MOV R1,#20O
                          DEL:
                          LCALL   HIEN_THI
                          LCALL   HIEN_THI
                          LCALL   HIEN_THI
                           MOV R0,#250
                           DJNZ R0,$
                           DJNZ R1,DEL
                           POP 01H
                           POP 00H
                          RET
                          ;===================
                          DELAY_1MS:
                          ;===================
                          	MOV 	R7,#200
                          DL_1MS_1:
                          	MOV 	R6,#200
                          	DJNZ 	R6,$
                          	DJNZ 	R7,DL_1MS_1
                          RET
                          ;====================
                          DELAY:
                          ;====================
                          	NOP
                          	NOP	
                          	NOP
                          	NOP
                          	NOP
                          	NOP
                          	NOP
                          	NOP
                          RET
                          ;=================================
                          BANGSO:
                          ;=================================
                          	DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
                          RET	
                          END
                          và đây là layout mà mình đã vẽ

                          Mong các bác có thể bớt chút thời gian xem qua bai của mình cái nhé. Thank các bác nhiều và chúc các bác luôn hạnh phúc
                          Last edited by dat 302; 03-06-2011, 17:06.

                          Comment


                          • #14
                            Có bác nào rảnh thì xem cho mình cái. Minh không biết làm sao đây nữa chán ơi là chán.

                            Comment


                            • #15
                              Nguyên văn bởi dat 302 Xem bài viết
                              Các bạn có thể xem qua cái mach của mình được không. Mình làm đồ án đồng hồ số dùng led đơn hiển thị gio: phut: giay mình làm phần cứng xong rồi, chương trình mình cũng đã viêt.
                              Hi, chương trình này bạn "tự viết"....

                              http://www.dientuvietnam.net/forums/...-7-thanh/page2

                              Nếu không muốn đưa tên của tác giả viết code này thì bạn chỉ cần nói đây là code mà bạn đã sưu tầm chứ. Buồn thật???
                              PCT COMPUTER
                              (Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X