Thông báo

Collapse
No announcement yet.

HƯỚNG DẪN LẬP TRÌNH KEIL C CHO 8051-[Chỉ dành post bài hướng dẫn]

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

  • Nguyên văn bởi vohieu Xem bài viết
    Ban oi co the send cho minh 1 so bai tap ve C cho 89C51 ko? Cac bai co ban ve Led, Led 1 doan, phim nhan.cam on ban rat nhieu,minh thich mon nay lam nhung moi hoc nen chua biet nhieu
    Bạn nên viết có dấu, nếu không, bài viết của bạn có thể bị xóa (bởi VNarmy) đấy!
    Vào đây cô bé, đã chỉ thế rồi mà còn không chịu tìm nữa.
    http://dientuvietnam.net/forums/showthread.php?t=1195
    Không TÔI là kẻ phàm phu
    Cái TÔI quá lớn làm ngu muội mình!
    - 0983.886.113

    Comment


    • Cám ơn a nhìu nghe.Có gì em ko hiểu sẽ hỏi a nhé

      Comment


      • các sư huynh cho em hỏi lỗi này là lỗi gì mà em hay gặp:
        *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
        SYMBOL : ?C_START
        MODULE : STARTUP.obj (?C_STARTUP)

        khi có cái warning này thi kiel C ko dịch!!
        thanks!!

        Comment


        • Nguyên văn bởi ngohaibac Xem bài viết
          Này đề nghị các bạn không spam bài ở đây nha.

          Tôi lần lượt upload lên các file cần thiết và cảm thấy hay cho các bạn. các chương trình, các file,.. nằm trong đĩa Development Tools của bọn www.keil.com mới cho tôi .

          Đầu tiên là KUvision 3.0 : bản dùng thử :
          http://luckytoki.com/haibac/download...51v801.exe.rar (25.1 MB)
          (khi down về sửa lại đuôi .exe.rar thành .exe )

          Sau đây là các TUT (các tut này dạng như video nó có cả tiếng nói, hướng dẫn cụ thể rất sinh động)

          1/ Tutorial của bọn nó hướng dẫn sử dụng Keil C để viết chương trình:

          http://luckytoki.com/haibac/download...rial/uv2.exe.c
          (32.2 MB)
          (đổi đuôi .exe.c thành .exe và chạy bình thường)

          2/ Hướng dẫn cách debug

          http://luckytoki.com/haibac/download...al/debug.exe.c
          (34.6 MB)
          (đổi đuôi .exe.c thành .exe và chạy bình thường)
          3/ Hướng dẫn cách giả lập:

          http://luckytoki.com/haibac/download...simulate.exe.c)
          (28.7MB)
          (đổi đuôi .exe.c thành .exe và chạy bình thường)

          4/ Hướng dẫn bằng CHM của bọn nó có code minh họa rất hay. Bọn nó giới thiệu tỉ mỉ lắm trong này này:

          http://luckytoki.com/haibac/download...orial/GS51.chm

          Tí viết tiếp. Măm cơm cái đã. Các bạn chú ý không spam bài ở đây nha.
          bác Hải Bắc ơi! Em không download được những file mà bác đã upload địa chỉ lên.Bác làm ơn chỉ giúp em cách download nó về với ạ.cảm ơn bác nhiều nhiều. em là thành viên mới.cũng chỉ mới tập tọe với C nên em rất mong nhận được sự hổ trợ của bác và anh em trong ngành. mong mọi người giúp đỡ em với.

          Comment


          • Ai hộ tôi cái nỗi này cái!
            void SetupTimer(void)
            {TMOD = 0X11;
            //TMOD = (TMOD & 0xf1) | 0x01;
            EA = 1; //cho bat ta ca cac ngat
            PT0=1;
            TF0 = 0; //co bao tran dung cho time 0
            TF1 =0;
            ET0 = 1; //cho phep ngat cua time 0
            ET1 =1;
            TR0 = 1; //cho phep time 0 hoat dong
            TR1 = 1;
            }
            void T0Isr(void) interrupt 1
            {
            Timer0();
            }
            void Timer0(void)
            {
            TR0=0;
            TH0 = 251;
            TL0 = 0;
            testkey = KeyCheck();
            TR0=1;
            }
            void T1Isr(void) interrupt 3
            {
            Timer1();
            }
            void Timer1(void)
            { bit c;
            TR1=0;
            TH1=0;
            TL1=0;
            if(et0<1)
            et0++;
            else
            {
            c=TestSaveTime();
            et0=0;
            }
            if(c==1)
            DisplaySaveTime();
            TR1=1;
            Printf("Neu co ham nay thi co loi");//???????????????Làm sao đây chỉ dùm tôi cái nỗi do thằng này tạo ra ở dưới với!
            }



            *** WARNING L15: MULTIPLE CALL TO SEGMENT
            SEGMENT: ?PR?_PRINTF?MAIN_DONG_DO
            CALLER1: ?PR?T1ISR?MAIN_DONG_DO
            CALLER2: ?C_C51STARTUP
            Program Size: data=70.3 xdata=0 code=5829
            creating hex file from "Dong_Ho"...
            "Dong_Ho" - 0 Error(s), 1 Warning(s).

            Comment


            • cái này nó hổng có lỗi gi cả. nó chỉ có 1 cảnh báo co bác thui. mà muốn bít là do gi` ti bác phải up hết code lên mới coi được. Nhưng mà về cơ bản cầiny vẫn mô phỏng và chạy được phình phường^^

              Comment


              • chào các bác
                các bác ơi có ai có tập lệnh viết c cho 8051 ko? cho em voi vì từ trước giờ em chỉ viết bằng ngôn ngư ams ko ah mà thấy nó khó hiểu quá chỉ mình viết là mình hiểu thôi còn khi nhìn vào của người khác là phải mất một thời gjian khá dài để tìm hiểu từng lệnh.
                nếu bác nào có thì xin send cho em với nhé địa chỉ của em là:trondoiyeuem_512_c4@yaaho.com.cảm ơn các bác trước nhé.

                Comment


                • ah em quên mất em dang dùng chương trình keil c mà loai hoay mãi van chưa biết tập lện nên chuă tìm được j cả. mong các bác chia sẻ đẻ hè này ghi vọng sẽ có cái gì dó mới hơn một tí.

                  Comment


                  • Nguyên văn bởi thanhthuong Xem bài viết
                    ah em quên mất em dang dùng chương trình keil c mà loai hoay mãi van chưa biết tập lện nên chuă tìm được j cả. mong các bác chia sẻ đẻ hè này ghi vọng sẽ có cái gì dó mới hơn một tí.
                    http://dientuvietnam.net/forums/showthread.php?t=1195
                    vào đây , theo dõi mấy bài này , u sẽ tìm đc 1 vài khai báo dùng C cho VDK , còn lại là giống như viết C vậy , u học lập trình C rùi mà !

                    Comment


                    • cái này nó hổng có lỗi gi cả. nó chỉ có 1 cảnh báo co bác thui. mà muốn bít là do gi` ti bác phải up hết code lên mới coi được. Nhưng mà về cơ bản cầiny vẫn mô phỏng và chạy được phình phường^^
                      Cảm ơn bạn "anhphong" nhiều chương trình thì mình mô phỏng chạy thử vẫn bình thường,
                      nhưng mình muốn biết tại sao lại có cảnh báo đó thôi! Còn chương trình thì mình làm theo từng module nên chắc khó mà up lên được mình chỉ có thể up hàm main lên bạn xem dùm nếu có gì ko hay bạn cho ý kiến nhé!
                      Đây là đoạn code :
                      Code:
                      /*********************************************************************
                      Chuong trình dong ho dung DS1307: hien thi bang LCD
                      dung 24c04 de luu thoi gian hen gio va 24c64 de luu loi nhan khi hen gio!
                      chuong trinh co the hen duoc 64 gio! Voi nhieu lua chon khac nhau!
                      
                      
                      					chuong trinh dang lam chua hoan chinh han
                      ****************************************************************************/
                      #include <REGX51.H>
                      #include "keypad.H"
                      #include "I2C.H"
                      #include "LCDasm.H"
                      #include "Main_dh.h"
                      #include "DS1307.H"
                      #include "ER24C04.H"
                      #include "Delay.H"
                      #include "hengio.h"
                      /*=========================MAIN================================================*/
                      main()
                      {	 char key=0,m=0;
                      Delay(10);
                      SetupLCD();
                      GoHome();
                      SetupTimer();
                      //ClearER24C04();
                      //SetupTimer1();
                      while(1)
                      {
                      clrscr();
                      key=0;
                      while(KeyCheck()==exit);
                      while(key != exit)
                      {
                      clrscr();
                      if((key != back));
                      {
                      PrintfFull("1:Setup Date =>","2:Display Date");
                      key = InputKey();
                      }
                      if(key == next)
                      {clrscr();
                      PrintfFull("3:Write Num =>","4:Note Pad");
                      key = InputKey();
                      }
                      switch(key)
                      {
                      case '1': 
                      		SetupDate();
                      		break;
                      case '2':
                      		DisplayDate();
                      		InputKey();
                      		break;
                      case '3':  clrscr();
                      		WriteChuoi(0);
                      		InputKey();
                      		 break;
                      case '4':
                      		NotePad();
                      		break;
                      case '5': clrscr();
                      SaveTimeMin();
                      		 GetTimeMin();
                      		 GoToXY(0,0);
                      		 WriteHex(t_control);
                      		 WriteHex(t_hour);
                      		 WriteHex(t_min);
                      		 WriteHex(t_sec);
                      		 WriteHex(t_day);
                      		 WriteHex(t_date);
                      		 WriteHex(t_month);
                      		 WriteHex(t_year);
                      		 InputKey();
                      		break;
                      case '6':	clrscr();
                      			WriteER24C04(10,'T');
                      			m=ReadER24C04(3);
                      			WriteHex(m);
                      			InputKey();
                      		break;
                      case '7':
                      		Start();
                      		break;
                      case '8':clrscr();
                      		HenGio();
                      		SaveTimeMin();
                      		//InputKey();
                      		break;
                      case '9':
                      		 clrscr();
                      		 ReadChuoi(0);
                      		 InputKey();
                      		break;
                      default:
                      		break;
                      }
                      }
                      } 
                      }
                      /*================================================================================================
                      cac ham nhap xuat van ban
                      ==================================================================================================*/
                      void WriteChuoi(unsigned int addr)
                      {char i=0,tam;
                      do
                      {
                      tam=chuoi0[i];
                      WriteER24C04(addr+i,tam);
                      i++;
                      }
                      while(tam!='\0');
                      }
                      char* ReadChuoi(unsigned int addr)
                      {char *tam,tam1;
                      unsigned int i;
                      tam1=ReadER24C04(addr);
                      tam[0]=tam1;
                      WriteChar(tam1);
                      for(i=1;tam1!='\0';i++)
                      {
                      tam1=ReadER24C04(addr+i);
                      tam[i]=tam1;
                      WriteChar(tam1);
                      }
                      Delayms(1000);
                      return tam;
                      }
                      void NotePad(void)					//Cuong trinh soan thao van ban
                      {
                      char char0,a=0,b=0,tam;
                      bit carry=1;
                      unsigned int i,n=0,m=0,kt=0,dong=0,contro;
                      clrscr();
                      OnCursor_1();
                      while(1)
                      {
                      	char0 = InputKey();
                      if(char0==back)
                      {   if((n>0))
                      	{
                      	n--;contro--;
                      	if(kt>0)
                      	DisplayShift(left);
                      	}
                       	else if(dong==1)
                      	{ 
                      	GoToXY(dong,0);
                      	m=0;
                      	}
                      }
                      else if(char0==next)
                      {
                      	if((n==15)) 
                      	{
                      	GoToXY(1,0);
                      	n++;
                      	}
                      	else if(n<32) 
                      	{
                      	n++;
                      	DisplayShift(right);
                      	}
                      	else
                      	{
                      	n=0;
                      	for(n=0;chuoi0[n]!='\0';n++)
                      //	chuoi0[m]=chuoi1[m];
                      	n=0;
                      	}
                      }
                      else if((char0==up))
                      {
                      	if((m>0)&&(kt>15))
                      	{
                      	DisplayShift(all_right);
                      	m--;
                      	}
                      	}						
                      else if((char0==down))
                      {
                      	if((m<15)&&(kt>15))
                      	{
                      	DisplayShift(all_left);
                      	m++;
                      	}
                      }
                      else if(char0==enter)
                      MenuChar();
                      else if(char0==exit)
                      {OffCursor();in=kt;
                      	for(i=0;i<n;i++)
                      	{
                      	if(chuoi0[i]=='\0')
                      	chuoi0[i]=' ';
                      	}
                      	clrscr();
                      	Printf("Exit!!!");
                      	Delay(60000);
                      	return;
                      }
                      else if(char0=='0')
                      {
                      WriteChar(char0);
                      chuoi0[n]='0';
                      n++;
                      }
                      else
                      {	 a=0;b=0;carry=1;
                      	for(i=0;i<10000;i++)
                      	{
                      		if((a==0) || (a==char0))
                      		{
                      			a=KeyCheck();
                      			if(a == char0)
                      			{ 
                      				while(KeyCheck() != 0);
                      					b+=1;
                      						if(b==4) b=0;
                      					i=0;
                      					carry=1;
                      			}
                      		if((b==1)&&(carry==1))
                      		 {	 tam=3*char0-82+chuhoa;
                      			WriteChar(tam);
                      			DisplayShift(left);
                      			carry=0;
                      		 }
                      		else if((b==2)&&(carry==1))
                      		{	 tam=3*char0-81+chuhoa;
                      			WriteChar(tam);
                      			DisplayShift(left);
                      			carry=0;
                      		}
                      		else if((b==3)&&(carry==1))
                      		{	tam=3*char0-80+chuhoa;
                      			WriteChar(tam);
                      			DisplayShift(left);
                      			carry=0;
                      		}
                      		else if((b==0)&&(carry==1))
                      		{	 tam=char0;
                      			WriteChar(char0);
                      			DisplayShift(left);
                      			carry=0;		
                      		} 
                      		}
                      		else break;
                      	}
                      	chuoi0[n]=tam;
                      	n++;
                      	contro++;
                      	kt++;
                      	if (n>15)
                      	{
                      	DisplayShift(all_left);
                      	m++;
                      	DisplayShift(right);
                      	}
                      	else if(n>=0) DisplayShift(right);
                      	else {DisplayShift(all_right);m--;}
                      }
                      }
                      }
                      /*void TextNum(void)		//chuong trinh danh so choi choi
                      {char key;
                      clrscr();
                      OnCursor();
                      while(1)
                      {
                      key = InputKey();
                      if(key == back)
                      DisplayShift(left);
                      else if(key== next)
                      DisplayShift(right);
                      else if(key==up)
                      GoToXY(0,0);
                      else if(key==down)
                      GoToXY(1,0);
                      else if(key==exit)
                      {		OffCursor();
                      		clrscr();
                      		Printf("Exit!!!");
                      		Delayms(1000);
                      		return;
                      }
                      else if(key != exit)
                      		WriteChar(key);
                      }
                      }		  */
                      /*===============================================================================================
                      Cac ham Menu
                      
                      =================================================================================================*/
                      void MenuChar(void)
                      {	char key=0;
                      clrscr();
                      OffCursor();
                      clrscr();
                      	if((key != back));
                      	{  clrscr();
                      	PrintfFull("1:Xoa Het =>","2:Luu Man Hinh");
                      	key = InputKey();
                      	}
                      	if(key == next)
                      	{clrscr();
                      	PrintfFull("3:Chen Ki Tu =>","4:KT Hoa->Thuong");
                      	key = InputKey();
                      	}
                      	switch(key)
                      {
                      case '1': 
                      		clrscr();
                      		break;
                      case '2':
                      		break;
                      case '3':
                      		break;
                      case '4':
                      case '5':
                      	if(carry_chuhoa==0)
                      	{
                      	carry_chuhoa=1;
                      	chuhoa=32;
                      	}
                      	else
                      	{
                      	carry_chuhoa=0;
                      	chuhoa=0;
                      	}
                      	break;
                      default:
                      		break;
                      }
                      }
                      void PrintfFull(char *st0,char *st1)
                      {clrscr();
                      GoToXY(0,0);
                      Printf(st0);
                      GoToXY(1,0);
                      Printf(st1);
                      }
                      
                      /*================CAC HAM HEN GIO================================================================*/
                      void SetSaveTime(char addr_time)   //dat thoi gian thu n
                      { char addr;
                      addr=addr_time*8;
                      WriteER24C04(addr,t_control);
                      WriteER24C04(addr+1,t_hour);
                      WriteER24C04(addr+2,t_min);
                      WriteER24C04(addr+3,t_sec);
                      WriteER24C04(addr+4,t_date);
                      WriteER24C04(addr+5,t_month);
                      WriteER24C04(addr+6,t_year);
                      WriteER24C04(addr+7,t_day);
                      }
                      void GetSaveTime(char addr_time)   //Lay thoi gian thu n
                      {  char addr;
                      addr=addr_time*8;
                      t_control=ReadER24C04(addr);
                      t_hour=ReadER24C04(addr+1);
                      t_min=ReadER24C04(addr+2);
                      t_sec=ReadER24C04(addr+3);
                      t_date=ReadER24C04(addr+4);
                      t_month=ReadER24C04(addr+5);
                      t_year=ReadER24C04(addr+6);
                      t_day=ReadER24C04(addr+7);
                      }
                      /*						   
                      Tim kiem thoi gian hen gio gan hien tai nhat va tra ve
                      vi tri cua gio hen do
                      */
                      char FindTimeMin(void)
                      {char tam_hour,tam_min,tam_date,tam_month,tam_year,tam_sec,i,addr_time_min=0,t_day=0;
                      UpdateTime();
                      tam_hour=hour;
                      tam_min=min;
                      tam_sec=sec;
                      tam_date=date;
                      tam_month=month;
                      tam_year=year;
                      for(i=0;i<64;i++)
                      {GetSaveTime(i); 
                         	if((t_control && 0x01)&&((t_control & 0x0f)!=0x0f))
                      	   if((tam_year>=t_year)||(t_year==100))
                      		  if((tam_month>=t_month)||(t_month==100))
                      			if((tam_date>=t_date)||(t_date==100))
                      			  if((tam_hour>=t_hour)||(t_hour==100))
                      				if((tam_min>=t_min)||(t_min==100))
                      				 if(tam_sec>=t_sec)
                      				  if(Add_Day(t_day)==day)	   
                      					  {	 addr_time_min =i;
                      						tam_hour=t_hour;
                      						tam_min=t_min;
                      						tam_sec=t_sec;
                      						tam_date=t_date;
                      						tam_month=t_month;
                      						tam_year=t_year;
                      					 }	 
                      }
                      return addr_time_min;
                      }
                      char Add_Day(unsigned char t_day)
                      {	 char tam;
                      if(t_day && 1)
                       			tam=1;
                      else if(t_day && 2)
                       			tam=2;
                      else if(t_day && 4)
                       			tam=3;
                      else if(t_day && 8)
                       			tam=4;
                      else if(t_day && 16)
                       			tam=5;
                      else if(t_day && 32)
                       			tam=6;
                      else if(t_day && 64)
                       			tam=7;
                      else 
                       			tam=day;
                      return tam;
                      }
                      void SaveTimeMin(void)
                      {char addr_tmin;
                      addr_tmin=FindTimeMin();
                      GetSaveTime(addr_tmin);
                      SetTime(0x08,addr_tmin);
                      }
                      void GetTimeMin(void) //lay lai thoi gian hen gio gan day nhat trong truong hop mat dien
                      {char addr_tmin;
                      addr_tmin=GetTime(0x08);
                      GetSaveTime(addr_tmin);
                      }
                      bit TestSaveTime(void)
                      { UpdateTime();
                       if((t_year==year)||(t_year==100))
                        if((t_month==month)||(t_month==100))
                         if((t_date==date)||(t_day==100))
                          if((t_hour==hour)||(t_hour==100))
                           if((t_min==min)||(t_min==100))
                      	  if(t_sec==sec)
                      	 {
                      	 return 1;
                      	 }
                      return 0;
                      }
                      void DisplaySaveTime(void)
                      {
                      while(testkey!=exit)
                      { GoToXY(0,0);
                      Printf("Reng Reng");
                      }
                      }				   
                      void HenGio(void)
                      {
                      char tam;
                      clrscr();
                      OnCursor();
                      GoToXY(0,4);
                      Printf("Gio/Phut");
                      GoToXY(1,0);
                      Printf("Time:");
                      GoToXY(1,8);
                      WriteChar(':');
                      GoToXY(1,11);
                      WriteChar(':');
                      GoToXY(0,0);
                      Printf("Hour Maximum =23");tam=TestKeyIn(23,6);
                      if(tam!=exit)
                      {  	t_hour=tam;GoToXY(0,0); Printf("Min Maximum =59 ");tam=TestKeyIn(59,9);
                         if(tam!=exit)
                      	   { 	
                      	   t_min=tam;GoToXY(0,0);Printf("Sec Maximum =59 "); tam=TestKeyIn(59,12);
                      	   	 if(tam!=exit)
                      		 {
                      		 	t_sec=tam;
                      		 }
                      	   }
                      }
                      clrscr();
                      Printf(" Ngay-Thang-Nam ");
                      GoToXY(1,0);
                      Printf("Date:");
                      GoToXY(1,8);
                      WriteChar('/');
                      GoToXY(1,11);
                      WriteChar('/');
                      GoToXY(0,0);
                      Printf("Date Maximun =31");	tam=TestKeyIn(31,6);
                      if(tam!=exit)
                      {  	t_date=tam;GoToXY(0,0); Printf("Month Maximum=31");tam=TestKeyIn(31,9);
                         if(tam!=exit)
                      	   { 	t_month=tam;GoToXY(0,0);Printf("Year Maximum =99");GoToXY(1,12);WriteNum(20); tam=TestKeyIn(99,14);
                      	   	 if(tam!=exit)
                      	   		{
                      	   		t_year=tam;clrscr();GoToXY(0,0);Printf("Day Maximum =7  ");GoToXY(1,0);Printf("Date:");tam=TestKeyIn(8,7);
                      		 	if(tam!=exit)
                      			day=tam;
                      	   		}
                      		}
                      }
                      clrscr();
                      GoToXY(0,0);
                      Printf("Bat=1 / Tat=0");
                      tam=InputKey();
                      if(tam =='1')
                      t_control=1;
                      else if(tam==0) 
                      {
                      t_control = 0;		
                      }
                      t_min=100;
                      SetSaveTime(0);
                      OffCursor();
                      }
                      /*==================================================================================================
                      Cac ham cai dat ngay gio
                      ======================================================================================================*/ 
                      char TestKeyIn(char max, char y)
                      {  char a,b;
                      	bit carryNTB=0;
                      do 
                      {
                      GoToXY(1,y);
                      a=InputKey();
                      while(!(('0'<=a)&&(a<='9')||(a==exit)))
                      {
                      a=InputKey();
                      }
                      if(a!=exit)
                      WriteChar(a);
                      else return exit;
                      b=InputKey();
                      while(!(('0'<=b)&&(b<='9')||(b==exit)))
                      {
                      b=InputKey();
                      }
                      if(b!=exit)
                      WriteChar(b);
                      else return exit;
                      a-=48;
                      b-=48;
                      }
                      while(KeyMax((a*10)+b,max));
                      return ((a<<4) | b);
                      }
                      bit KeyMax(char NumIn,char max)
                      {
                      if(NumIn>max)
                      {
                      GoToXY(0,0);
                      Printf("ERROR!!!  Max=");
                      WriteNum(max);
                      return 1;
                      }
                      else
                      return 0;
                      }
                      void SetupDate(void)
                      {  char tam;
                      clrscr();
                      OnCursor();
                      Printf("Cai Dat Gio");
                      GoToXY(1,0);
                      Printf("Time:");
                      GoToXY(1,8);
                      WriteChar(':');
                      GoToXY(1,11);
                      WriteChar(':');
                      GoToXY(0,0);
                      Printf("Hour Maximum =23");tam=TestKeyIn(23,6);
                      if(tam!=exit)
                      {  	hour=tam;GoToXY(0,0); Printf("Min Maximum =59 ");tam=TestKeyIn(59,9);
                         if(tam!=exit)
                      	   { 	min=tam;GoToXY(0,0);Printf("Sec Maximum =59 "); tam=TestKeyIn(59,12);
                      	   	 if(tam!=exit)
                      		 {
                      		 	sec=tam;
                      		 }
                      	   }
                      }
                      clrscr();
                      Printf("Cai Dat Ngay");
                      GoToXY(1,0);
                      Printf("Date:");
                      GoToXY(1,8);
                      WriteChar('/');
                      GoToXY(1,11);
                      WriteChar('/');
                      GoToXY(0,0);
                      Printf("Date Maximun =31");	tam=TestKeyIn(31,6);
                      if(tam!=exit)
                      {  	date=tam;GoToXY(0,0); Printf("Month Maximum=31");tam=TestKeyIn(31,9);
                         if(tam!=exit)
                      	   { 	month=tam;GoToXY(0,0);Printf("Year Maximum =99");GoToXY(1,12);WriteNum(20); tam=TestKeyIn(99,14);
                      	   	 if(tam!=exit)
                      		 {year=tam;clrscr();GoToXY(0,0);Printf("Day Maximum =7  ");GoToXY(1,0);Printf("Date:");tam=TestKeyIn(7,7);}
                      		 	if(tam!=exit)
                      			day=tam;
                      	   }
                      }
                      SetupAllTime();
                      OffCursor();
                      }
                      void SetupAllTime(void)
                      {
                      I2c_Start();
                      I2c_Write(0xD0);
                      I2c_Write(0x00); 
                      I2c_Write(sec);
                      I2c_Write(min);
                      I2c_Write(hour); 
                      I2c_Write(day);
                      I2c_Write(date);
                      I2c_Write(month);
                      I2c_Write(year);
                      I2c_Stop();
                      }
                      void UpdateTime(void)
                      {
                      I2c_Start();
                      I2c_Write(0xD0);
                      I2c_Write(0x00); 
                      I2c_Stop();
                      I2c_Start();
                      I2c_Write(0xD1);
                      sec = I2c_Read(1);
                      min = I2c_Read(1);
                      hour = I2c_Read(1); 	//I2c_Read(1) so 1 la co ACK 
                      day = I2c_Read(1);
                      date = I2c_Read(1);
                      month = I2c_Read(1);
                      year = I2c_Read(0);
                      I2c_Stop();
                      }
                      char* ThuTrongTuan(void)
                      {	   
                      switch(day)
                      {
                      case 1: return "Sun";
                      case 2: return "Mon";
                      case 3: return "Tue";
                      case 4: return "Web";
                      case 5: return "Thu";
                      case 6: return "Fri";
                      case 7: return "Sat";
                      default:
                      		return "E!!";	
                      }
                      }	 
                      void DisplayDate(void)
                      {  char *tam,tam1;
                      clrscr();
                      OffCursor();	
                      GoToXY(0,0);
                      Printf("T:");
                      GoToXY(0,4);
                      WriteChar(':');
                      GoToXY(0,7);
                      WriteChar(':');
                      GoToXY(1,0);
                      Printf("D:");
                      GoToXY(1,4);
                      WriteChar('/');
                      GoToXY(1,7);
                      WriteChar('/');
                      WriteNum(20);
                      while(testkey!=exit)
                      {
                      UpdateTime();
                      if(testkey != up)
                      {
                      if(hour<=64)
                      {
                      GoToXY(0,2);
                      WriteHex(hour);
                      GoToXY(0,11);
                      WriteChar(' ');
                      }
                      else 
                      {
                      	if((hour-64)>=32)
                      	{
                      	tam1=hour-96;
                      	GoToXY(0,11);
                      	WriteChar('P');
                      	}
                      	else 
                      	{
                      	tam1=hour-64;
                      	GoToXY(0,11);
                      	WriteChar('A');
                      	}
                      GoToXY(0,2);
                      WriteHex(tam1);
                      }		
                      GoToXY(0,5);
                      WriteHex(min);
                      GoToXY(0,8);
                      WriteHex(sec);
                      GoToXY(0,13);
                      WriteNum(99);
                      WriteChar('C');
                      GoToXY(1,2);
                      WriteHex(date);
                      GoToXY(1,5);
                      WriteHex(month);
                      GoToXY(1,10);
                      WriteHex(year);
                      GoToXY(1,13);
                      tam=ThuTrongTuan();
                      Printf(tam);
                      }
                      else 
                      {
                      while(KeyCheck())	 //neu phim chua duoc nha thi thuc hen
                      {
                      	if(hour<=64)	
                      	{	tam1=BCDToNum(hour);
                      		if(tam1>12)
                      		{	tam1-=12;
                      			tam1=NumToBCD(tam1)+96;
                      		}
                      		else 
                      		{	if(hour!=0)
                      			tam1=hour+64;
                      			else
                      			tam1=0x52;//=12+64
                      		}
                      	}
                      	else
                      	{ 
                      	if((hour-64)>=32)
                      		{
                      		 tam1=BCDToNum(hour-96);
                      		tam1=NumToBCD(tam1+12);
                      		}
                      	 else tam1=hour-64;
                      	}
                      	SetTime(hour_addr,tam1);
                      }
                      }
                      }	
                      }
                      /*=============================================================================================
                      Cac ham chuyen doi
                      ===========================================================================================================*/
                      unsigned char BCDToNum(unsigned char BCD)
                      {unsigned char tam1,tam2;
                      tam1=BCD&0x0f;
                      tam2=(BCD&0xf0)>>4;
                      tam1=(tam2*10)+tam1;
                      return tam1;
                      }
                      unsigned char NumToBCD(unsigned char num)
                      {unsigned char tam1,tam2;
                      tam1=num%10;
                      tam2=(((num-tam1)/10)<<4)|tam1;
                      return tam2;
                      }
                      /*===============================================================================================
                      Ham khoi dong
                      ====================================================================================================*/
                      void Start(void)
                      { GetTimeMin();
                      clrscr();
                      GoToXY(0,6);
                      Printf("HELLO!");
                      GoToXY(1,0);
                      Printf("--**^^THU^^**-- ");
                      Delayms(500);
                      GoToXY(0,0);
                      Printf("^^^^^^HAI^^^^^^^");
                      Delayms(500);
                      GoToXY(0,0);
                      Printf("N^^^^^HAI^^^^^^T");
                      GoToXY(0,0);
                      Delayms(500);
                      Printf("AN^^^^HAI^^^^^TA");
                      GoToXY(0,0);
                      Delayms(500);
                      Printf("HAN^^^HAI^^^^TAN");
                      Delayms(500);
                      GoToXY(0,0);
                      Printf("THAN^^HAI^^^TANG");
                      Delayms(500);
                      GoToXY(0,0);						
                      Printf(">THAN^HAI^^TANG!");
                      Delayms(500);
                      Printf(">>THANHAI^TANG!<");
                      Delayms(500);
                      GoToXY(0,0);
                      Printf(">>>THANAITANG!<<");
                      Delayms(500);
                      GoToXY(0,0);
                      Printf(">>>THAN TANG!<<<");
                      Delayms(500);
                      GoToXY(0,0);
                      Printf("                ");
                      Delayms(500);
                      GoToXY(0,0);
                      Printf(">>>THAN TANG!<<");
                      Printf("                ");
                      Delayms(500);
                      GoToXY(0,0);
                      Printf(">>>THAN TANG!<<");
                      Printf("                ");
                      Delayms(500);
                      GoToXY(0,0);
                      Printf(">>>THAN TANG!<<");
                      Delayms(1000);
                      GoToXY(1,0);
                      Printf("  Please Wait!  " );
                      Delayms(1000);
                      }		
                      /*==================================================================================================
                      Ham ngat time0
                      ===================================================================================================*/
                      void SetupTimer(void)
                      {TMOD = 0X11;
                      //TMOD = (TMOD & 0xf1) | 0x01;
                      EA = 1;	   //cho bat ta ca cac ngat
                      PT0=1;
                      TF0 = 0;   //co bao tran dung cho time 0
                      TF1 =0;
                      ET0 = 1;	 //cho phep ngat cua time 0
                      ET1 =1;
                      TR0 = 1;	 //cho phep time 0 hoat dong
                      TR1 = 1;
                      }
                      void T0Isr(void) interrupt 1
                      {
                      Timer0();
                      }
                      void Timer0(void)
                      {
                       TR0=0;
                      TH0 = 251;
                      TL0 = 0;
                      testkey = KeyCheck();
                      TR0=1;
                      }
                      void T1Isr(void) interrupt 3
                      {
                      Timer1();
                      }
                      void Timer1(void)
                      {	bit c;
                      TR1=0;
                      TH1=0;
                      TL1=0;
                      if(et0<1)
                      et0++;
                      else
                      {
                      c=TestSaveTime();
                      et0=0;
                      }
                      if(c==1)
                      DisplaySaveTime();
                      TR1=1;
                      }
                      
                      
                      <html>
                      <body>
                      <pre>
                      <h1>µVision3 Build Log</h1>
                      <h2>Project:</h2>
                      D:\Keil C\Cac Chuong Trinh\Dong HO\Dong_Ho.uv2
                      Project File Date:  05/01/2008
                      
                      <h2>Output:</h2>
                      Build target 'Target 1'
                      compiling MAIN_DONG_DO.c...
                      linking...
                      *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
                          SEGMENT: ?PR?CLEARER24C04?ER24C04
                      *** WARNING L15: MULTIPLE CALL TO SEGMENT
                          SEGMENT: ?PR?_PRINTF?MAIN_DONG_DO
                          CALLER1: ?PR?T1ISR?MAIN_DONG_DO
                          CALLER2: ?C_C51STARTUP
                      Program Size: data=70.3 xdata=0 code=5762
                      creating hex file from "Dong_Ho"...
                      "Dong_Ho" - 0 Error(s), 2 Warning(s).
                      Last edited by VNarmy; 17-05-2008, 12:09.

                      Comment


                      • Build target 'Target 1'
                        compiling MAIN_DONG_DO.c...
                        linking...
                        *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
                        SEGMENT: ?PR?CLEARER24C04?ER24C04
                        *** WARNING L15: MULTIPLE CALL TO SEGMENT
                        SEGMENT: ?PR?_PRINTF?MAIN_DONG_DO
                        CALLER1: ?PR?T1ISR?MAIN_DONG_DO
                        CALLER2: ?C_C51STARTUP
                        Program Size: data=70.3 xdata=0 code=5762
                        creating hex file from "Dong_Ho"...
                        "Dong_Ho" - 0 Error(s), 2 Warning(s).
                        Cảnh báo thứ 1 là có chương trình con hoặc hàm bạn khai báo nhưng không bao giờ dùng tới nó, nó báo để bạn có thể xóa nó đi để tiết kiệm dung lượng.

                        Cảnh báo thứ 2 là có nhiều lời gọi đến 1 hàm, tức là rong ngắt bạn cũng gọi chương trình này và trong 1 ctcon bình thường khác bạn cũng gọi nó, cái này gây ra hiện tượng reentrant trong Keil C, sẽ gây tràn stack hoặc làm chương trình chạy sai rất khó hiểu, ở đây chương trình biên dịch đã làm đúng công việc của mình là cảnh báo cho bạn biết. Nếu bạn chắc chắn không có lúc nào có 2 lời gọi đến cùng 1 CT đó thì không sao, có thể bỏ qua lời cảnh báo này.

                        Comment


                        • bác Ngô Hải Bắc ơi!
                          cảm ơn bác đã hướng dẫn bà con sử dụng Kiel C. Cái này em đang rất cần. nhưng đó là những việc sau khi đã hoàn tất việc cài đặt (vì sau khi cài đặt còn chỉnh sửa hay lựa chọn những cái gì đó mà em không rõ lắm).
                          bác có thể hướng dẫn thêm cho em việc: ngay sau khi cài đặt uVision3 thì làm thế nào để sử dụng nó?em cài đặt xong mà chẳng biết sử dụng thế nào cả.
                          em dùng cái này cho chipcon (CC1010) chứ không phải là cho 8051, nhưng cái CC1010 ấy cũng gần như 8051.
                          bác giúp em với nhé!em đang cần quá! (bác hướg dẫn được cho em cái dùng cho CC1010 thì em biết ơn bác rất nhiều)!

                          Comment


                          • mình sắp thi học hì rồi mà chưa biết nhiều về Kiel C.bác nào gởi cho em tài liệu với.gởi cho em wa mail nhp.dtvt@gmail.com hay mail oh_myloves2006@yahoo.com cũng được.cảm ơn mấy bác nhiều

                            Comment


                            • em có đọc lại topic này nhưng nhiều quá.load không hết được.mầy bác giúp em hen

                              Comment


                              • Bac Natra noi rat chinh xac va o day tui cung xin noi cu the hon ti thui
                                1. chương trình con bác đã khởi tạo mà không sử dụng là CLEARER24C04
                                2. chương trình mà bác đã gọi ở nhiều chương trình con là PRINTF ^^( tui hổng hiểu sao có cảnh báo này, bác thử #include stdio.h thêm trong chương trình trên thử)

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X