hỏi về cách khi báo trong ccs

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • magicskull
    Thành viên mới
    • Nov 2009
    • 10

    #1

    hỏi về cách khi báo trong ccs

    chào cả nhà,
    em đang viết code để tao 3 chân PWM bằng 16f877a nhưng nó chỉ có 2 chân CCP thôi nên em tạo 1 chân bằng hàm delay.
    code của em có 2 hàm con là RC0 (PWM bằng delay) và hàm pwm (tao pwm bằng pic)
    em muốn hỏi cách khai báo trong hàm main như thế nào để cả 2 hàm cùng chạy như vậy mới tạo được 3 chân pwm được
    em khai báo hàm nào trước thì chuơng trình chỉ chạy hàm đó thôi,
    chỉ em với nha mọi người
    hàm main em khai báo thế này


    void RC0()
    {
    .....
    }
    void pwm()
    {
    .....
    }

    void main()
    {
    set_tris_c(0x00);
    while (true)
    {
    RC0();
    pwm();
    }
    }
    các anh giúp em với nha.
    thank cả nhà
  • tungtot_vl
    Thành viên tích cực
    • Jun 2007
    • 130

    #2
    bạn nên dùng hàm PWM bằng delay cho cả 3 chân hay 8 chân điều được. cần gì xen hàm PWM vào làm gì
    LMD 238 Tăng Bạc Hổ - TP. Quy Nhơn.

    Comment

    • magicskull
      Thành viên mới
      • Nov 2009
      • 10

      #3
      em đang làm đồ án để tạo pwm bằng pic nên phải dùng timer 2,
      nhưng cái led của em cần tới 3 chân pwm lận nên em mới phải dùng thêm hàm delay kia
      cái chính là phải tạo được pwm bằng timer2 tích hợp sẵn trong píc6f877a

      Comment

      • quangnhat
        Thành viên tích cực
        • Jul 2005
        • 940

        #4
        Các bác cho em hỏi tí:
        Em viết chương trình băm xung ra chân C5 mà không hiểu khi mô phỏng thấy T=140ms.
        Nghĩ mãi mà không ra....


        #include <18F4331.h>
        #include "Define_Reg.h"
        #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
        #use delay(clock=20000000)
        //================================================== ===========================
        int1 a1;
        int8 count=0;
        #int_TIMER0
        void TIMER0_isr(void)
        {
        count++;
        if(count>10) count=0;
        if(count< 5) a1 =0;
        else a1 =1;
        output_bit(Pin_C5, a1 );
        }
        //================================================== ==========================
        void main()
        {
        set_timer0(0xcd);//10us

        TRISB=0x00;
        TRISD=0x00;
        TRISC=0x00;
        TRISA=0XFF;

        portc=0xFF;
        portb=0xFF;
        portd=0xFF;

        //-----------------------Khoi tao ADC----------------------------------------
        setup_adc (ADC_OFF);
        //set_adc_channel( 0 );
        //delay_us(10);
        //setup_adc_ports( sAN0 );
        //setup_adc(ADC_CLOCK_INTERNAL );
        //-------------------------------------------------------------------------
        delay_ms(100);
        setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
        enable_interrupts(INT_TIMER0);

        enable_interrupts(GLOBAL);

        while(1)
        {
        }
        }
        //-------------------------------------------------------
        Attached Files
        Quang Nhat
        ---------------------------------------
        Yahoo :quangnhat85ls
        Mail :
        Nhận thiết kế và ép nhựa cho đồ điện tử

        Comment

        • quangnhat
          Thành viên tích cực
          • Jul 2005
          • 940

          #5
          Hôm nay, điên quá cài lại win...hì hục từ sáng đến giờ mới xong..
          Không có bác nào giúp em à???
          thanks
          Quang Nhat
          ---------------------------------------
          Yahoo :quangnhat85ls
          Mail :
          Nhận thiết kế và ép nhựa cho đồ điện tử

          Comment

          • quangnhat
            Thành viên tích cực
            • Jul 2005
            • 940

            #6
            Các bác sang hết Koh Pech xem rồi hay sao thế ???
            Quang Nhat
            ---------------------------------------
            Yahoo :quangnhat85ls
            Mail :
            Nhận thiết kế và ép nhựa cho đồ điện tử

            Comment

            • quangnhat
              Thành viên tích cực
              • Jul 2005
              • 940

              #7
              Nguyên văn bởi quangnhat Xem bài viết
              Các bác cho em hỏi tí:
              Em viết chương trình băm xung ra chân C5 mà không hiểu khi mô phỏng thấy T=140ms.Mà rõ ràng set timer có 10us
              Nghĩ mãi mà không ra....


              #include <18F4331.h>
              #include "Define_Reg.h"
              #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
              #use delay(clock=20000000)
              //================================================== ===========================
              int1 a1;
              int8 count=0;
              #int_TIMER0
              void TIMER0_isr(void)
              {
              count++;
              if(count>10) count=0;
              if(count< 5) a1 =0;
              else a1 =1;
              output_bit(Pin_C5, a1 );
              }
              //================================================== ==========================
              void main()
              {
              set_timer0(0xcd);//10us

              TRISB=0x00;
              TRISD=0x00;
              TRISC=0x00;
              TRISA=0XFF;

              portc=0xFF;
              portb=0xFF;
              portd=0xFF;

              //-----------------------Khoi tao ADC----------------------------------------
              setup_adc (ADC_OFF);
              //set_adc_channel( 0 );
              //delay_us(10);
              //setup_adc_ports( sAN0 );
              //setup_adc(ADC_CLOCK_INTERNAL );
              //-------------------------------------------------------------------------
              delay_ms(100);
              setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
              enable_interrupts(INT_TIMER0);

              enable_interrupts(GLOBAL);

              while(1)
              {
              }
              }
              //-------------------------------------------------------
              Không thấy ai giúp em vậy???
              Quang Nhat
              ---------------------------------------
              Yahoo :quangnhat85ls
              Mail :
              Nhận thiết kế và ép nhựa cho đồ điện tử

              Comment

              • quangnhat
                Thành viên tích cực
                • Jul 2005
                • 940

                #8
                Xem ra chủ đề về Pic không có ai hào hứng lắm...Tiểu đệ đành phải tự sướng thôi
                Quang Nhat
                ---------------------------------------
                Yahoo :quangnhat85ls
                Mail :
                Nhận thiết kế và ép nhựa cho đồ điện tử

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                Đang tải...