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}

Lập trình AVR ATMEGA

Thảo luận trong 'Thảo luận môn học' bắt đầu bởi quochung1313, 4 Tháng mười 2008.

  1. quochung1313 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    bạn nào có thể giúp mình về lập trình C cho atmega32 được không, mình đang gặp khó khăn trong việc viết chương trình quét phím ma trận 4X4 và hiển thị ra LCD. email của mình là quochung1313@yahoo.com, cám ơn các bạn trước nha!!!!
  2. khoahoctre Giảng Viên

    Số bài viết: 451
    Đã được thích: 7
    Điểm thành tích: 16
  3. hoanle Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    hic..khi dùng asembler để quét led ma trận thì co thể dùng cờ tràn (overflag) và hàm dịch trái hay phài có cờ tràn nhưng ko biết trong c có sử dụng đc không và dùng như thế nào nữa.
    thêm 1 xíu nữa : khi chuyển đổi ADC thì tìn hiệu sau khi chuyển sẽ thành tín hiệu digital nhưng 10 bít.trog khi mình muốn xuất ra port [IMG] nhưng chỉ có 8 bit thui..có ai giúp mình với không..
  4. thanlan New Member

    Số bài viết: 560
    Đã được thích: 0
    Điểm thành tích: 0
    trong C cũng có hàm dịch trái dịch phải , sử dụng toán tử "<<" và ">>" để dịch trái và dịch phải.
    Đây là 1 subroutine quét phím có sử dụng toán tử dịch bit, mình viết trong KeilC , bạn có thể tham khảo.

    //-----------------------------------------------------------------------------------//
    // chuong trinh quet phim //
    //-----------------------------------------------------------------------------------//
    char keypadscan()
    {
    char i,j,tam;
    char keypad[4][4]=
    {
    7, 8, 9, 0,
    4, 5, 6, 0,
    1, 2, 3, 0,
    0, 0, 0, 0,
    };
    while(1)
    {
    for (i=0;i<=3;i++)
    {
    P2 = 0xff & ~(1<<i);
    for (j=0;j<=3;j++)
    {
    tam = P2 & ( 16<<j);
    if (tam==0)
    {
    return(keypad[j]);
    }
    }
    }
    }
    }

    - Còn về vấn đề adc , bạn có thể dụng thêm 2 chân của port kế , hoặc truyền 2 lần (bên nhận bạn cũng phải lập trình để chúng hiểu nhau)
  5. quochung1313 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Port B của AVR có điện trở kéo lên bên trong, làm cách nào mình có thể kéo nó xuống đây. Thầy ơi, các bạn ơi, giúp em với!!!!
  6. hoanle Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    nếu bạn viết bằng codevision thì việc chọn port B làm port in được khai báo khi bạn tạo project mới (nó nằm trong codewizard avr->port).nếu bạn chọn Port in , chữ "P" là pull-up tức là có điện trở treo , nếu bạn chọn "T" là Tri_state..còn nếu bạn muốn nhận tín hiệu từ Port thì phải ghi là PINx (còn out là PORTx)..chúc thành công. [IMG]
  7. thanlan New Member

    Số bài viết: 560
    Đã được thích: 0
    Điểm thành tích: 0
    <div class='quotetop'>QUOTE (quochung1313 @ Oct 9 2008, 10:19 PM) <{POST_SNAPBACK}></div><div class='quotemain'>Port B của AVR có điện trở kéo lên bên trong, làm cách nào mình có thể kéo nó xuống đây. Thầy ơi, các bạn ơi, giúp em với!!!![/b][/quote]

    Bạn kéo xuống làm gì ? hình như không có khái niệm kéo xuống trong avr , nó chỉ chấp nhận kéo lên hoặc bỏ lửng lơ , còn nếu muốn kéo xuống thì dùng điện trở thanh kéo xuống ở bên ngoài thôi, ka ka, chưa thấy ứng dụng nào phải kéo xuống cả.
  8. hoanle Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Than lan nói đúng rùi đó .việc khai báo cũng không có tác dụng gì nhiều.khi bạn khai báo với Port là IN+ pull-up. nhưng bạn cấp vào Port mức "0" thì vi điều khiển vẫn hiểu là mức "0" mà thôi.

Chia sẻ trang này