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

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • jackychan
    Thành viên tích cực
    • Mar 2008
    • 112

    #556
    Nếu muốn chính xác bạn thử tính lại xem chương trình thực hiện các lệnh gán và các lệnh so sánh trong vòng for hết bao nhiêu us rồi cộng tổng lại và tính ra xem cần nạp giá trị bao nhiêu vào x hoặc nạp giá trị nào để so sánh với time4

    Comment

    • yeubom1
      Thành viên mới
      • Sep 2008
      • 12

      #557
      cảm ơn bac Jackychan nhiều nha. em cũng muốn tính toán thời gian trể bằng vòng lặp theo cách của bác nhưng mà thực sự không có tài liệu nào về thời gian thực thi một lệnh ở trong Keil C, chẳng hạn như lệnh gán, lệnh so sánh .v.v. mỗi lệnh tốn bao nhiêu us. Nen không thể tính toán được. Các bác trên diễn đàn có tài liệu gì nói về cái đó không có thể cho em biết với

      Comment

      • Zz_Bi_zZ
        Thành viên tích cực
        • Nov 2007
        • 766

        #558
        Nguyên văn bởi yeubom1 Xem bài viết
        cảm ơn bac Jackychan nhiều nha. em cũng muốn tính toán thời gian trể bằng vòng lặp theo cách của bác nhưng mà thực sự không có tài liệu nào về thời gian thực thi một lệnh ở trong Keil C, chẳng hạn như lệnh gán, lệnh so sánh .v.v. mỗi lệnh tốn bao nhiêu us. Nen không thể tính toán được. Các bác trên diễn đàn có tài liệu gì nói về cái đó không có thể cho em biết với
        u disasemble , sau đó mở sách VĐK 8051 Tống Văn ÔN ra ,tra từng câu lệnh thì tính chính xác thời gian lặp

        Comment

        • yeubom1
          Thành viên mới
          • Sep 2008
          • 12

          #559
          Nguyên văn bởi Zz_Bi_zZ Xem bài viết
          u disasemble , sau đó mở sách VĐK 8051 Tống Văn ÔN ra ,tra từng câu lệnh thì tính chính xác thời gian lặp
          chào các bác, em mới gia nhập diển đàn rất mong được học hỏi từ diển đàn. Em có học về 8051 và hợp ngử cho 8051 nhưng em muốn được lập trình băng keil C vì thấy dùng C rất hay.
          tuy vậy em lại chưa biết nhiều về keil c lắm, đặc biệt là tập lệnh trong keil và cách dùng các lệnh như thế nào, chẵng hạn như: lệnh RR trong hợp ngữ để quay phải không có cờ nhớ thanh ghi A thì trong keil C em lại không biết dùng thế nào. vì vậy em mong nhận nhận được sự giúp đở của các bác. Xin cảm ơn nhiều

          Comment

          • yeubom1
            Thành viên mới
            • Sep 2008
            • 12

            #560
            bác Zz_Bi_zZ có thể giải thích rỏ cho em với được không

            Comment

            • yeubom1
              Thành viên mới
              • Sep 2008
              • 12

              #561
              Cho em hỏi: Em có cái mạch như hình dưới dùng đề nhấn phím, chương trình hợp ngử thì đã chạy được rồi em chuyển qua lập trình bằng C thì không được nên phải kết hợp C và Asembly như ở dưới. các bác có cách nào giúp em viết được chương trình này hoàn toàn bằng c không.


              // chưong trình này kết hợp C và Asembly:
              bit start=1,NUT0=1,NUT1=1,NUT2=1,NUT3=1,NUT4=1,NUT5=1, NUT6=1,NUT7=1,
              NUT8=1,NUT9=1;
              void quet_phim(void)
              {
              #pragma asm
              MOV P2,#11100011B
              MOV C,P2.0
              MOV NUT9
              MOV P2,#11100111B
              MOV C,P2.0
              MOV NUT5,C
              MOV P2,#11101011B
              MOV C,P2.0
              MOV NUT4,C
              MOV P2,#11101111B
              MOV C,P2.0
              MOV NUT2,C
              MOV P2,#11110011B
              MOV C,P2.0
              MOV NUT1,C
              MOV P2,#11110111B
              MOV C,P2.0
              MOV NUT3,C
              MOV P2,#11111011B
              MOV C,P2.0
              MOV NUT8,C
              MOV P2,#11111111B
              MOV C,P2.0
              MOV NUT6,C
              #pragma endasm
              }
              Attached Files

              Comment

              • jackychan
                Thành viên tích cực
                • Mar 2008
                • 112

                #562
                Đối với chương trình viết bằng C thì với mối câu lênh của C nó có một tập hợp các lênh Bằng ASM đi theo.
                Ví dụ một chương trình delay bằng ASM.
                delay:
                MOV r1,#100 //Lệnh này mất 2 chu kỳ máy
                lap: DJNZ r1,lap //mất 2 chu kỳ máy
                RET //mất 1 chu kỳ máy

                Comment

                • tallht
                  Thành viên mới
                  • Apr 2008
                  • 361

                  #563
                  k biết c thì bạn phải học đi. cũng không tốn thời gian lâu đâu,chỉ cần biết 1 số cấu trúc cộng cách đặt biến,1 số còng lặp là lập trình sơ sơ rùi! k cần phải biết cao siêu đâu!
                  SỰ HỌC LÀ MÃI MÃI......!!!!

                  Comment

                  • yeubom1
                    Thành viên mới
                    • Sep 2008
                    • 12

                    #564
                    sao mà diển đàn dạo này ít người lên thế, không ai còn cảm thấy hưng thú hay sao?

                    Comment

                    • phunghieu
                      Thành viên mới
                      • Apr 2007
                      • 17

                      #565
                      Chào các Bạn..!
                      Mình cũng đang tập tọe học lập trình và được Anh nguyenminhieu viết cho một chương trình ví dụ điều khiển hiển thị qua 8 con led.và đây là vd:
                      #include<regx51.h>

                      void nhay_3_lan(void);
                      void dich_phai(void);
                      void delay(unsigned int ms)


                      {

                      unsigned int i;

                      unsigned char j;

                      for(i=0;i<=ms;i++)

                      for(j=0;j<120;j++);

                      }

                      void main(void)

                      {

                      while(1)

                      {
                      nhay_3_lan();
                      dich_phai();
                      }



                      }

                      void nhay_3_lan(void)

                      {
                      char i;

                      P1 = 0;

                      for(i = 0;i<6;i++)

                      {

                      P1 = ~P1;delay(300);




                      }

                      }


                      void dich_phai(void)

                      {

                      char i;

                      P1=0xff;


                      for(i=0;i<=8;i++)

                      {

                      P1 = P1>>1;delay(200);



                      }

                      }
                      Vậy cho mình hỏi nếu mình muốn viết chương trình cho 8con led này---
                      - Một là sáng dồn(tức là tại một thời điểm chỉ có một led sáng chạy từ led0 --led7t thì dừng lại tại Led 7 ,Led7 lúc này luôn sáng.tiếp theo cũng như thế và đến led6 thì led6 luôn sáng..........cứ như thế cho đến cuối cùng là Led0)
                      - Hai là sáng dần lên(tức là sáng dần lên từ led0 ----Led7)
                      Rất mong được các bạn giúp đỡ..!

                      Comment

                      • yeubom1
                        Thành viên mới
                        • Sep 2008
                        • 12

                        #566
                        Nguyên văn bởi phunghieu Xem bài viết
                        Chào các Bạn..!
                        Mình cũng đang tập tọe học lập trình và được Anh nguyenminhieu viết cho một chương trình ví dụ điều khiển hiển
                        Vậy cho mình hỏi nếu mình muốn viết chương trình cho 8con led này---
                        - Một là sáng dồn(tức là tại một thời điểm chỉ có một led sáng chạy từ led0 --led7t thì dừng lại tại Led 7 ,Led7 lúc này luôn sáng.tiếp theo cũng như thế và đến led6 thì led6 luôn sáng..........cứ như thế cho đến cuối cùng là Led0)
                        - Hai là sáng dần lên(tức là sáng dần lên từ led0 ----Led7)
                        Rất mong được các bạn giúp đỡ..!
                        khong biet ban co biet hop ngu khong, minh co chuong trinh sang led don nhu ban noi nhung viet bang hop ngu
                        ban co the chuyen no qua c duoc
                        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        donden:
                        mov luusolanlap,#8
                        mov solanchay,#8
                        mov solanlap,#8
                        mov luutrangthai,#0ffh
                        vonglap:
                        mov dangchay,#0feh
                        begin:
                        mov a,dangchay
                        anl a,luutrangthai
                        mov p1,a
                        lcall delay1s
                        djnz solanchay,chaytiep
                        jmp thoatvonglap
                        chaytiep:
                        mov a,dangchay
                        rl a
                        mov dangchay,a
                        jmp begin
                        thoatvonglap:
                        mov luutrangthai,a
                        dec luusolanlap
                        mov a,luusolanlap
                        mov solanchay,a
                        djnz solanlap,vonglap
                        ret
                        Last edited by yeubom1; 20-09-2008, 16:07.

                        Comment

                        • zemen
                          Thành viên tích cực
                          • Nov 2005
                          • 536

                          #567
                          Mình có mấy cái hàm sáng led viết bằng C, bạn nào mới tìm hiều có thể tham khảo thêm:

                          void Dem_len(void)
                          {
                          unsigned char i; //khai bao bien trong ham
                          P2=255;
                          for(i=0;i<16;i++) //P2 dem len 16 lan
                          {
                          P2=P2+1;
                          delay_ms(500); //tri hoan nua giay
                          }
                          }
                          //---------------------------------------------------
                          void Dem_xuong(void)
                          {
                          unsigned char i;

                          P2=255;
                          for(i=0;i<16;i++)
                          {
                          P2=P2-1;
                          delay_ms(500);
                          }
                          }
                          !e

                          Comment

                          • zemen
                            Thành viên tích cực
                            • Nov 2005
                            • 536

                            #568
                            void Sang_dan(void)
                            {
                            unsigned char i;
                            P2=0xFF;
                            for(i=0;i<8;i++)
                            {
                            P2=P2<<1; //sang dan tu phai qua
                            delay_ms(500);
                            }
                            P2=0xFF;
                            for(i=0;i<8;i++)
                            {
                            P2=P2>>1; //sang dan tu trai qua
                            delay_ms(500);
                            }
                            }

                            //----------------------------------------------------
                            void Tat_dan(void)
                            {
                            unsigned char i;
                            P2=0;
                            for(i=0;i<8;i++)
                            {
                            P2=P2<<1;
                            P2=P2|0x01; //tat dan tu phai qua
                            delay_ms(500);
                            }
                            P2=0;
                            for(i=0;i<8;i++)
                            {
                            P2=P2>>1;
                            P2=P2|0x80; //tat dan tu trai qua
                            delay_ms(500);
                            }
                            }
                            !e

                            Comment

                            • zemen
                              Thành viên tích cực
                              • Nov 2005
                              • 536

                              #569
                              void Sang_dich(void)
                              {
                              unsigned char i;
                              P2=255;
                              for(i=0;i<8;i++)
                              {
                              P2=~(1<<i);
                              delay_ms(500);
                              }
                              P2=255;
                              for(i=0;i<8;i++)
                              {
                              P2=~(0x80>>i);
                              delay_ms(500);
                              }
                              }

                              //-------------------------------------------
                              void Tat_dich(void)
                              {
                              unsigned char i;
                              P2=0;
                              for(i=0;i<8;i++)
                              {
                              P2=(1<<i);
                              delay_ms(500);
                              }
                              P2=0;
                              for(i=0;i<8;i++)
                              {
                              P2=(0x80>>i);
                              delay_ms(500);
                              }
                              }
                              !e

                              Comment

                              • zemen
                                Thành viên tích cực
                                • Nov 2005
                                • 536

                                #570
                                void Sang_don(void)
                                {

                                unsigned char i,j,k;
                                P2=255; k=255;
                                for(i=8;i>0;i--)
                                {
                                for(j=0;j<i;j++)
                                {
                                P2=k&(~(1<<j));
                                delay_ms(500);
                                }
                                k=P2;
                                }
                                P2=255; k=255;
                                for(i=8;i>0;i--)
                                {
                                for(j=0;j<i;j++)
                                {
                                P2=k&(~(0x80>>j));
                                delay_ms(500);
                                }
                                k=P2;
                                }
                                }

                                void Tat_don(void)
                                {
                                unsigned char i,j,k;
                                P2=0; k=0;
                                for(i=8;i>0;i--)
                                {
                                for(j=0;j<i;j++)
                                {
                                P2=k|(1<<j);
                                delay_ms(500);
                                }
                                k=P2;
                                }
                                P2=0; k=0;
                                for(i=8;i>0;i--)
                                {
                                for(j=0;j<i;j++)
                                {
                                P2=k|(0x80>>j);
                                delay_ms(500);
                                }
                                k=P2;
                                }
                                }
                                !e

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