Thông báo

Collapse
No announcement yet.

Dành cho người mới tìm hiểu 8051

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

  • //tri hoan 'h' giờ:
    void delay_hour(unsigned char h)
    {
    unsigned int m;
    do{
    m=3600; //60x60
    do{delay_ms(1000);}
    while(--m);
    }
    while(--h);
    }

    void main(void)
    {
    P1=255;
    while(1)
    {
    P11=~P11;
    delay_hour(4);
    }
    }
    Last edited by zemen; 12-09-2008, 09:10.
    !e

    Comment


    • Nguyên văn bởi tallht Xem bài viết
      với keil C thì có bác nào biết rằng 1 lệnh nó thực hiện bao lâu ko?
      Cái này còn tùy vào dao động của mạch và từng câu lệnh chứ bạn. 1 lệnh đơn giản như P1=255; //1Tck nhưng lệnh P1=biến * 2; hay while(--biến){ ...}; thì sẽ tốn nhiều hơn, có khi cả chục Tck. Bạn đọc C51/help của KeilC thì nó có nói rõ hơn về mấy vòng lặp. Hoặc bạn viết 1 chương trình đơn giản, biên dịch (F7) và chạy mô phỏng (Ctrl-F5), rôi mở cửa sổ Disassembly. KielC sẽ cho bạn biết từng lệnh trong C sẽ tương ứng với bao nhiêu lệnh trong ASM.
      !e

      Comment


      • Nguyên văn bởi tranvannam59
        Các bạn vui lòng cho mình biết làm thế nào để tăng điện áp port ra của 89c52 (làm cho đèn led sáng dần và tắt dần ) từ 0.1v>0.2v>0.3v.......đến 5v và ngược lại, mỗi lần thay đổi tử 0,5v hoặc 0,1v cũng được theo chu kỳ và biên độ volt phải được thay đổi chính xác(nếu viết code bằng Asm thì phải viết như thế nào?).

        Cái này đã có chủ đề bàn đến rồi, bạn có thể dùng ch.năng 'Search' để tìm ra. Mình xin nói ngắn gọn nguyên lí: dùng PWM (d.chế độ rộng xung) để làm thay đổi dòng trung bình qua led (thực tế thì điện áp DC o thể nào có mức 0,1; 0,2;... 4,9V được vì ngõ ra vdk là dạng số mà, do đó ta chỉ có quy đổi tương đương áp tr.bình từ dòng tr.bình thôi)
        !e

        Comment


        • Nguyên văn bởi zemen Xem bài viết
          //tri hoan 'h' giờ:
          void delay_hour(unsigned char h)
          {
          unsigned int m;
          do{
          m=3600; //60x60
          do{delay_ms(1000);}
          while(--m); //đây là vòng lặp 1 giờ kô?
          }
          while(--h); //đây là vòng lặp n giờ kô?
          }

          void main(void)
          {
          P1=255; //chỗ này có phải là set P11 lên HIGH kô
          while(1)
          {
          P11=~P11;
          delay_hour(4);
          }
          }
          Bạn có thể mô tả lại cho tôi được rõ không.
          while(--m); //đây là vòng lặp 1 giờ kô?
          }
          while(--h); //đây là vòng lặp n giờ kô?
          }
          P1=255; //chỗ này có phải là set P11 lên HIGH kô
          delay_hour(4); //chỗ này là trễ 4 giờ à?
          }
          Tôi mới làm quen với C nên có thể những câu hỏi này rất buồn cười với các cao thủ, nhưng bỏ quá và hãy giúp tôi.
          Cảm ơn

          Comment


          • P1=255 chính là đưa các chân ở Port1 lên mức 1 đó bạn! (dạng hex là 0xff)
            con mấy chỗ bạn hỏi là đúng vậy đó!(hì hì chỉ thay bác zemen trả lời thôi nha)
            SỰ HỌC LÀ MÃI MÃI......!!!!

            Comment


            • còn một câu hỏi nữa. Hình như trong chương trình không có chương trình trễ 1 s chính xác nếu với thạnh anh 12MHz nhỉ

              Comment


              • /*
                Đã làm quen với 8051 rồi thì bạn có thể viết hàm trễ 1ms được mà. Sau đó x1000 lên là đc 1s
                V.dụ dưới đây là viết hàm delay_ms(x) với thạch anh 12MHz, sai số dương <5%, bạn có thể tham khảo thêm.
                */

                #define hfxtal 12000000
                #define hdelay0 (hfxtal/12000)
                #define hdelay2 (unsigned char)(hdelay0/256)
                #define hdelay1 (unsigned char)(hdelay0/(2*hdelay2))

                void delay_ms(unsigned int ms)
                {
                unsigned char delay1,delay2;
                lap:
                delay1=hdelay1;
                lap1:
                delay2=hdelay2;
                lap2:
                if(--delay2!=0) goto lap2;
                if(--delay1!=0) goto lap1;
                if(--ms) goto lap;
                }
                !e

                Comment


                • Nguyên văn bởi zemen Xem bài viết
                  /*
                  Đã làm quen với 8051 rồi thì bạn có thể viết hàm trễ 1ms được mà. Sau đó x1000 lên là đc 1s
                  V.dụ dưới đây là viết hàm delay_ms(x) với thạch anh 12MHz, sai số dương <5%, bạn có thể tham khảo thêm.
                  */

                  #define hfxtal 12000000
                  #define hdelay0 (hfxtal/12000)
                  #define hdelay2 (unsigned char)(hdelay0/256)
                  #define hdelay1 (unsigned char)(hdelay0/(2*hdelay2))

                  void delay_ms(unsigned int ms)
                  {
                  unsigned char delay1,delay2;
                  lap:
                  delay1=hdelay1;
                  lap1:
                  delay2=hdelay2;
                  lap2:
                  if(--delay2!=0) goto lap2;
                  if(--delay1!=0) goto lap1;
                  if(--ms) goto lap;
                  }
                  Cảm ơn bạn. Nhưng viết bằng C thì mình chưa rõ lắm

                  Comment


                  • bạn cần tìm hiểu về phương thức điều chế độ rộng xung
                    VDK xuất ra mức 1 thì bạn đo được gần 5v
                    mức 0 thì cũng là gần 0 v,như vậy nếu bạn muốn lấy ra điện áp 3,5v chẳng hạn thì phải làm sao! bạn không thể lấy mức 1 , cũng như mức 0.
                    phương án được đưa ra là , lấy 1 phần của mức 1 đó thôi
                    ví dụ là 50% của mức 1 sẽ là 0,5x5v=2.5,
                    tiếp : ví dụ mức 1 ( điện áp là gần 5 v) được "băm " thành 2 xung âm và dương
                    gọi T =T(âm)+T(dương)
                    thì điện áp trung bình được tính : U(tb)=(T(dương)/T)x5V
                    .....................khó diễn giải quá mong là giúp bạn được phần nào!
                    0945061338(vocam.h@gmail.com,lehanhdtk3@gmail.com)
                    ||
                    PROGRAMING(C,ASM),HARDWARE,LMD,RTC,GPRS,GPS....ALL OF VDK

                    Comment


                    • độ rộng xung của T(dương) sẽ quyết định đến mức áp trung bình
                      và khi tăng hoặc giảm T(dương) thì luôn phải đảm bảo T=T(am)+T(dương)
                      (để cho tần số xung không đổi đó mà)
                      0945061338(vocam.h@gmail.com,lehanhdtk3@gmail.com)
                      ||
                      PROGRAMING(C,ASM),HARDWARE,LMD,RTC,GPRS,GPS....ALL OF VDK

                      Comment


                      • bạn xem thử một chương trình :
                        INCLUDE 8051.mc
                        MAIN:

                        SETB P1.0 ' THIET LAP MUC CAO
                        MOV 30H,#5
                        ACALL DELAY ' GOI HAM DELAY VOI R1 = 5( R1MUC_CAO)
                        CLR P1.0 ' THIET LAP MUC THAP
                        MOV 30H,#2
                        ACALL DELAY ' GOI HAM DELAY VOI R1 = 2(R1MUC_THAP)
                        SJMP MAIN
                        DELAY:

                        MOV R1,30H
                        LOOP1:
                        MOV R3,#20
                        LOOP2:
                        MOV R4,#40
                        LOOP3:
                        DJNZ R4,LOOP3
                        DJNZ R3,LOOP2
                        DJNZ R1,LOOP1
                        RET
                        ' DE TAN SO KHONG THAY DOI KHI BAN THAY DOI T(AM) VAT(DUONG) THI
                        ' R1MUC_CAO+R1MUC_THAP= 1 HANG SO(CONST)
                        0945061338(vocam.h@gmail.com,lehanhdtk3@gmail.com)
                        ||
                        PROGRAMING(C,ASM),HARDWARE,LMD,RTC,GPRS,GPS....ALL OF VDK

                        Comment


                        • co anh em nao giup em voi
                          em cần làm đồ án môn học với đề tài này mà đang mắc quá chừng . Thanks nhiều nha
                          de tai la :"thiet ke he dieu hanh thoi gian dieu khien boi 5 led nhap nhay voi 5 tan so khac nhau"

                          Comment


                          • Mình có bài tập lớn là đo vận tốc hiển thị ra LCD
                            Mình chưa thể nào viết đựoc hàm nào có thể xuât một biến kiểu float ra màn màn hinh LCD
                            .: Lê Tiến Mạnh :.
                            Phone number : 0989 735 804
                            YM,Skype,mail : [leemanhj916]@gmail.com

                            Comment


                            • Có ai biết không?
                              .: Lê Tiến Mạnh :.
                              Phone number : 0989 735 804
                              YM,Skype,mail : [leemanhj916]@gmail.com

                              Comment


                              • Ở đây mình phải viết thêm hàm hiển thị số dạng long thôi

                                PHP Code:
                                void ghi_so(unsigned long number){
                                    
                                int j,m;
                                    
                                unsigned char d[20];
                                    for(
                                j=j<20 j++){
                                        
                                d[j] = number%10;
                                        
                                number /= 10;
                                        if(
                                number==0){
                                            
                                j;
                                            break;
                                        }
                                    }
                                    for(
                                j=j>=j--){
                                        if(
                                == 1)
                                            
                                ghi_kytu(',');
                                        
                                ghi_kytu(d[j]+0x30);
                                    }

                                Sau đó viết thêm dấu "," vào thôi
                                .: Lê Tiến Mạnh :.
                                Phone number : 0989 735 804
                                YM,Skype,mail : [leemanhj916]@gmail.com

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                • mèomướp
                                  Trả lời cho Công thức điện tử
                                  bởi mèomướp
                                  Dạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
                                  Hôm qua, 21:21
                                • mèomướp
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi mèomướp
                                  Dạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
                                  Hôm qua, 20:31
                                • yname11
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi yname11
                                  Ok , thanks bác đã chỉ...
                                  Hôm qua, 15:06
                                • nguyendinhvan
                                  Công thức điện tử
                                  bởi nguyendinhvan
                                  Sau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !

                                  Chập thì thay. Cháy thì tháo
                                  Làm thì láo. Báo thì hay
                                  May thì khoe. Rủi thì bỏ
                                  Thành tích nhỏ. Báo thành to
                                  Làm cho có. Báo chi li
                                  Sai cả li. Báo
                                  ...
                                  Hôm qua, 00:35
                                • yname11
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi yname11
                                  có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
                                  25-11-2024, 22:31
                                • mèomướp
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi mèomướp
                                  Dạ ý chú là màn oled ấy ạ. Cùng chuẩn lvds cùng độ phân giải thì cắm được ạ. Còn nó mà khác thì hơi khó vì oled các điểm ảnh nó tự phát sáng chứ ko dùng đèn nền như lcd. Cháu chỉ biết đến vậy thôi ạ. Chú muốn nghịch phải tự tìm hiểu kỹ trước khi mua thôi, khó mà ông thợ nào tư vấn vụ này...
                                  25-11-2024, 22:14
                                • bactho
                                  Trả lời cho Tự làm máy đo Cuộn cảm
                                  bởi bactho
                                  Hay đấy bạn ạ. Đây có thể hiểu là máy đo cuộn dây. Tiện đây xin cho hỏi bạn có hiểu rõ về máy nạp rôm pcb 45 của hãng thiên minh không giúp mình cách cài fw của nó với vì mình vừa được anh bạn cho nhưng lại không biết cài fw nên chưa dùng được. Nếu có thể thì bạn giúp mình với...
                                  25-11-2024, 21:48
                                • yname11
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi yname11
                                  màn của mình là LCD , giờ m muốn mua màn LED để thay thế (ko muốn dùng màn LCD nữa) , lên muốn hỏi xem có cáp chuyển đổi nào có thể cắm đc màn LED vào ko , tất nhiên phải có cùng số chân pin với màn cũ rồi . VD: màn cũ là lcd mỏng , 40 pin...
                                  25-11-2024, 21:43
                                • bactho
                                  Trả lời cho các bạn giúp mình về file HEX với!!!
                                  bởi bactho
                                  Bạn vào trang phuclanshop.com ,tìm đến góc kỹ thuật. Tác giả vương khánh hưng nói rất rõ về điều bạn tìm...
                                  25-11-2024, 21:21
                                • mèomướp
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi mèomướp
                                  Dạ màn hình lcd đều có thể lai cấy cho nhau được hết ạ. Các loại cáp, bo mạch chuyển đổi lvds rất nhìu, với dòng sony còn phải nhổ cả chip nhớ của main cũ đưa lên gỗ thì mới lắp sang máy khác đc, chưa kể các bệnh về màu... ngay cả...
                                  25-11-2024, 20:43
                                Đang tải...
                                X