Thông báo

Collapse
No announcement yet.

[Share-code] Mỗi ngày một bài tập về AT89S52

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

  • a gửi cả file lên cho e dk không

    Comment


    • Nguyên văn bởi hoanganh234 Xem bài viết
      a gửi cả file lên cho e dk không
      mình có cái này này. k nhớ tác giả nhé

      Code:
      #include <REGX51.H>
      unsigned char preloadTH=0xFF,preloadTL=0xFF;
      unsigned int pointer=0,ii=0,jj;
      sbit out=P2^0;
      //octa: 0
      //key : C C# D D# E F F# G G# A A# B 
      code float key_octa0[]={16.35,17.32,18.35,19.45,20.6,21.83,23.12,24.5,25.96,27.5,29.14,30.87};
      code unsigned int chuan=1000;
      code float crystal=11.0592;
      //music
      code unsigned char music[]=
      {
      "4d~,4d~,3g~,3a~,4d.,4d~,4g~,4a~,4b~,4a=,4g=,4d.,4 e~,3a~,4c~,3g~,3a~,4d~,4d ,4d=,4c=,3a~,4c~,3g~,3a~,4do"
      "4g~,4g~,4d~,3a~,4g.,4g~,4a~,4g~,4b=,4a=,4g~,4d.,4 g~,4e ,4e~,4d~,4c ,4d~,4d~,3a~,4d~,3b~,3a~,3go,4d ,4go"
      "4go,4a ,4b~,4a~,4F~,4g.,4d~,4g~,4a~,4a=,4b=,4a~,4g.,4d~,3 a ,3a ,3a~,4d ,4d~,4d ,3a=,3b=,3a~,3g.,4b=,4a="
      "4g~,4d~,4g~,4d~,3a.,4g~,4g ,4F~,4a~,5d.,4a=,4b=,4d ,3a ,4go,4d~,4d~,3g~,3a~,4do,4g~,4g~,4d~,3a~,4go,4g~"
      "4d~,4g~,4a~,4A ,4a~,5d~,4b~,4a~,4g~,4F~,4g ,4d ,4d ,4g~,4a~,4A ,4a~,5d~,4b~,4a~,4g~,4F~,4go,s"
      };
      void doitanso(float tanso)
      {
      unsigned int giatrinap;
      giatrinap=65536-(unsigned int)((1000000*crystal)/(24*tanso));
      preloadTL=(unsigned char)giatrinap;
      preloadTH=(unsigned char)(giatrinap>>8);	
      }
      void key(unsigned char octa,unsigned char k)
      {
      float tanso;
      switch (k)
      {
      case 'c' : tanso=key_octa0[0]; break;
      case 'C' : tanso=key_octa0[1]; break;
      case 'd' : tanso=key_octa0[2]; break;
      case 'D' : tanso=key_octa0[3]; break;
      case 'e' : tanso=key_octa0[4]; break;
      case 'f' : tanso=key_octa0[5]; break;
      case 'F' : tanso=key_octa0[6]; break;
      case 'g' : tanso=key_octa0[7]; break;
      case 'G' : tanso=key_octa0[8]; break;
      case 'a' : tanso=key_octa0[9]; break;
      case 'A' : tanso=key_octa0[10]; break;
      case 'b' : tanso=key_octa0[11]; break;
      }
      switch (octa)
      {
      case '1' : tanso*=2; break;	
      case '2' : tanso*=4; break;
      case '3' : tanso*=8; break;
      case '4' : tanso*=16; break;
      case '5' : tanso*=32; break;
      case '6' : tanso*=64; break;
      case '7' : tanso*=128; break;
      case '8' : tanso*=256; break;
      }
      doitanso(tanso);
      }
      unsigned int trave(unsigned int ms)
      {
      unsigned int a;
      a=preloadTH;
      a=a<<8|preloadTL;
      return (ms*crystal*1000)/12/(65536-a);
      }
      unsigned int tempo(unsigned char tem)
      {
      switch (tem)
      {
      case '=' : return trave(chuan); break;
      case '~' : return trave(chuan*2); break;
      case ' ' : return trave(chuan*4); break;
      case '.' : return trave(chuan*6); break;
      case 'o' : return trave(chuan*8);	break;
      }
      }
      void ngattimer_0(void) interrupt 1
      {
      out=~out;
      TL0=preloadTL;
      TH0=preloadTH;
      if(ii==0)
      {
      if(music[pointer]=='s')
      TR0=0;
      key(music[pointer],music[pointer+1]);
      jj=tempo(music[pointer+2]);
      }
      ii++;
      if(ii==jj)
      {
      ii=0;
      pointer+=4;
      }	
      }
      void main(void)
      {
      P0=P1=P2=P3=0;
      /*TMOD=17;
      TL0=0xff;
      TH0=0xff;
      ET0=1;
      EA=1;
      TR0=1;*/
      EA=0;
      TMOD=0x02;// 8 BIT AUTO RELOAD
      TL0=0xff;
      TH0=0xff;
      ET0=1;
      EA=1;
      TR0=1;
      while(1);
      }
      Nguyễn Huy Biên - 01649 802 694
      gmail :

      Comment


      • Nguyên văn bởi bienhou Xem bài viết
        mình có cái này này. k nhớ tác giả nhé
        a có hướng dẫn tạo tần số bài hát cho e với

        Comment


        • Nguyên văn bởi hoanganh234 Xem bài viết
          a có hướng dẫn tạo tần số bài hát cho e với
          bạn chịu khó serach có 1 topic trong luồng này bàn về vấn đề này rồi nhé
          Nguyễn Huy Biên - 01649 802 694
          gmail :

          Comment


          • Nguyên văn bởi bienhou Xem bài viết
            bạn chịu khó serach có 1 topic trong luồng này bàn về vấn đề này rồi nhé
            e tìm rồi nhưng chẳng hiểu làm thế nào để tạo ra code jinglebell như của chjpchjp1991 vậy

            Comment


            • rất cám ơn bạn đã up những bài hay thế này. Đối với mình, những bài như thế này giúp mình có thể hiểu và áp dụng ngày càng nhuần nhuyễn hơn từ kiến thức của C++ vào việc lập trình cho vi điều khiển. Từ đó phát triển thêm các dạng bài tập mà bạn đưa.
              Ngoài ra, bạn có thể gửi mình 1 số tài liệu giáo trình về lập trình C cho 8051 được không ? Mail mình là malphite1993@yahoo.com
              Cám ơn nhiều!!!

              Comment


              • hay quá đúng cái em đang cần
                PK ! $çéü Ä [Content_Types].xml ó (á ┤öMOâ@ å∩&■▓W █z0╞ö÷á⌡¿M¼±╝.C┘╚~dg√⌡∩ JK¬íÑZ╜É└2∩√╠
                3â╤Jù╤ <*kR╓Oz, #mª╠,e»╙╟°ûE ä╔Di
                ñl
                ╚F├╦ï┴tφ #¬6ÿ▓" w╟9╩ ┤└─:0tÆ[»Eá[?πN╚ 1 ~▌δ▌piM ΓPi░ßα r1/C4^╤πÜ─Cë,║»_¼╝R&£+ò üH
                Tổng thống + điện = Ăn mày + điện = die => Tổng thống = ăn mày

                Comment


                • ặc lỗi font rồi .viết tay vậy .
                  Đề: chân ngắt của vi điều khiển dc nối với 1 nút nhấn .mỗi khi nhấn tạo ra sự thay đổi trạng thái của vdk .(từ mức cao xuống mức thấp)
                  chân p2.0 dc nối vs 1 con led đơn
                  Yêu cầu :
                  khi nhấn nút (sử dụng ngắt int0) thì đèn sẽ sáng nhấp nháy 3 lần với chu kì là (1s sáng 1s tối)
                  Tổng thống + điện = Ăn mày + điện = die => Tổng thống = ăn mày

                  Comment


                  • và đây là code mình tự làm .
                    Click image for larger version

Name:	1.jpg
Views:	1
Size:	55.2 KB
ID:	1385231
                    mọi ng xem xong có thể làm cho em cái lưu đồ thuật toán dc ko ạ
                    Tổng thống + điện = Ăn mày + điện = die => Tổng thống = ăn mày

                    Comment


                    • có ai giúp em cái lưu đồ thuật toán bài này ko )
                      Tổng thống + điện = Ăn mày + điện = die => Tổng thống = ăn mày

                      Comment


                      • Nguyên văn bởi hoangthuanhd Xem bài viết
                        ặc lỗi font rồi .viết tay vậy .
                        Đề: chân ngắt của vi điều khiển dc nối với 1 nút nhấn .mỗi khi nhấn tạo ra sự thay đổi trạng thái của vdk .(từ mức cao xuống mức thấp)
                        chân p2.0 dc nối vs 1 con led đơn
                        Yêu cầu :
                        khi nhấn nút (sử dụng ngắt int0) thì đèn sẽ sáng nhấp nháy 3 lần với chu kì là (1s sáng 1s tối)
                        bạn nên tạo 1 nhãn chương trình con delay 1s, mỗi lần sáng tắt thì gọi, chươnng trình dành cho ngắt của bạn rắc rối quá

                        Comment


                        • bạn nào code hộ mình cái biển vẫy.mình làm hết rồi.làm mạch AT89S52 rồi.32 kênh.chắc code đơn giản.bạn nào code được mình gửi công

                          Comment


                          • cho mình hỏi lệnh sbit trong c ý nghĩa và mục đích là gì vậy? vì hồi đó giờ toàn dùng define hoặc dùng trực tiếp port luôn nên thấy cái sbit lạ lắm

                            Comment


                            • Nguyên văn bởi malphite1993 Xem bài viết
                              cho mình hỏi lệnh sbit trong c ý nghĩa và mục đích là gì vậy? vì hồi đó giờ toàn dùng define hoặc dùng trực tiếp port luôn nên thấy cái sbit lạ lắm
                              sbit khai báo địa chỉ của một bit đó bạn. Ví dụ: Port 0 địa chỉ của nó là 0x80. Thay vì phải set nguyên một Port 0 mỗi lần muốn điều khiển một pin thì bạn khai báo của địa chỉ của pin đó:
                              Code:
                              sbit P0_1 P0^2 //thường trong header của keilc dùng dạng này
                              hoặc
                              Code:
                              sbit P0_1 0x81 //địa chỉ cụ thể của bit trong special function registers

                              Comment


                              • cho mình hỏi chút xíu về cái 89s52 này, mình nạp qua isp nhưng khi ko cắm led + trở vào chân p0.1 thì ok. còn khi mà đề led + trở nối p0.1 là báo lỗi chip k nạp được. Mình dùng progisp.
                                ai biết về vụ này cho mình lời khuyên vs.
                                Chân reset mình nối 1 con 104 xuống đất luôn có ok không ?, vì nạp thấy nó vẫn chạy đều mà xem trên net thì thấy còn cần trở 10k nữa

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X