Thông báo

Collapse
No announcement yet.

[Help] Viết Code trong Keil C

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

  • [Help] Viết Code trong Keil C

    Chào các bạn !
    cho mình hỏi, trong C mình viết P0.1 hay P2.3, P1.2,....
    sao không được vậy ???
    làm sao để điều khiến từng chân của IC vậy ???(Ngoài cách viết mã nhị phân nha !)
    mong các bạn giúp đỡ !


  • #2
    Sao lại không được, hỏi gì thì cũng rỏ ràng tí chứ Px.x = x ; là bình thương coi lại topic lập trình keil C nhé trong 4rum có đó.
    Nếu không dùng nhị phân thì dùng hex 0xxx; thì cũng vậy thôi quan trọng là phải hiểu mới được.

    Comment


    • #3
      Nguyên văn bởi thientanvt Xem bài viết
      Sao lại không được, hỏi gì thì cũng rỏ ràng tí chứ Px.x = x ; là bình thương coi lại topic lập trình keil C nhé trong 4rum có đó.
      Nếu không dùng nhị phân thì dùng hex 0xxx; thì cũng vậy thôi quan trọng là phải hiểu mới được.
      mình viết như vậy mà máy báo sai cú pháp, bạn xem giúp mình lỗi ở đâu nha !
      Code:
      void hu4(time)
      	{
      	unsigned int i;
      	for(i=1;i<=time;i++)
      	{
      	P0.1 = P0.3=P0.5=P0.7=0;
      	delay(100);
      	P0.1 =P0.3=P0.5=P0.7=1;
      	}
      	}

      Comment


      • #4
        phải là Px_Y chứ. mà bạn muốn biết thì xem header file của chip ấy.

        Comment


        • #5
          Nguyên văn bởi hoadang Xem bài viết
          phải là Px_Y chứ. mà bạn muốn biết thì xem header file của chip ấy.
          mình làm được rồi, cảm ơn bạn nhiều nha, nhưng chẳng hiểu sao mình viết Px=0; thì nó chỉ sáng có 1 bóng tại vị trí Px_0 thôi, còn 7 bóng còn lại thì tắt hết ??? lẽ ra cả 8 bóng thuộc Px phải sáng chứ ????

          Comment


          • #6
            Rất đơn giản P1.1 thì ta viết P1^1 .....vd bật on p1.1 thì P1^1=1;...
            Còn điều khiển cả port thì P1=0b00000010 de bat P1.1;
            |

            Comment


            • #7
              Nguyên văn bởi dinhnam123 Xem bài viết
              Rất đơn giản P1.1 thì ta viết P1^1 .....vd bật on p1.1 thì P1^1=1;...
              Còn điều khiển cả port thì P1=0b00000010 de bat P1.1;
              Viết Px^y thì nó không cho bạn ơi !
              viết Px_y thì được, còn bật tắt cả Port thì mình chỉ còn cách dùng mã Hex(0xff hoặc 0x00) thôi,.....chẳng biết sao nữa, theo lý thuyết thì viết Px là có thể điều khiển cả Port rồi mà ?????????/

              Comment


              • #8
                Nguyên văn bởi lee_trieu Xem bài viết
                còn bật tắt cả Port thì mình chỉ còn cách dùng mã Hex(0xff hoặc 0x00) thôi,.....chẳng biết sao nữa/
                bạn có thể dùng mã hex hoặc mã thập phân để điều khiển cổng P2 như ở dưới đây xem.
                ví dụ bạn thử lập trình : P2=0xff; gọi hàm trễ delay(); P2=0; gọi hàm trễ delay();
                hoặc là : P2=255; gọi hàm trễ delay(); P2=0; gọi hàm trễ delay();
                chỉ có tâm hồn là nơi duy nhất: có thể biến thiên đường thành địa ngục và ngược lại có thể biến địa ngục hóa thiên đường
                Everything should be made as simple as possible, but not simpler

                Comment


                • #9
                  Nguyên văn bởi daohuytien Xem bài viết
                  bạn có thể dùng mã hex hoặc mã thập phân để điều khiển cổng P2 như ở dưới đây xem.
                  ví dụ bạn thử lập trình : P2=0xff; gọi hàm trễ delay(); P2=0; gọi hàm trễ delay();
                  hoặc là : P2=255; gọi hàm trễ delay(); P2=0; gọi hàm trễ delay();
                  nếu mình viết P2=0 thì nó lại hiểu P2.0 =0 là sao nhỉ ????????

                  Comment


                  • #10
                    viết bình thường mà nhỉ,Px_y hoặc là Px mà

                    Comment


                    • #11
                      Nguyên văn bởi hoadang Xem bài viết
                      viết bình thường mà nhỉ,Px_y hoặc là Px mà
                      mình cũng không biết sao nữa??? mõi lần viết Px thì nó chỉ điều khiển được Px.0 thôi à !
                      đây là file header của mình, bạn xem thử nha !!!

                      Code:
                      /*--------------------------------------------------------------------------
                      AT89X51.H
                      
                      Header file for the low voltage Flash Atmel AT89C51 and AT89LV51.
                      Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
                      All rights reserved.
                      --------------------------------------------------------------------------*/
                      
                      #ifndef __AT89X51_H__
                      #define __AT89X51_H__
                      
                      /*------------------------------------------------
                      Byte Registers
                      ------------------------------------------------*/
                      sfr P0      = 0x80;
                      sfr SP      = 0x81;
                      sfr DPL     = 0x82;
                      sfr DPH     = 0x83;
                      sfr PCON    = 0x87;
                      sfr TCON    = 0x88;
                      sfr TMOD    = 0x89;
                      sfr TL0     = 0x8A;
                      sfr TL1     = 0x8B;
                      sfr TH0     = 0x8C;
                      sfr TH1     = 0x8D;
                      sfr P1      = 0x90;
                      sfr SCON    = 0x98;
                      sfr SBUF    = 0x99;
                      sfr P2      = 0xA0;
                      sfr IE      = 0xA8;
                      sfr P3      = 0xB0;
                      sfr IP      = 0xB8;
                      sfr PSW     = 0xD0;
                      sfr ACC     = 0xE0;
                      sfr B       = 0xF0;
                      
                      /*------------------------------------------------
                      P0 Bit Registers
                      ------------------------------------------------*/
                      sbit P0_0 = 0x80;
                      sbit P0_1 = 0x81;
                      sbit P0_2 = 0x82;
                      sbit P0_3 = 0x83;
                      sbit P0_4 = 0x84;
                      sbit P0_5 = 0x85;
                      sbit P0_6 = 0x86;
                      sbit P0_7 = 0x87;
                      
                      /*------------------------------------------------
                      PCON Bit Values
                      ------------------------------------------------*/
                      #define IDL_    0x01
                      
                      #define STOP_   0x02
                      #define PD_     0x02    /* Alternate definition */
                      
                      #define GF0_    0x04
                      #define GF1_    0x08
                      
                      #define SMOD_   0x80
                      
                      /*------------------------------------------------
                      TCON Bit Registers
                      ------------------------------------------------*/
                      sbit IT0  = 0x88;
                      sbit IE0  = 0x89;
                      sbit IT1  = 0x8A;
                      sbit IE1  = 0x8B;
                      sbit TR0  = 0x8C;
                      sbit TF0  = 0x8D;
                      sbit TR1  = 0x8E;
                      sbit TF1  = 0x8F;
                      
                      /*------------------------------------------------
                      TMOD Bit Values
                      ------------------------------------------------*/
                      #define T0_M0_   0x01
                      #define T0_M1_   0x02
                      #define T0_CT_   0x04
                      #define T0_GATE_ 0x08
                      #define T1_M0_   0x10
                      #define T1_M1_   0x20
                      #define T1_CT_   0x40
                      #define T1_GATE_ 0x80
                      
                      #define T1_MASK_ 0xF0
                      #define T0_MASK_ 0x0F
                      
                      /*------------------------------------------------
                      P1 Bit Registers
                      ------------------------------------------------*/
                      sbit P1_0 = 0x90;
                      sbit P1_1 = 0x91;
                      sbit P1_2 = 0x92;
                      sbit P1_3 = 0x93;
                      sbit P1_4 = 0x94;
                      sbit P1_5 = 0x95;
                      sbit P1_6 = 0x96;
                      sbit P1_7 = 0x97;
                      
                      /*------------------------------------------------
                      SCON Bit Registers
                      ------------------------------------------------*/
                      sbit RI   = 0x98;
                      sbit TI   = 0x99;
                      sbit RB8  = 0x9A;
                      sbit TB8  = 0x9B;
                      sbit REN  = 0x9C;
                      sbit SM2  = 0x9D;
                      sbit SM1  = 0x9E;
                      sbit SM0  = 0x9F;
                      
                      /*------------------------------------------------
                      P2 Bit Registers
                      ------------------------------------------------*/
                      sbit P2_0 = 0xA0;
                      sbit P2_1 = 0xA1;
                      sbit P2_2 = 0xA2;
                      sbit P2_3 = 0xA3;
                      sbit P2_4 = 0xA4;
                      sbit P2_5 = 0xA5;
                      sbit P2_6 = 0xA6;
                      sbit P2_7 = 0xA7;
                      
                      /*------------------------------------------------
                      IE Bit Registers
                      ------------------------------------------------*/
                      sbit EX0  = 0xA8;       /* 1=Enable External interrupt 0 */
                      sbit ET0  = 0xA9;       /* 1=Enable Timer 0 interrupt */
                      sbit EX1  = 0xAA;       /* 1=Enable External interrupt 1 */
                      sbit ET1  = 0xAB;       /* 1=Enable Timer 1 interrupt */
                      sbit ES   = 0xAC;       /* 1=Enable Serial port interrupt */
                      sbit ET2  = 0xAD;       /* 1=Enable Timer 2 interrupt */
                      
                      sbit EA   = 0xAF;       /* 0=Disable all interrupts */
                      
                      /*------------------------------------------------
                      P3 Bit Registers (Mnemonics & Ports)
                      ------------------------------------------------*/
                      sbit P3_0 = 0xB0;
                      sbit P3_1 = 0xB1;
                      sbit P3_2 = 0xB2;
                      sbit P3_3 = 0xB3;
                      sbit P3_4 = 0xB4;
                      sbit P3_5 = 0xB5;
                      sbit P3_6 = 0xB6;
                      sbit P3_7 = 0xB7;
                      
                      sbit RXD  = 0xB0;       /* Serial data input */
                      sbit TXD  = 0xB1;       /* Serial data output */
                      sbit INT0 = 0xB2;       /* External interrupt 0 */
                      sbit INT1 = 0xB3;       /* External interrupt 1 */
                      sbit T0   = 0xB4;       /* Timer 0 external input */
                      sbit T1   = 0xB5;       /* Timer 1 external input */
                      sbit WR   = 0xB6;       /* External data memory write strobe */
                      sbit RD   = 0xB7;       /* External data memory read strobe */
                      
                      /*------------------------------------------------
                      IP Bit Registers
                      ------------------------------------------------*/
                      sbit PX0  = 0xB8;
                      sbit PT0  = 0xB9;
                      sbit PX1  = 0xBA;
                      sbit PT1  = 0xBB;
                      sbit PS   = 0xBC;
                      sbit PT2  = 0xBD;
                      
                      /*------------------------------------------------
                      PSW Bit Registers
                      ------------------------------------------------*/
                      sbit P    = 0xD0;
                      sbit F1   = 0xD1;
                      sbit OV   = 0xD2;
                      sbit RS0  = 0xD3;
                      sbit RS1  = 0xD4;
                      sbit F0   = 0xD5;
                      sbit AC   = 0xD6;
                      sbit CY   = 0xD7;
                      
                      /*------------------------------------------------
                      Interrupt Vectors:
                      Interrupt Address = (Number * 8) + 3
                      ------------------------------------------------*/
                      #define IE0_VECTOR	0  /* 0x03 External Interrupt 0 */
                      #define TF0_VECTOR	1  /* 0x0B Timer 0 */
                      #define IE1_VECTOR	2  /* 0x13 External Interrupt 1 */
                      #define TF1_VECTOR	3  /* 0x1B Timer 1 */
                      #define SIO_VECTOR	4  /* 0x23 Serial port */
                      
                      #endif
                      
                      
                      

                      Comment


                      • #12
                        bạn thử gửi nguyên project và file mô phỏng lên đi.

                        Comment


                        • #13
                          Nguyên văn bởi hoadang Xem bài viết
                          bạn thử gửi nguyên project và file mô phỏng lên đi.
                          Mình đính kèm file project gồm thư mục mô phỏng bằng Proteus và code Keil C đó ! bạn xem giúp mình nha !
                          Attached Files

                          Comment


                          • #14
                            Nguyên văn bởi lee_trieu Xem bài viết
                            nếu mình viết P2=0 thì nó lại hiểu P2.0 =0 là sao nhỉ ????????
                            bạn à P2_0 là một phần trong Port P2 lên khi mình cho P2=0 thì đương nhiên P2_2=0 rùi.
                            chỉ có tâm hồn là nơi duy nhất: có thể biến thiên đường thành địa ngục và ngược lại có thể biến địa ngục hóa thiên đường
                            Everything should be made as simple as possible, but not simpler

                            Comment


                            • #15
                              Nguyên văn bởi daohuytien Xem bài viết
                              bạn à P2_0 là một phần trong Port P2 lên khi mình cho P2=0 thì đương nhiên P2_2=0 rùi.
                              không phải vậy ! ý mình là như vậy nè,...mình viết P2=0 để 8 đèn ở Port P2 đều sáng hết, nhưng sao chỉ có đèn ở chân P2.0 là sáng thôi,.còn lại tắt hết !!!?????????????

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X