1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

đề thi+ bài giải môn thí nghiệm vi điều khiển

Thảo luận trong 'Trao đổi kiến thức' bắt đầu bởi letanbaospkt, 2 Tháng mười hai 2009.

  1. letanbaospkt New Member

    Số bài viết: 15
    Đã được thích: 0
    Điểm thành tích: 0
    ĐÂY LÀ CHƯƠNG TRÌNH MÌNH VIẾT ĐỂ TỰ ĂN NĂN VÌ SÁNG NAY THI KHÔNG LÀM ĐƯỢC (RỚT,HUHU). CŨNG LÀ MONG CÁC BẠN CƠ ĐIỆN TỬ 061111 CHƯA THI CÓ THỂ THAM KHẢO VÀ PHÁT TRIỂN :011:

    viết chương trình điều khiển 16 leds dugn 5 nút nhấn
    nhấn 1 16 leds chớp tắt xen kẽ 5 lần
    nhấn 2 16 leds sáng dần, tắt dần từ phải sang trái 5 lần
    nhấn 3 16 leds sáng dần tắt dần từ trái sang phải 5 lần
    nhãn 4 1 led sáng dịch chuyển từ trái qua phải 5 lần
    nhấn 5 1 led sáng dịch chuyển từ phải qua trái 5 lần
    DƯỚI ĐÂY LÀ KẾT NỐI PHẦN CỨNG

    [IMG]

    VÀ ĐÂY LÀ CODE MÌNH VỪA VIẾT XONG


    Chip type : ATmega32
    Program type : Application
    Clock frequency : 16.000000 MHz
    Memory model : Small
    External SRAM size : 0
    Data Stack size : 512
    *****************************************************/

    #include <mega32.h>
    #include <delay.h>
    unsigned char i,j,k,m,led[16];

    void xuat(void)
    {
    PORTA= led[0]*1+led[1]*2+led[2]*4+led[3]*8+led[4]*16+led[5]*32+led[6]*64+led[7]*128;
    PORTB= led[8]*1+led[9]*2+led[10]*4+led[11]*8+led[12]*16+led[13]*32+led[14]*64+led[15]*128;
    }
    // External Interrupt 0 service routine
    interrupt [EXT_INT0] void ext_int0_isr(void)
    {
    if(PIND.0==0)
    {k=1;
    for (i=0;i<16;i++)
    {

    led=0;

    }
    led[0]=1;led[1]=0;led[2]=1;led[3]=0;led[4]=1;led[5]=0;led[6]=1;led[7]=0;
    led[8]=1;led[9]=0;led[10]=1;led[11]=0;led[12]=1;led[13]=0;led[14]=1;led[15]=0;

    }
    else if(PIND.1==0)
    {k=2;
    // led[0]=0;led[1]=0;led[2]=0;led[3]=0;led[4]=0;led[5]=0;led[6]=0;led[7]=0;
    // led[8]=0;led[9]=0;led[10]=0;led[11]=0;led[12]=0;led[13]=0;led[14]=0;led[15]=0;
    for (i=0;i<16;i++)
    {
    led=0;
    }
    }
    else if(PIND.4==0)
    { k=3;
    //led[0]=0;led[1]=0;led[2]=0;led[3]=0;led[4]=0;led[5]=0;led[6]=0;led[7]=0;
    // led[8]=0;led[9]=0;led[10]=0;led[11]=0;led[12]=0;led[13]=0;led[14]=0;led[15]=0;
    for (i=0;i<16;i++)
    {
    led=0;
    }
    }
    else if(PIND.5==0)
    { k=4;
    // led[0]=0;led[1]=0;led[2]=0;led[3]=0;led[4]=0;led[5]=0;led[6]=0;led[7]=0;
    //led[8]=0;led[9]=0;led[10]=0;led[11]=0;led[12]=0;led[13]=0;led[14]=0;led[15]=0;
    for (i=0;i<16;i++)
    {
    led=0;
    }
    }
    else if(PIND.6==0)
    { k=5;
    // led[0]=0;led[1]=0;led[2]=0;led[3]=0;led[4]=0;led[5]=0;led[6]=0;led[7]=0;
    //led[8]=0;led[9]=0;led[10]=0;led[11]=0;led[12]=0;led[13]=0;led[14]=0;led[15]=0;
    for (i=0;i<16;i++)
    {
    led=0;
    }
    }

    }


    ////////////
    // External Interrupt 1 service routine
    interrupt [EXT_INT1] void ext_int1_isr(void)
    {


    }

    // External Interrupt 2 service routine
    interrupt [EXT_INT2] void ext_int2_isr(void)
    {
    // Place your code here

    }

    // Declare your global variables here

    void main(void)
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port A initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTA=0x00;
    DDRA=0xFF;

    // Port B initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTB=0x00;
    DDRB=0xFF;

    // Port C initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTC=0x00;
    DDRC=0x00;

    // Port D initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P
    PORTD=0xFF;
    DDRD=0x00;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=FFh
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;


    // External Interrupt(s) initialization
    // INT0: On
    // INT0 Mode: Falling Edge
    // INT1: On
    // INT1 Mode: Falling Edge
    // INT2: On
    // INT2 Mode: Falling Edge
    GICR|=0xE0;
    MCUCR=0x0A;
    MCUCSR=0x00;
    GIFR=0xE0;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    // Global enable interrupts
    #asm("sei")

    while (1)
    {
    if (k==1)
    { for (j=0;j<11;j++)
    {
    {for(i=0;i<16;i++)
    {
    led^=1;
    }
    xuat();
    delay_ms(100);
    }
    k=8;
    }


    }
    else if(k==2)
    { for (j=0;j<5;j++)
    {
    for (i=16;i>0;i--) //sang dan phai -> trai
    {
    led[i-1] = 1;
    xuat();
    delay_ms(50);
    }
    for (i=16;i>0;i--) //tat dan phai ->trai
    {
    led[i-1] = 0;
    xuat();
    delay_ms(50);
    }
    k=8;
    }
    }
    else if(k==3)
    { for (j=0;j<5;j++)
    {
    for (i=0;i<16;i++) //sang dan trai ->phai
    {
    led = 1;
    xuat();
    delay_ms(50);
    }
    for (i=0;i<16;i++) //tat danTRAI ->PHAI
    {
    led = 0;
    xuat();
    delay_ms(50);
    }
    k=8;
    }
    }
    else if(k==4)
    { for (j=0;j<5;j++)
    {
    for (i=16;i>0;i--) //1 led chay trai-->phai
    {
    led[i-1] = 1;
    if(i>=0) led=0;
    xuat();

    delay_ms(50);
    led[0]=0;
    }
    k=8;}
    }
    else if (k==5)

    {

    for (j=0;j<5;j++)
    {
    for (i=0;i<=16;i++) //1 led chayphai -->trai
    {
    led = 1;
    if(i>0) led[i-1]=0;
    xuat();
    delay_ms(50);
    }
    k=8;
    }
    }
    };
    }
  2. golden.darkness New Member

    Số bài viết: 59
    Đã được thích: 0
    Điểm thành tích: 0
  3. hongphilong0511 New Member

    Số bài viết: 26
    Đã được thích: 0
    Điểm thành tích: 0
    Thử đi rồi biết chứ sao phải chờ ý kiến của người khác.:022:
  4. golden.darkness New Member

    Số bài viết: 59
    Đã được thích: 0
    Điểm thành tích: 0
  5. hongphilong0511 New Member

    Số bài viết: 26
    Đã được thích: 0
    Điểm thành tích: 0
  6. KN Servant. Servant.

    Số bài viết: 1,291
    Đã được thích: 3
    Điểm thành tích: 0
    Ok.
    Mai đến phiên minh lên dĩa.
    Chắc phải cẩn thận hơn.
    Cám ơn về đã lên tin thần cho anh em nha Bảo
    Góp ý tí nha:
    Thứ 1: Sao lại khai báo thêm INT1 và INT2 làm j?
    Thứ 2: Sao không bỏ mấy đoạn code thừa đi.
    Thanks
  7. thanh_tb New Member

    Số bài viết: 28
    Đã được thích: 0
    Điểm thành tích: 0
  8. KN Servant. Servant.

    Số bài viết: 1,291
    Đã được thích: 3
    Điểm thành tích: 0
    Có lẻ thi sớm nên cao thủ nhà ta khớp.
    Chúng ta đi sau sẽ cố gắng hơn (Chắc đề khó hơn)
    Cho quét led chắc die
    hihi
  9. letanbaospkt New Member

    Số bài viết: 15
    Đã được thích: 0
    Điểm thành tích: 0
  10. KN Servant. Servant.

    Số bài viết: 1,291
    Đã được thích: 3
    Điểm thành tích: 0
  11. tuananh784 New Member

    Số bài viết: 3
    Đã được thích: 0
    Điểm thành tích: 0
  12. tuananh784 New Member

    Số bài viết: 3
    Đã được thích: 0
    Điểm thành tích: 0
    bạn nào có tài liệu ôn thi cuối kì môn vi điều khiển của thầy cường post lên cho mình với cảm ơn các bạn trước

Chia sẻ trang này