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 Sửa bộ nguồn DC 60V 45A
                                  bởi mèomướp
                                  Dạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
                                  hôm nay, 13:11
                                • tuyennhan
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi tuyennhan
                                  Sửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
                                  hôm nay, 09:25
                                • tuyennhan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi tuyennhan
                                  Đúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
                                  Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....
                                  hôm nay, 09:10
                                • Ng.Phuong.5
                                  Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
                                  bởi Ng.Phuong.5
                                  Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
                                  Mấy con...
                                  Hôm qua, 19:44
                                • viettinh
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi viettinh
                                  Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
                                  Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
                                  Hôm qua, 18:12
                                • nguyendinhvan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi nguyendinhvan
                                  Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
                                  Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
                                  Cách đơn giản...
                                  Hôm qua, 00:04
                                • mèomướp
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi mèomướp
                                  Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
                                  08-01-2025, 19:02
                                • tuyennhan
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi tuyennhan
                                  Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
                                  08-01-2025, 15:43
                                • tuyennhan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi tuyennhan
                                  Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
                                  08-01-2025, 15:28
                                • mèomướp
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi mèomướp
                                  Dạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
                                  08-01-2025, 11:44
                                Đang tải...
                                X