Thông báo

Collapse
No announcement yet.

Hỏi lệnh C cho 8051

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

  • Hỏi lệnh C cho 8051

    Lệnh dịch trái cho P0 thì P0=P0<<1;
    Pác nào biết lệnh dịch bit sang phải trong lập trình C cho 8051 ko?
    Pác nào có giáo trình lập trình C cho 8051 thi send cho anh em luôn nha. Thank trước ha.
    Cuộc đời như bánh omi, không biết rồi sẽ về đâu?

  • #2
    lệnh dịch phải P0=P0>>n

    Comment


    • #3
      đúng là có lúc mình cũng gà thật, mấy chuyện nhỏ vậy mà cũng không nghĩ ra, tại vì hôm trước quên sửa lại câu lệnh gán ở đầu chương trình.
      Vậy pác nào có giáo trình về lập trình c cho 8051 ko?
      Cuộc đời như bánh omi, không biết rồi sẽ về đâu?

      Comment


      • #4
        Nguyên văn bởi tnt288 Xem bài viết
        đúng là có lúc mình cũng gà thật, mấy chuyện nhỏ vậy mà cũng không nghĩ ra, tại vì hôm trước quên sửa lại câu lệnh gán ở đầu chương trình.
        Vậy pác nào có giáo trình về lập trình c cho 8051 ko?
        Em có 1 số tài liệu!
        Anh xem thử được không!
        http://www.mediafire.com/?zoyyzenjwjq
        http://www.mediafire.com/?wmly2yz3zu2
        http://www.mediafire.com/?wmly2yz3zu2
        Bki4u-University of Technology!

        Comment


        • #5
          Các pác cho hỏi. Với đoạn code sau:
          Code:
          //Khai bao thu ven cho chuong trinh
          #include <REGX52.H>
          
          //Dinh nghia cac lenh dung:
          #define bat 1;
          #define tat 0;
          
          sbit led1=P0^0;
          sbit led2=P0^1;
          sbit led3=P0^2;
          sbit led4=P0^3;
          sbit led5=P0^4;
          sbit led6=P0^5;
          sbit led7=P0^6;
          sbit led8=P0^7;
          sbit led9=P2^1;
          sbit led10=P2^2;
          sbit led11=P2^3;
          sbit led12=P2^4;
          
          //Cac ham can thiet.
          //Ham tre
          void time(long n)
          {
          	long i;
          	
          	for(i=0;i<n;i++)
          	{
          	;
          	}
          }
          
          //Ham chinh
          void main()
          {
          unsigned char n;
          while(1)
          {
          		led8=bat;
          		for(j=0;j<8;j++)
          			P0=P0>>1;
          		time(200);	
          }
          }
          Vì sao dùng P0 thì không thể dịch chuyển bít, còn nếu thay P0 bằng P1 thì công việc dịch bit đc tiến hành bình thường.????
          Cuộc đời như bánh omi, không biết rồi sẽ về đâu?

          Comment


          • #6
            Xem mã ASM sau khi dịch

            Nguyên văn bởi tnt288 Xem bài viết
            Các pác cho hỏi. Với đoạn code sau:
            Code:
            //Khai bao thu ven cho chuong trinh
            #include <REGX52.H>
            
            //Dinh nghia cac lenh dung:
            #define bat 1;
            #define tat 0;
            
            sbit led1=P0^0;
            sbit led2=P0^1;
            sbit led3=P0^2;
            sbit led4=P0^3;
            sbit led5=P0^4;
            sbit led6=P0^5;
            sbit led7=P0^6;
            sbit led8=P0^7;
            sbit led9=P2^1;
            sbit led10=P2^2;
            sbit led11=P2^3;
            sbit led12=P2^4;
            
            //Cac ham can thiet.
            //Ham tre
            void time(long n)
            {
            	long i;
            	
            	for(i=0;i<n;i++)
            	{
            	;
            	}
            }
            
            //Ham chinh
            void main()
            {
            unsigned char n;
            while(1)
            {
            		led8=bat;
            		for(j=0;j<8;j++)
            			P0=P0>>1;
            		time(200);	
            }
            }
            Vì sao dùng P0 thì không thể dịch chuyển bít, còn nếu thay P0 bằng P1 thì công việc dịch bit đc tiến hành bình thường.????
            http://techpal.vn
            Chia sẻ công nghệ, cùng thành công

            Comment


            • #7
              Nguyên văn bởi tnt288 Xem bài viết
              Các pác cho hỏi. Với đoạn code sau:
              Code:
              //Khai bao thu ven cho chuong trinh
              #include <REGX52.H>
              
              //Dinh nghia cac lenh dung:
              #define bat 1;
              #define tat 0;
              
              sbit led1=P0^0;
              sbit led2=P0^1;
              sbit led3=P0^2;
              sbit led4=P0^3;
              sbit led5=P0^4;
              sbit led6=P0^5;
              sbit led7=P0^6;
              sbit led8=P0^7;
              sbit led9=P2^1;
              sbit led10=P2^2;
              sbit led11=P2^3;
              sbit led12=P2^4;
              
              //Cac ham can thiet.
              //Ham tre
              void time(long n)
              {
              	long i;
              	
              	for(i=0;i<n;i++)
              	{
              	;
              	}
              }
              
              //Ham chinh
              void main()
              {
              unsigned char n;
              while(1)
              {
              		led8=bat;
              		for(j=0;j<8;j++)
              			P0=P0>>1;
              		time(200);	
              }
              }
              Vì sao dùng P0 thì không thể dịch chuyển bít, còn nếu thay P0 bằng P1 thì công việc dịch bit đc tiến hành bình thường.????
              bạn mô phỏng hay test trên proteus?
              với P0 thì bạn chú ý phải có trở treo nhé vì cổng này có cấu trúc dạng colector hở !
              0945061338(vocam.h@gmail.com,lehanhdtk3@gmail.com)
              ||
              PROGRAMING(C,ASM),HARDWARE,LMD,RTC,GPRS,GPS....ALL OF VDK

              Comment


              • #8
                Ko, mình viết trên kiel C và sử dụng công cụ chạy thử trên này luôn.
                Cuộc đời như bánh omi, không biết rồi sẽ về đâu?

                Comment


                • #9
                  P0 có thể định địa chỉ theo bit, ở đây trên đoạn đầu code nó đã được dùng để khai báo cho các biến led1 -->ledx rùi mà nên sao dùng lệnh quay kiểu này được : bác thay thế kiểu này em xem nào :

                  unsigned char x;
                  x = P0;
                  P0 = crol(x,1) ; quay trái x 1 bit tức quay thằng P0 làm tắt ; 1 quay 1 lần thay 1 = n lần thì quay n lần khỏi phải dùng vòng lặp for,while

                  hoặc nếu mún quay phải thì dùng lệnh:

                  P0 = cror(x,1) vv.... xem phần help của keilC đánh tên lệnh trong phần tìm kiếm để có lý giải và ví dụ cụ thể........

                  Comment


                  • #10
                    bác typhoon cho em hỏi lệnh crol vf cror trong thư viện nào thế?
                    Bác giả thích cho em rõ một tí 2 lệnh đó đc ko.Có tài liệu nào bác send cho e với.Thank bác nhiều
                    tranhuunga.qn@gmail.com

                    Comment


                    • #11
                      C166 User's Guide: _crol_ Library Routine

                      Comment


                      • #12
                        Nguyên văn bởi tnt288 Xem bài viết
                        Các pác cho hỏi. Với đoạn code sau:
                        Code:
                        //Khai bao thu ven cho chuong trinh
                        #include <REGX52.H>
                        
                        //Dinh nghia cac lenh dung:
                        #define bat 1;
                        #define tat 0;
                        
                        sbit led1=P0^0;
                        sbit led2=P0^1;
                        sbit led3=P0^2;
                        sbit led4=P0^3;
                        sbit led5=P0^4;
                        sbit led6=P0^5;
                        sbit led7=P0^6;
                        sbit led8=P0^7;
                        sbit led9=P2^1;
                        sbit led10=P2^2;
                        sbit led11=P2^3;
                        sbit led12=P2^4;
                        
                        //Cac ham can thiet.
                        //Ham tre
                        void time(long n)
                        {
                        	long i;
                        	
                        	for(i=0;i<n;i++)
                        	{
                        	;
                        	}
                        }
                        
                        //Ham chinh
                        void main()
                        {
                        unsigned char n;
                        while(1)
                        {
                        		led8=bat;
                        		for(j=0;j<8;j++)
                        			P0=P0>>1;
                        		time(200);	
                        }
                        }
                        Vì sao dùng P0 thì không thể dịch chuyển bít, còn nếu thay P0 bằng P1 thì công việc dịch bit đc tiến hành bình thường.????
                        theo mình thỳ muốn dùng cả cổng P0 thỳ phải khai báo thanh ghi dành cho cong P0 ban ạ. minh hay dung lenh: sfr P0=0x80;
                        mình cũng gà và mới gia nhập 4rum nên k bít gì mấy

                        Comment

                        Về tác giả

                        Collapse

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

                        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 qua, 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 qua, 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 qua, 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...
                          09-01-2025, 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 ...
                          09-01-2025, 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...
                          09-01-2025, 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