Thông báo

Collapse
No announcement yet.

cho mình hỏi đoạn code viết bằng ccs chút

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

  • cho mình hỏi đoạn code viết bằng ccs chút

    vừa tạm biệt asm chuyển sang ccs gặp chút rặc dối . viết cho con 16f877a dịch 8 led nối vào portb tắt theo thứ tự từ trên xuống dưới không biết viết code thế này đúng không mà nó chạy không đúng . các b chỉ giúp nhé . thankss


    #include "C:\Documents and Settings\haphong computer\Desktop\css\k2.h"
    #use delay(clock=20000000)
    int8 a[8]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};

    void main()
    {

    setup_adc_ports(NO_ANALOGS);
    setup_adc(ADC_CLOCK_DIV_2);
    setup_psp(PSP_DISABLED);
    setup_spi(SPI_SS_DISABLED);
    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
    setup_timer_1(T1_DISABLED);
    setup_timer_2(T2_DISABLED,0,1);
    setup_comparator(NC_NC_NC_NC);
    setup_vref(FALSE);
    set_tris_b(0);
    while(1)
    {
    int8 i;
    for(i=a[1];i<=a[8];i=i+1);
    {
    output_b(i);
    delay_ms(100);
    }
    }
    }
    Ph.vmr

  • #2
    Ý bạn chạy đúng là thế nào? 1 led dịch từ cao xuống thấp à?

    Comment


    • #3
      theo mình thì nên khai báo một mảng a[] gồm các bit tắt dần theo yeo cầu, rồi cho output ra portB!
      ví dụ LED bạn là anode chung lên +5V thì nêu ngõ ra là mức 0 thì LED sáng như vậy:
      unsigned int8 a[] = { 0xFF, 0x7F, 0x3F, ...};
      rồi cho output ra PORTB là xong!

      Comment


      • #4
        nghĩa là mình nối led vao portb theo thứ tự từ trên xuống đó . led mình nối chung anode . chưa hiểu únigned int8 a[] ={....} chạy khác gì so với int8 a[]=..... của mình .
        mà mình thây lạ là cũng nối led như trên nhưng mình đổi đoạn code trong hàm main thành như sau nhưng nó vẫn chạy không đúng :
        set_tris_b(0);
        while(1)
        {
        output_b(0x01);
        delay_ms(100);
        output_b(0x02);
        delay_ms(100);
        output_b(0x03);
        delay_ms(100);
        output_b(0x04);
        delay_ms(100);
        output_b(0x06);
        delay_ms(100);
        output_b(0x07);
        delay_ms(100);
        output_b(0x08);
        delay_ms(100);
        }

        mà cho mình hỏi luôn vde này nữa . sao nó cứ báo lỗi ở chỗ device 16f877a*=16 adc8 mà theo mình thì cú pháp đã đúng .
        #include "C:\Documents and Settings\haphong computer\Desktop\css\adc.h"
        #fuses HS,NOWDT,NOPROTECT,NOLVP
        #device 16F877A*=16 ADC=8
        #use delay(clock=10000000)
        Int8 adc;

        void main()
        {

        setup_adc_ports(NO_ANALOGS);
        setup_adc(ADC_CLOCK_DIV_2);
        setup_psp(PSP_DISABLED);
        setup_spi(SPI_SS_DISABLED);
        setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
        setup_timer_1(T1_DISABLED);
        setup_timer_2(T2_DISABLED,0,1);
        setup_comparator(NC_NC_NC_NC);
        setup_vref(FALSE);

        // TODO: USER CODE!!

        setup_adc(adc_clock_internal);
        setup_adc_ports(AN0);
        set_adc_channel(0);
        delay_ms(10);
        while(true)
        {
        adc=read_adc();
        output_B(adc);
        }
        }


        thankss các b
        Ph.vmr

        Comment


        • #5
          kết quả khi chạy thử thì LED sáng như thế nào vậy?

          Comment


          • #6
            hình như là 4 led dưới cung sang 4 led trên nhâp nháy không theo quy luật nào cả . vì mình làm thử tối qua không đc nên hum nay đi hỏi . hj . mong các b chỉ giúp
            Ph.vmr

            Comment


            • #7
              không b nào giúp m vs sao
              Ph.vmr

              Comment


              • #8
                1. Theo như bạn mô tả sơ đồ thì bạn mắc chung anot, điều ngày có nghĩa là khi mỗi pin đc set lên 1 thì đồng nghĩa với việc led đó tắt (đảo giá trị, nhận giá trị 0 thì led sáng, giá trị 1 led tắt).
                2. Giá trị của bạn đưa ra port tăng dần theo tuần tự hexa (ko phải dịch bit), điều này có nghĩa là led của bạn sẽ sang lần lượt theo các giá trị khi ta convert từ hexa sang binary (0b0000.0001,0b0000.0010,0b0000.0011...)
                3. Từ điều 1 và 2 trên ta sẽ thu đc kết quả như bạn nói: 4 led (thuộc 4 bit cao luôn luôn sang vì gia trị 4 bit này luôn là 0), 4 bit sau sang theo quy luật thứ tự của hệ nhị phân (bỉnary), có điều sẽ bị đảo lại (đèn tắt tương ứng với bit 1)
                Các khắc phục (để phục vụ việc sang đuổi) bạn có thể làm thử như sau:
                Code:
                char i;
                i=1;
                while(TRUE)
                	{
                	output_b(i);
                	delay_ms(100);
                	i<<=1;
                	if(i==0){i=1;}
                	}
                Chúc bắt đầu tốt đẹp

                Comment


                • #9
                  Dịch led thế này này :

                  Code:
                  int temp;
                  void main()
                  {
                       output_b(0x00);
                       set_tris_b(0x00);
                       while(true)
                       {
                       temp = input_b();
                       if(temp=0xFF)
                       {
                             temp=0x00;
                       }
                       shift_left(temp,1);
                       output_b(temp);
                       delay_ms(500);
                       }
                  }

                  Comment


                  • #10
                    thanks các b . vậy con cái #device 16f877a*=16 adc8 thi sao . sao mình dịch nó cứ báo lỗi . đã tham khảo nhiều bài viết nhưng vẫn chưa sửa được . mong các b giúp .
                    Ph.vmr

                    Comment


                    • #11
                      chỉ cần thế này là đủ
                      Code:
                      #device adc=8   => 8bit
                      #device adc=10 => 10bit

                      Comment


                      • #12
                        #device *=16, adc = 8

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X