Thông báo

Collapse
No announcement yet.

Đồng hồ dùng ds1307 , sai ở đâu?

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

  • Đồng hồ dùng ds1307 , sai ở đâu?

    mình đang làm đồ án đồng hồ số dùng pic 16f877a và rtc ds1307, đã code xong phần hiển thị hết rồi, nhưng khi mô phỏng thấy phần năm hàng chục và hàng đơn vị bị đảo lộn cho nhau, nhưng mình xem lại code thì thấy hoàn toàn đúng hay trình mình kém không biết sai ở đâu hết? mong mấy bạn giúp mình với
    Code:
    #include <16f877a.h>
    #include <def_877a.h>
    #include <ds1307.c>
    #fuses nowdt,noprotect,nolvp,xt,hs
    #use delay(clock=4000000)
    #use fast_io(b)
    #use fast_io(d)
    byte sec,min,hour,date,month,year;
    byte const maled[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };
    byte gic,gid,pc,pd,gc,gd,dac,dad,moc,mod,ye1,ye2,ye3,ye4;
    byte chinh_giay,chinh_phut,chinh_gio,chinh_nam,chinh_ngay,chinh_thang;
    int i;
    int16 j;
    #bit hourc =0x08.5
    #bit hourd =0x08.4
    #bit minc =0x08.3
    #bit mind =0x08.2
    #bit secc =0x08.1
    #bit secd =0x08.0
    #bit dated =0x09.2
    #bit datec =0x09.1
    #bit monthd =0x07.7
    #bit monthc =0x07.2
    #bit y4	=0x05.5
    #bit y3	=0x09.0
    #bit y2	=0x05.3
    #bit y1	=0x05.2		//nam hang ngan
    #bit sw1=0x07.0
    #bit sw2=0x07.1
    #bit sw3=0x07.5
    #bit sw4=0x07.6
    
    void hienthi();
    void read_time();
    void update_time();
    void update_ds1307();
    void set_sec();
    void set_min();
    void set_hour();
    void set_date();
    void set_month();
    void set_year();
    void main()
    {
    	j++;
    	set_tris_d(0x00);
    	set_tris_b(0x00);
    	set_tris_e(0x00);
    	set_tris_a(0x01);
    	set_tris_c(0x63);
    	init_ds1307();
    	chinh_giay=0;
    	chinh_phut=0;
    	chinh_gio=0;
    	chinh_ngay=0;
    	chinh_thang=0;
    	chinh_nam=0;
    	while(1)
    	{
    		read_time();
    		hienthi();	
    	if(sw1==0)
            {
                if(chinh_giay==0&&sw4==1)
                {
                    while(sw1==0) {}
                    set_sec(); chinh_giay=1;}
    			else if(chinh_phut==0 && sw4==1)
    				{
    					while(sw1==0){}
    					set_min();chinh_phut=1;
    				}
    			else if(chinh_gio==0 && sw4==1)
    				{
    					while(sw1==0){}
    					set_hour();chinh_gio=1;
    				}
    			else if(chinh_ngay==0 && sw4==1)
    				{
    					while(sw1==0){}
    					set_date();chinh_ngay=1;
    				}
    			else if(chinh_thang==0 && sw4==1)
    				{
    					while(sw1==0){}
    					set_month();chinh_thang=1;
    				}
    			else if(chinh_nam==0 && sw4==1)
    				{
    					while(sw1==0){}
    					set_year();chinh_nam=1;
    				}
    			else if(chinh_giay==1&&chinh_phut==1&&chinh_gio==1&&chinh_ngay==1&&chinh_thang==1&&chinh_nam==1)
    				{chinh_giay=0;chinh_phut=0;chinh_gio=0;chinh_ngay=0;chinh_thang=0;chinh_nam=0;}
    
                }
     	if(sw4==0)
            {
                chinh_giay=0;chinh_phut=0;chinh_gio=0;chinh_ngay=0;chinh_thang=0;chinh_nam=0;
            }
    	}
    }
    void read_time()
    {
    	sec=read_ds1307(0);
    	min=read_ds1307(1);
    	hour=read_ds1307(2);
    	date=read_ds1307(4);
    	month=read_ds1307(5);
    	year=read_ds1307(6);
    	update_time();
    }
    void update_ds1307()
    {
    	write_ds1307(0,sec);
    	write_ds1307(1,min);
    	write_ds1307(2,hour);
    	write_ds1307(4,date);
    	write_ds1307(5,month);
    	write_ds1307(6,year);
    }
    void update_time()
    {
    
    	gd=sec&0x0f;
    	gc=(sec&0xf0)>>4;
    	pd=min&0x0f;
    	pc=(min&0xf0)>>4;
    	gid=hour&0x0f;
    	gic=(hour&0x30)>>4;
    	dad=date&0x0f;
    	dac=(date&0x30)>>4;
    	mod=month&0x0f;
    	moc=(month&0x10)>>4;
    	ye3=year&0x0f;
    	ye4=(year&0xf0)>>4;
    }
    
    void set_sec()
    {
    	gd=1;gc=1;pd=1;pc=1;gid=1;gic=1;
    	sec=read_ds1307(0);
    	gd=sec&0x0f;
    	gc=(sec&0xf0)>>4;
    	while(sw1==1 && sw4==1)
    	{
    	portb=maled[gd];secd=0;delay_us(100);secd=1;
    	portb=maled[gc];secc=0;delay_us(100);secc=1;
    		if(sw2==0)
    			{
    				while(sw2==0){}
    				if(gc==5 && gd==10)
    					{gc=0;gd=0;}
    				else if(gd==10)
    					{gc++;gd=0;}
    				else
    					gd++;
    			}
    		if(sw3==0)
    			{
    				while(sw3==0){}
    				if(gc==0&&gd==0)
    				{gc=5;gd=9;}
    				else if(gd==0)
    				{gc--;gd=9;}
    				else
    				gd--;
    			}
    		sec=(gc<<4)+gd;
    		write_ds1307(0,sec);
    		delay_us(8);	
    }
    }
    void set_min()
    {
    	gd=1;gc=1;pd=1;pc=1;gid=1;gic=1;
    	min=read_ds1307(1);
    	pd=min&0x0f;
    	pc=(min&0xf0)>>4;
    	while(sw1==1 && sw4==1)
    	{
    	portb=maled[pd];mind=0;delay_us(100);mind=1;
    	portb=maled[pc];minc=0;delay_us(100);minc=1;
    		if(sw2==0)
    			{
    				while(sw2==0){}
    				if(pc==5 && pd==10)
    					{pc=0;pd=0;}
    				else if(pd==10)
    					{pc++;pd=0;}
    				else
    					pd++;
    			}
    		if(sw3==0)
    			{
    				while(sw3==0){}
    				if(pc==0&&pd==0)
    				{pc=5;pd=9;}
    				else if(pd==0)
    				{pc--;pd=9;}
    				else
    				pd--;
    			}
    		min=(pc<<4)+pd;
    		write_ds1307(1,min);
    		delay_us(8);	
    }
    }
    void set_hour()
    {
    	gd=1;gc=1;pd=1;pc=1;gid=1;gic=1;
    	hour=read_ds1307(2);
    	gid=hour&0x0f;
    	gic=(hour&0x30)>>4;
    	while(sw1==1 && sw4==1)
    	{
    	portb=maled[gid];hourd=0;delay_us(100);hourd=1;
    	portb=maled[gic];hourc=0;delay_us(100);hourc=1;
    		if(sw2==0)
    			{
    				while(sw2==0){}
    				if(gic==2 && gid==4)
    					{gic=0;gid=0;}
    				else if(gid==10)
    					{gic++;gid=0;}
    				else
    					gid++;
    			}
    		if(sw3==0)
    			{
    				while(sw3==0){}
    				if(gic==0&&gid==0)
    				{gic=2;gid=3;}
    				else if(gid==0)
    				{gic--;gid=9;}
    				else
    				gid--;
    			}
    		hour=(gic<<4)+gid;
    		write_ds1307(2,hour);
    		delay_us(8);	
    }
    }
    void set_date()
    {
    	dac=1;dad=1;moc=1;mod=1;ye1=1;ye2=1;ye3=1;ye4=1;
    	date=read_ds1307(4);
    	month=read_ds1307(5);
    	dad=date&0x0f;
    	dac=(date&0x30)>>4;
    	while(sw1==1 &&sw4==1)
    	{
    	portb=maled[dad];dated=0;delay_us(100);dated=1;
    	portb=maled[dac];datec=0;delay_us(100);datec=1;
    		if(sw2==0)
    			{
    				while(sw2==0){}
    				if(month==1 || month==3 ||month==5 || month==7 ||month==8 || month==10 || month==12)
    					{
    						if(dac==3 && dad==1)
    							{dac=0;dad=0;}
    						else if(dad==10)
    							{dac++;dad=0;}
    						else 
    							dad++;
    					}
    				else if(month==4 || month==6 || month==9 || month==11 ||month==8 || month==10)
    					{
    						if(dac==3 && dad==0)
    							{dac=0;dad=0;}
    						else if(dad==10)
    							{dac++;dad=0;}
    						else 
    							dad++;
    					}
    			}
    		if(sw3==0)
    			{
    				while(sw3==0){}
    				if(month==1 || month==3 ||month==5 || month==7 ||month==8 || month==10 || month==12)
    					{
    						if(dac==0 && dad==0)
    							{dac=3;dad=1;}
    						else if(dad==0)
    							{dac--;dad=9;}
    						else 
    							dad--;
    					}
    				else if(month==4 || month==6 ||month==9 || month==11 ||month==8 || month==10)
    					{
    						if(dac==0 && dad==0)
    							{dac=3;dad=0;}
    						else if(dad==0)
    							{dac--;dad=9;}
    						else 
    							dad--;
    					}
    			}
    		date=(dac<<4)+dad;
    		write_ds1307(4,date);
    		delay_us(8);
    	}	
    }
    //
    void set_month()
    {
    		dac=1;dad=1;moc=1;mod=1;ye1=1;ye2=1;ye3=1;ye4=1;
    		month=read_ds1307(5);
    		mod=month&0x0f;
    		moc=(month&0x10)>>4;
    		while(sw1==1&&sw4==1)
    		{
    		portb=maled[mod];monthd=0;delay_us(100);monthd=1;
    		portb=maled[moc];monthc=0;delay_us(100);monthc=1;
    			if(sw2==0)
    			{
    				while(sw2==0){}
    					if(moc==1 && mod==2)
    						{moc=0;mod=0;}
    					else if(mod==10)
    						{moc++;mod=0;}
    					else
    						mod++;
    			}
    			if(sw3==0)
    			{
    				while(sw3==0){}
    					if(moc==0 && mod==0)
    						{moc=1;mod=2;}
    					else if(mod==0)
    						{moc--;mod=9;}
    					else
    						mod--;
    			}
    			month=(moc<<4)+mod;
    			write_ds1307(5,month);
    			delay_us(8);
    		}
    		
    }
    void set_year()
    {
    	dac=1;dad=1;moc=1;mod=1;ye1=1;ye2=1;ye3=1;ye4=1;
    	year=read_ds1307(6);
    	ye3=(year&0xf0)>>4;
    	ye4=year&0x0f;
    		while(sw1==1 && sw4==1)
    			{
    				portb=maled[ye4];y4=0;delay_us(100);y4=1;
    				portb=maled[ye3];y3=0;delay_us(100);y3=1;
    				portb=0xc0;y2=0;delay_us(100);y2=1;
    				portb=0xa4;y1=0;delay_us(100);y1=1;
    				if(sw2==0)
    					{
    						while(sw2==0){}
    							if(ye3==9&&ye4==9)
    								{
    									ye3=0;ye4=0;
    								}
    							else if(ye4==10)
    								{
    									ye4=0;ye3++;
    								}
    							else
    									ye4++;
    					}
    				if(sw3==0)
    					{
    						while(sw3==0){}
    							if(ye3==0&&ye4==0)
    							{
    								ye3=9;ye4=9;
    							}
    							else if(ye4==0)
    							{ye3--;ye4=9;}
    							else 
    							ye4--;
    					}
    			year=(ye3<<4)+ ye4;
    			write_ds1307(6,year);
    			delay_us(8);
    			}
    }
    void hienthi()
    {
    	for(i=1;i<30;i++)
    	{
    		portb=maled[gd];secd=0;delay_us(100);secd=1;
    		portb=maled[gc];secc=0;delay_us(100);secc=1;
    		portb=maled[pd];mind=0;delay_us(100);mind=1;
    		portb=maled[pc];minc=0;delay_us(100);minc=1;
    		portb=maled[gid];hourd=0;delay_us(100);hourd=1;
    		portb=maled[gic];hourc=0;delay_us(100);hourc=1;
    		portb=maled[dad];dated=0;delay_us(100);dated=1;
    		portb=maled[dac];datec=0;delay_us(100);datec=1;
    		portb=maled[mod];monthd=0;delay_us(100);monthd=1;
    		portb=maled[moc];monthc=0;delay_us(100);monthc=1;
    		portb=maled[ye3];y3=0;delay_us(100);y3=1;
    		portb=maled[ye4];y4=0;delay_us(100);y4=1;
    		portb=0xc0;y2=0;delay_us(100);y2=1;
    		portb=0xa4;y1=0;delay_us(100);y1=1;
    	}
    }
    em không biết cách up lên diễn đàn , mod đừng xóa bài em nha
    dong ho.rar

  • #2
    Nguyên văn bởi loveboom3012 Xem bài viết
    mình đang làm đồ án đồng hồ số dùng pic 16f877a và rtc ds1307, đã code xong phần hiển thị hết rồi, nhưng khi mô phỏng thấy phần năm hàng chục và hàng đơn vị bị đảo lộn cho nhau, nhưng mình xem lại code thì thấy hoàn toàn đúng hay trình mình kém không biết sai ở đâu hết? mong mấy bạn giúp mình với

    portb=maled[ye3];y3=0;delay_us(100);y3=1;chuc
    portb=maled[ye4];y4=0;delay_us(100);y4=1;
    dvi
    portb=0xc0;y2=0;delay_us(100);y2=1;tram
    portb=0xa4;y1=0;delay_us(100);y1=1;nghin


    [/code]
    em không biết cách up lên diễn đàn , mod đừng xóa bài em nha
    dong ho.rar
    đảo lại 2 cái dòng đen đen là được.
    |

    Comment


    • #3
      Nguyên văn bởi tdm Xem bài viết
      đảo lại 2 cái dòng đen đen là được.
      nhưng sai chỗ nào bạn? đảo lại thì chạy rồi đó, nhưng vào phần chỉnh năm thì lại hiển thị ngược lại

      Comment


      • #4
        Nguyên văn bởi loveboom3012 Xem bài viết
        nhưng sai chỗ nào bạn.
        code sửa lại:
        Code:
        #include <16f877a.h>
        #include <def_877a.h>
        #include <ds1307.c>
        #fuses nowdt,noprotect,nolvp,xt,hs
        #use delay(clock=4000000)
        #use fast_io(b)
        #use fast_io(d)
        byte sec,min,hour,date,month,year;
        byte const maled[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };
        byte gic,gid,pc,pd,gc,gd,dac,dad,moc,mod,ye1,ye2,ye3,ye4;
        byte chinh_giay,chinh_phut,chinh_gio,chinh_nam,chinh_ngay,chinh_thang;
        int i;
        int16 j;
        #bit hourc =0x08.5
        #bit hourd =0x08.4
        #bit minc =0x08.3
        #bit mind =0x08.2
        #bit secc =0x08.1
        #bit secd =0x08.0
        #bit dated =0x09.2
        #bit datec =0x09.1
        #bit monthd =0x07.7
        #bit monthc =0x07.2
        #bit y4   =0x05.5
        #bit y3   =0x09.0
        #bit y2   =0x05.3
        #bit y1   =0x05.2      //nam hang ngan
        #bit sw1=0x07.0
        #bit sw2=0x07.1
        #bit sw3=0x07.5
        #bit sw4=0x07.6
        
        void hienthi();
        void read_time();
        void update_time();
        void update_ds1307();
        void set_sec();
        void set_min();
        void set_hour();
        void set_date();
        void set_month();
        void set_year();
        void main()
        {
           j++;
           set_tris_d(0x00);
           set_tris_b(0x00);
           set_tris_e(0x00);
           set_tris_a(0x01);
           set_tris_c(0x63);
           init_ds1307();
           chinh_giay=0;
           chinh_phut=0;
           chinh_gio=0;
           chinh_ngay=0;
           chinh_thang=0;
           chinh_nam=0;
           while(1)
           {
              read_time();
              hienthi();   
           if(sw1==0)
                {
                    if(chinh_giay==0&&sw4==1)
                    {
                        while(sw1==0) {}
                        set_sec(); chinh_giay=1;}
                 else if(chinh_phut==0 && sw4==1)
                    {
                       while(sw1==0){}
                       set_min();chinh_phut=1;
                    }
                 else if(chinh_gio==0 && sw4==1)
                    {
                       while(sw1==0){}
                       set_hour();chinh_gio=1;
                    }
                 else if(chinh_ngay==0 && sw4==1)
                    {
                       while(sw1==0){}
                       set_date();chinh_ngay=1;
                    }
                 else if(chinh_thang==0 && sw4==1)
                    {
                       while(sw1==0){}
                       set_month();chinh_thang=1;
                    }
                 else if(chinh_nam==0 && sw4==1)
                    {
                       while(sw1==0){}
                       set_year();chinh_nam=1;
                    }
                 else if(chinh_giay==1&&chinh_phut==1&&chinh_gio==1&&chinh_ngay==1&&chinh_thang==1&&chinh_nam==1)
                    {chinh_giay=0;chinh_phut=0;chinh_gio=0;chinh_ngay=0;chinh_thang=0;chinh_nam=0;}
        
                    }
            if(sw4==0)
                {
                    chinh_giay=0;chinh_phut=0;chinh_gio=0;chinh_ngay=0;chinh_thang=0;chinh_nam=0;
                }
           }
        }
        void read_time()
        {
           sec=read_ds1307(0);
           min=read_ds1307(1);
           hour=read_ds1307(2);
           date=read_ds1307(4);
           month=read_ds1307(5);
           year=read_ds1307(6);
           update_time();
        }
        void update_ds1307()
        {
           write_ds1307(0,sec);
           write_ds1307(1,min);
           write_ds1307(2,hour);
           write_ds1307(4,date);
           write_ds1307(5,month);
           write_ds1307(6,year);
        }
        void update_time()
        {
        
           gd=sec&0x0f;
           gc=(sec&0xf0)>>4;
           pd=min&0x0f;
           pc=(min&0xf0)>>4;
           gid=hour&0x0f;
           gic=(hour&0x30)>>4;
           dad=date&0x0f;
           dac=(date&0x30)>>4;
           mod=month&0x0f;
           moc=(month&0x10)>>4;
           ye4=year&0x0f;//donvi
           ye3=(year&0xf0)>>4;//chuc
        }
        
        void set_sec()
        {
           gd=1;gc=1;pd=1;pc=1;gid=1;gic=1;
           sec=read_ds1307(0);
           gd=sec&0x0f;
           gc=(sec&0xf0)>>4;
           while(sw1==1 && sw4==1)
           {
           portb=maled[gd];secd=0;delay_us(100);secd=1;
           portb=maled[gc];secc=0;delay_us(100);secc=1;
              if(sw2==0)
                 {
                    while(sw2==0){}
                    if(gc==5 && gd==10)
                       {gc=0;gd=0;}
                    else if(gd==10)
                       {gc++;gd=0;}
                    else
                       gd++;
                 }
              if(sw3==0)
                 {
                    while(sw3==0){}
                    if(gc==0&&gd==0)
                    {gc=5;gd=9;}
                    else if(gd==0)
                    {gc--;gd=9;}
                    else
                    gd--;
                 }
              sec=(gc<<4)+gd;
              write_ds1307(0,sec);
              delay_us(8);   
        }
        }
        void set_min()
        {
           gd=1;gc=1;pd=1;pc=1;gid=1;gic=1;
           min=read_ds1307(1);
           pd=min&0x0f;
           pc=(min&0xf0)>>4;
           while(sw1==1 && sw4==1)
           {
           portb=maled[pd];mind=0;delay_us(100);mind=1;
           portb=maled[pc];minc=0;delay_us(100);minc=1;
              if(sw2==0)
                 {
                    while(sw2==0){}
                    if(pc==5 && pd==10)
                       {pc=0;pd=0;}
                    else if(pd==10)
                       {pc++;pd=0;}
                    else
                       pd++;
                 }
              if(sw3==0)
                 {
                    while(sw3==0){}
                    if(pc==0&&pd==0)
                    {pc=5;pd=9;}
                    else if(pd==0)
                    {pc--;pd=9;}
                    else
                    pd--;
                 }
              min=(pc<<4)+pd;
              write_ds1307(1,min);
              delay_us(8);   
        }
        }
        void set_hour()
        {
           gd=1;gc=1;pd=1;pc=1;gid=1;gic=1;
           hour=read_ds1307(2);
           gid=hour&0x0f;
           gic=(hour&0x30)>>4;
           while(sw1==1 && sw4==1)
           {
           portb=maled[gid];hourd=0;delay_us(100);hourd=1;
           portb=maled[gic];hourc=0;delay_us(100);hourc=1;
              if(sw2==0)
                 {
                    while(sw2==0){}
                    if(gic==2 && gid==4)
                       {gic=0;gid=0;}
                    else if(gid==10)
                       {gic++;gid=0;}
                    else
                       gid++;
                 }
              if(sw3==0)
                 {
                    while(sw3==0){}
                    if(gic==0&&gid==0)
                    {gic=2;gid=3;}
                    else if(gid==0)
                    {gic--;gid=9;}
                    else
                    gid--;
                 }
              hour=(gic<<4)+gid;
              write_ds1307(2,hour);
              delay_us(8);   
        }
        }
        void set_date()
        {
           dac=1;dad=1;moc=1;mod=1;ye1=1;ye2=1;ye3=1;ye4=1;
           date=read_ds1307(4);
           month=read_ds1307(5);
           dad=date&0x0f;
           dac=(date&0x30)>>4;
           while(sw1==1 &&sw4==1)
           {
           portb=maled[dad];dated=0;delay_us(100);dated=1;
           portb=maled[dac];datec=0;delay_us(100);datec=1;
              if(sw2==0)
                 {
                    while(sw2==0){}
                    if(month==1 || month==3 ||month==5 || month==7 ||month==8 || month==10 || month==12)
                       {
                          if(dac==3 && dad==1)
                             {dac=0;dad=0;}
                          else if(dad==10)
                             {dac++;dad=0;}
                          else 
                             dad++;
                       }
                    else if(month==4 || month==6 || month==9 || month==11 ||month==8 || month==10)
                       {
                          if(dac==3 && dad==0)
                             {dac=0;dad=0;}
                          else if(dad==10)
                             {dac++;dad=0;}
                          else 
                             dad++;
                       }
                 }
              if(sw3==0)
                 {
                    while(sw3==0){}
                    if(month==1 || month==3 ||month==5 || month==7 ||month==8 || month==10 || month==12)
                       {
                          if(dac==0 && dad==0)
                             {dac=3;dad=1;}
                          else if(dad==0)
                             {dac--;dad=9;}
                          else 
                             dad--;
                       }
                    else if(month==4 || month==6 ||month==9 || month==11 ||month==8 || month==10)
                       {
                          if(dac==0 && dad==0)
                             {dac=3;dad=0;}
                          else if(dad==0)
                             {dac--;dad=9;}
                          else 
                             dad--;
                       }
                 }
              date=(dac<<4)+dad;
              write_ds1307(4,date);
              delay_us(8);
           }   
        }
        //
        void set_month()
        {
              dac=1;dad=1;moc=1;mod=1;ye1=1;ye2=1;ye3=1;ye4=1;
              month=read_ds1307(5);
              mod=month&0x0f;
              moc=(month&0x10)>>4;
              while(sw1==1&&sw4==1)
              {
              portb=maled[mod];monthd=0;delay_us(100);monthd=1;
              portb=maled[moc];monthc=0;delay_us(100);monthc=1;
                 if(sw2==0)
                 {
                    while(sw2==0){}
                       if(moc==1 && mod==2)
                          {moc=0;mod=0;}
                       else if(mod==10)
                          {moc++;mod=0;}
                       else
                          mod++;
                 }
                 if(sw3==0)
                 {
                    while(sw3==0){}
                       if(moc==0 && mod==0)
                          {moc=1;mod=2;}
                       else if(mod==0)
                          {moc--;mod=9;}
                       else
                          mod--;
                 }
                 month=(moc<<4)+mod;
                 write_ds1307(5,month);
                 delay_us(8);
              }
              
        }
        void set_year()
        {
           dac=1;dad=1;moc=1;mod=1;ye1=1;ye2=1;ye3=1;ye4=1;
           year=read_ds1307(6);
           ye3=(year&0xf0)>>4;
           ye4=year&0x0f;
              while(sw1==1 && sw4==1)
                 {
                    portb=maled[ye4];y4=0;delay_us(100);y4=1;
                    portb=maled[ye3];y3=0;delay_us(100);y3=1;
                    portb=0xc0;y2=0;delay_us(100);y2=1;
                    portb=0xa4;y1=0;delay_us(100);y1=1;
                    if(sw2==0)
                       {
                          while(sw2==0){}
                             if(ye3==9&&ye4==9)
                                {
                                   ye3=0;ye4=0;
                                }
                             else if(ye4==10)
                                {
                                   ye4=0;ye3++;
                                }
                             else
                                   ye4++;
                       }
                    if(sw3==0)
                       {
                          while(sw3==0){}
                             if(ye3==0&&ye4==0)
                             {
                                ye3=9;ye4=9;
                             }
                             else if(ye4==0)
                             {ye3--;ye4=9;}
                             else 
                             ye4--;
                       }
                 year=(ye3<<4)+ ye4;
                 write_ds1307(6,year);
                 delay_us(8);
                 }
        }
        void hienthi()
        {
           for(i=1;i<30;i++)
           {
              portb=maled[gd];secd=0;delay_us(100);secd=1;
              portb=maled[gc];secc=0;delay_us(100);secc=1;
              portb=maled[pd];mind=0;delay_us(100);mind=1;
              portb=maled[pc];minc=0;delay_us(100);minc=1;
              portb=maled[gid];hourd=0;delay_us(100);hourd=1;
              portb=maled[gic];hourc=0;delay_us(100);hourc=1;
              portb=maled[dad];dated=0;delay_us(100);dated=1;
              portb=maled[dac];datec=0;delay_us(100);datec=1;
              portb=maled[mod];monthd=0;delay_us(100);monthd=1;
              portb=maled[moc];monthc=0;delay_us(100);monthc=1;
              portb=maled[ye3];y3=0;delay_us(100);y3=1;
              portb=maled[ye4];y4=0;delay_us(100);y4=1;
              portb=0xc0;y2=0;delay_us(100);y2=1;
              portb=0xa4;y1=0;delay_us(100);y1=1;
           }
        }
        |

        Comment


        • #5
          mình cũng đang gặp phải vấn đề như loveboom3012. các bạn giúp đỡ cái! thank

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X