PIC Vietnam

Go Back   PIC Vietnam > namqn

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Conversation Between namqn and dandantran
Showing Visitor Messages 1 to 1 of 1
  1. dandantran
    22-02-2013 10:59 AM
    dandantran
    chào a! e vừa lập trình con pic 12f629 mà e có dùng chân số 4(MCLR) làm nút bấm và e khaoi báo là:
    #FUSES NOMCLR //Master Clear pin used for I/O
    Mạch của e điều khiển moto 12v khi e để mạch lại gần moto thì chạy được thời gian thì tự tắt, thời gian này không cố định. Còn khi để xa mô tơ thì mạch hoạt động ổn định. E nghĩ mạch bị nhiểu nhưng khi e lôi hết linh kiện ra lấy tua vít chạm vào chân (-) hoặc bất cứ chân nào của ic thì nó cũng tắt.
    A coi giúp e, code của e có bị lối gì không hoặc khai báo co bi lôi gì không, e cảm ơn nhiều! e bí quá
    Đặc biệt là e đổi chân nút bấm sang chân khác thì lấy tua vit cham vào chân (-) thì không tắt.
    #include <12F629.h>

    #FUSES NOWDT //No Watch Dog Timer
    #FUSES INTRC_IO //Internal RC Osc, no CLKOUT
    #FUSES CPD //Data EEPROM Code Protected
    #FUSES PROTECT //Code protected from reads
    #FUSES NOMCLR //Master Clear pin used for I/O
    #FUSES PUT //Power Up Timer
    #FUSES BROWNOUT //Reset when brownout detected
    #FUSES BANDGAP_HIGH
    #use delay(clock=4000000)
    int1 value_old_1 =1; // xung o chan so 4
    int1 value_new_1;
    int8 mode = 0;
    int1 on_off= 0; // start/stop programe
    int8 role_high =0;
    int8 role_low =0;
    int8 count_time_low = 0;
    int8 count_time_high = 0;
    int1 role_status =0;
    int8 start =0;
    #int_TIMER1
    void TIMER1_isr(void)
    {
    // kiem tra start_stop
    value_new_1 =input(PIN_A3); // chan 4 - chan on_off
    if((value_old_1 ==0)&&(value_new_1==0)){ // muc logic 0
    if(start<20){ // starting/stopping if holding button during 1 second
    start++;
    if(start > 15) output_high(PIN_A0); // bip
    }
    else{

    if(on_off==1){
    on_off =0;
    mode = 0;
    start =0;
    output_low(PIN_A0); // stop bip
    }

    }
    }
    else if((value_new_1==0)&&(on_off==0)){
    on_off =1;
    mode =1;
    start =0;
    output_low(PIN_A0); // stop bip
    }
    else start=0;

    // chuyen mode
    if(on_off){
    count_time_low++;
    if((value_old_1 ==1)&&(value_new_1==0)){ // canh xuong
    output_high(PIN_A0); // bip
    mode++;
    if(mode==5)
    mode =1;
    }
    else{
    if(start<16) output_low(PIN_A0); // stop bip
    }
    if(count_time_low == 201){ // turn off untill 20 minutes
    count_time_high++;
    count_time_low = 0;
    }
    if(count_time_high == 91){
    mode =0;
    }
    }

    // increase role value

    if(on_off==1){
    role_low++;
    if(role_low ==100){
    role_high++;
    role_low =0;
    }
    if(role_high==9){
    if(role_status ==0)
    role_status =1;
    else
    role_status =0;
    role_high =0;
    }
    }

    value_old_1 = value_new_1;// luu gia tri value3
    }



    void main()
    {
    set_tris_a(0x08);
    output_a(0x00);
    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
    setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
    setup_comparator(NC_NC);
    setup_vref(FALSE);
    enable_interrupts(INT_TIMER1);
    enable_interrupts(GLOBAL);

    // TODO: USER CODE!!
    while(1){
    start1: while(on_off ==0){
    role_low =0;
    role_high =0;
    role_status =0;
    count_time_low = 0;
    count_time_high = 0;
    output_low(PIN_A4); // role 1
    output_low(PIN_A2); // role 2
    output_low(PIN_A5); // motor
    output_low(PIN_A1);// den
    }
    if(mode ==0){
    on_off =0;
    goto start1;
    }
    else{
    if(role_status){
    output_low(PIN_A4);// role 1
    output_high(PIN_A2);//role 2
    }
    else{
    output_high(PIN_A4);// role 1
    output_low(PIN_A2);//role 2
    }
    }
    if(mode==1){
    output_high(PIN_A1); //den
    }
    else if(mode ==2){
    output_high(PIN_A5); // motor
    output_low(PIN_A1); // den
    }
    else if(mode ==3){
    output_high(PIN_A5); // motor
    output_high(PIN_A1); // den
    }
    else if(mode ==4){
    output_low(PIN_A5); // motor
    output_low(PIN_A1);// den
    }
    }

    }

Múi giờ GMT. Hiện tại là 04:47 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam