RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

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

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • hoanganh234
    Banned
    • Sep 2012
    • 21

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

    Comment

    • bienhou
      Thành viên tích cực
      • Dec 2011
      • 971

      #137
      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

      • hoanganh234
        Banned
        • Sep 2012
        • 21

        #138
        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

        • bienhou
          Thành viên tích cực
          • Dec 2011
          • 971

          #139
          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

          • hoanganh234
            Banned
            • Sep 2012
            • 21

            #140
            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

            • malphite1993
              Thành viên mới
              • Sep 2013
              • 4

              #141
              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

              • hoangthuanhd
                Thành viên tích cực
                • Jan 2012
                • 402

                #142
                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

                • hoangthuanhd
                  Thành viên tích cực
                  • Jan 2012
                  • 402

                  #143
                  ặ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

                  • hoangthuanhd
                    Thành viên tích cực
                    • Jan 2012
                    • 402

                    #144
                    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

                    • hoangthuanhd
                      Thành viên tích cực
                      • Jan 2012
                      • 402

                      #145
                      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

                      • giang1880
                        Thành viên mới
                        • May 2013
                        • 6

                        #146
                        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

                        • kaitoukid93
                          Thành viên chính thức
                          • Jun 2013
                          • 84

                          #147
                          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

                          • malphite1993
                            Thành viên mới
                            • Sep 2013
                            • 4

                            #148
                            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

                            • spam12345
                              Thành viên tích cực
                              • Jun 2013
                              • 162

                              #149
                              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

                              • silverddn9x
                                Thành viên mới
                                • Jun 2013
                                • 5

                                #150
                                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...