Welcome & Happy Holidays!
Trang 5 của 5 Đầu tiênĐầu tiên ... 345
Kết quả 41 đến 46 của 46
  1. #41
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bạn nào cho mình hỏi với. mình đang thử viết chương trình ngắt cho timer0. mục đích là nhấn nút nhấn rb0 thì sẽ cho timer0 hoạt động, khi tràn thì sẽ xảy ra ngắt. và chương trình ngắt sẽ là cho rb1 lên 1 trong 1s và sau đó tắt. nhưng không hiểu sao sau khi nhấn nó cứ nhấp nháy hoài. theo như mình đoán thì cờ ngắt chưa được xóa. nên khi thoát ngắt thì nó lại vào lại. mình tưởng ccs sẽ tự set cờ tràn xuống 0 chứ. hay tại mình lập trình sai? bạn nào biết chỉ mình vs
    #include <16f877a.h>
    #fuses xt,nowdt,noprotect,put,nobrownout
    #use delay(clock=4m)
    #use fast_io(b)
    #byte portb=0x06
    #bit rb0=portb.0
    #bit rb1=portb.1
    #int_timer0
    void rtcc()
    {set_timer0(0);
    rb1=1;
    delay_ms(1000);
    rb1=0;
    delay_ms(1000);
    }
    void main()
    {set_tris_b(0b00000001);
    portb=0;
    while(true)
    {if(rb0==1)
    {while(rb0==1)
    {}
    setup_timer_0(t0_internal|t0_div_256);
    set_timer0(0);
    enable_interrupts(global);
    enable_interrupts(int_timer0);
    }
    rb1=0;
    }
    }

  2. #42
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Vilus
    bạn nào cho mình hỏi với. mình đang thử viết chương trình ngắt cho timer0. mục đích là nhấn nút nhấn rb0 thì sẽ cho timer0 hoạt động, khi tràn thì sẽ xảy ra ngắt. và chương trình ngắt sẽ là cho rb1 lên 1 trong 1s và sau đó tắt. nhưng không hiểu sao sau khi nhấn nó cứ nhấp nháy hoài. theo như mình đoán thì cờ ngắt chưa được xóa. nên khi thoát ngắt thì nó lại vào lại. mình tưởng ccs sẽ tự set cờ tràn xuống 0 chứ. hay tại mình lập trình sai? bạn nào biết chỉ mình vs
    #include <16f877a.h>
    #fuses xt,nowdt,noprotect,put,nobrownout
    #use delay(clock=4m)
    #use fast_io(b)
    #byte portb=0x06
    #bit rb0=portb.0
    #bit rb1=portb.1
    #int_timer0
    void rtcc()
    {set_timer0(0);
    rb1=1;
    delay_ms(1000);
    rb1=0;
    delay_ms(1000);
    }
    void main()
    {set_tris_b(0b00000001);
    portb=0;
    while(true)
    {if(rb0==1)
    {while(rb0==1)
    {}
    setup_timer_0(t0_internal|t0_div_256);
    set_timer0(0);
    enable_interrupts(global);
    enable_interrupts(int_timer0);
    }
    rb1=0;
    }
    }
    Tại sao mọi người lại cứ thích delay ở trong ngắt timer nhỉ. Bạn để thế này chip ko treo thì cũng chạy vớ vẩn thôi. Đã mất công dùng timer thì còn để delay vào đấy làm gì.

  3. #43
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi mta_cdt
    Tại sao mọi người lại cứ thích delay ở trong ngắt timer nhỉ. Bạn để thế này chip ko treo thì cũng chạy vớ vẩn thôi. Đã mất công dùng timer thì còn để delay vào đấy làm gì.
    mục đích của em là chỉ test thử phần ngắt timer0 thôi. vậy nguyên nhân là do delay trong ngắt hả anh?

  4. #44
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Vilus
    bạn nào cho mình hỏi với. mình đang thử viết chương trình ngắt cho timer0. mục đích là nhấn nút nhấn rb0 thì sẽ cho timer0 hoạt động, khi tràn thì sẽ xảy ra ngắt. và chương trình ngắt sẽ là cho rb1 lên 1 trong 1s và sau đó tắt. nhưng không hiểu sao sau khi nhấn nó cứ nhấp nháy hoài. theo như mình đoán thì cờ ngắt chưa được xóa. nên khi thoát ngắt thì nó lại vào lại. mình tưởng ccs sẽ tự set cờ tràn xuống 0 chứ. hay tại mình lập trình sai? bạn nào biết chỉ mình vs
    #include <16f877a.h>
    #fuses xt,nowdt,noprotect,put,nobrownout
    #use delay(clock=4m)
    #use fast_io(b)
    #byte portb=0x06
    #bit rb0=portb.0
    #bit rb1=portb.1
    #int_timer0
    void rtcc()
    {set_timer0(0);
    rb1=1;
    delay_ms(1000);
    rb1=0;
    delay_ms(1000);
    }
    void main()
    {set_tris_b(0b00000001);
    portb=0;
    while(true)
    {if(rb0==1)
    {while(rb0==1)
    {}
    setup_timer_0(t0_internal|t0_div_256);
    set_timer0(0);
    enable_interrupts(global);
    enable_interrupts(int_timer0);
    }
    rb1=0;
    }
    }
    đơn giản là khi ngắt sảy ra, bạn cấm ngắt gán một giá trị vào một biến nào đó.VD: co_ngat=0xaa. Ngoài hàm MAIN kiểm tra biến co_ngắt nếu bằng 0xaa thì làm gì đó ...không bằng thì đi làm việc khác.

  5. #45
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    ai giải thích dùm mình timer1 vs," timer1 hoạt động như bộ đếm đồng bộ, bất đồng bộ..." nghĩa là ntn? như thế nào là hoạt động như chế độ đếm đồng bộ, như thế nào thì được gọi timer1 hoạt động như bộ đếm bất đồng bộ????

  6. #46
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    em có bài như thế này:
    Viết chương trình mô phỏng hiển thị Tần Số lên LCD -> xung clock đưa vào RBO
    em lên mạng thì thấy cách làm là
    đọc xung từ RB0 sử dụng ngắt ngoài => dùng timer đếm xung trong 1s hay định thời trong 1s gì gì đó => rồi tính tần số hiển thị lên lcd
    nhưng em không biết cài đặt mấy cái thông số cho timer, với lại em không bik cách tính tần số làm z có đúng ko :v NÓI TÚM LẠI LÀ EM BỊ RỐI CHỔ RB0 VỚI 1S hì hì
    #int_ext
    void dem_xung() // dem xung vao RB0
    {
    so_xung++;
    }
    #INT_RTCC
    void tao_tre_1s()
    {
    set_timer0(0); //(????? tai sao so 0
    Counter_Timer0++; //?????
    if (Counter_Timer0 == 1840) //????????????????????
    {

    luxubu=0; //?????
    tan_so = so_xung; //( //vi sao so xung = tan so
    Counter_Timer0=0; // ?????
    so_xung=0; //?????
    TMR1ON=1; //?????

    }
    mấy ace giúp đỡ cho em với em biết viết chương trình với vẽ proteus hiển thị nhiêu đó thôi
    code em viết bằng CCS


    Mã:
    #include <16f877a.h>
    #device pic16f877a*=16adc=10
    #use delay(clock=4000000)
    #use fast_io(d)
    #use fast_io(e)
    #byte portd=0x08
    #bit rs=0x09.0
    #bit rw=0x09.1
    #bit e=0x09.2
    #bit rb0=0x06.0
    int16 luxubu=0; //:((
    int16 so_xung,tan_so,Counter_Timer0;
    int16 nghin,tram,chuc,dv;
    int16 u[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
    
    //====================================================================
    #int_ext
    void dem_xung() // dem xung vao RB0
    {
    so_xung++;
    }
    #INT_RTCC
    void tao_tre_1s()
    {
    set_timer0(0);                                  //:((????? tai sao so 0
    Counter_Timer0++;                        //?????
    if (Counter_Timer0 == 1840)       //????????????????????
    {
    
    luxubu=0;                             //?????
    tan_so = so_xung;                  //:(( //vi sao so xung = tan so
    Counter_Timer0=0;               // ?????
    so_xung=0;                          //?????
    TMR1ON=1;                      //?????
    
    }
    }
    //=========================================================================
    void ghi_ir()
    {
    e=1;rs=0;rw=0;e=0;
    delay_ms(3);
    }
    void ghi_dr()
    {
    e=1;rs=1;rw=0;e=0;
    delay_ms(3);
    }
    
    void main()
    {
    {set_tris_a(0b1);
    set_tris_d(0);
    set_tris_e(0b000);
    
    enable_interrupts(global);//khai bao ngat toan cuc
    enable_interrupts(int_ext);//khai bao su dung ngat ngoai RB0
    ext_int_edge (H_to_L);//sd ngat canh len/xuong
    
    enable_interrupts(INT_RTCC);  // Cho phep ngat tran TIMER
    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);  //dinh thoi//tai sao chia tan cho timer0 la so 2
    set_timer0(0); //??? tai sao set lai la so (0)
    
    //=========================LCD==========================
    portd=0x01;
    ghi_ir();
    portd=0x0c;
    ghi_ir();
    portd=0x38;// 2 dong
    ghi_ir();
    PORTD=0X80;
    GHI_IR();
    PORTD="T";
    GHI_DR();
    PORTD="a";
    GHI_DR();
    PORTD="n";
    GHI_DR();
    PORTD=" ";
    GHI_DR();
    PORTD="S";
    GHI_DR();
    PORTD="o";
    GHI_DR();
    PORTD=":";
    GHI_DR();   
    }
    
    while(1)
    {
    if(luxubu) //???????????????????
    {
    //===================hien thi LCD===============
    nghin=tan_so/1000;
    tram=(tan_so/100)%10;
    chuc=(tan_so/10)%10;
    dv=tan_so%10;
    portd=0x87;
    ghi_ir();
    portd=u[nghin];
    ghi_dr();
    portd=u[tram];
    ghi_dr();
    portd=u[chuc];
    ghi_dr();
    portd=u[dv];
    ghi_dr();
    portd="H";
    ghi_dr();
    portd="z";
    ghi_dr();
    }
    }
    }
    [IMG]http://*************/attachments/70104/[/IMG]

 

 
Trang 5 của 5 Đầu tiênĐầu tiên ... 345

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 11:47 AM. Diễn đàn sử dụng vBulletin® Phiên bản 4.2.5.
Bản quyền của 2018 vBulletin Solutions, Inc. Tất cả quyền được bảo lưu.
Ban quản trị không chịu trách nhiệm về nội dung do thành viên đăng.