Thông báo

Collapse
No announcement yet.

giúp khai báo phím nhấn trong codevision cho avr32

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

  • giúp khai báo phím nhấn trong codevision cho avr32

    Mình cho 4 phím nhấn up,down,selec,exit ở 4 chân pinb.3->pinb.6. mình cũng đã khai báo các chân này trong codevisionWizard là các ngõ vào có điện trở kéo lên.
    trong chương trình main() mình cũng khai báo PORTB=0XFF( có điện trở kéo lên). DDRB=0X07( các chân tử B.7-->B.3 là các ngõ vào).

    không biết còn thiếu gì nữa không mà chạy trong mô phỏng protues thì nhấ phím không thấy thay đổi gì. chương trình con nhấn phím vẫn chạy đúng.

    khi mình khai báo PORTB=0XEF(PINB.4=0(khong có điện trở kéo lên), = phím down=0(phím nhấn tác động mức thấp)) thì có sự thay đổi của phím nhấn(tự động, không tác động dc phím bên ngoài)==>> chương trình con nhấn phím chạy đúng.

    pro nào giúp mình giải quyết vấn đề này với. Thanks nhiều

  • #2
    Bên này thuộc 8051 mà ông bạn lại mang avr qua đây. Tất cả các nút nhấn nên có điện trở kéo lên, trong mô phỏng thì chỉ cần kéo điện trở trong chíp là đc rồi, nhưng khi làm mạch thật cần thêm điện trở 4k7 - 10k nữa.
    Bạn đưa code lên cho mọi người xem, nói thế khó hình dung ra lắm.
    Nhận làm mạch, ĐAMH sử dụng vđk Pic & AVR tại tp.HCM
    Liên hệ sđt: 0902.808.371

    Comment


    • #3
      giúp khai báo phím nhấn trong codevision cho avr32

      hehehe. mình lộn tiệm. hèn gì vào avr không tìm thấy bài của mình đâu cả. sorry ! nhưng tiện đây bạn giúp mình luôn nhé.

      đây là code của phím nhấn. mình thử trong mô phỏng protues nhưng cũng không chạy như mình đã nói ở trên. ví dụ như khai báo lại PORTB.4=0(nút down =0(tác động)) thì chương trình nhận được nút down. còn nếu khai báo PORTB.3-->PORTB.7=1(có điện trở kéo lên); DDRB.3-->DDRB.7=0(ngõ vào) thì khi nhấn phím(trong mô phỏng) không có tác động gì. phím nhấn được nối xuống mass mà. thanks bạn nhiều!!!!!!!!!!!


      for( ; ; )
      {
      if(!up)
      {
      delay_ms(1);
      if(!up) return 1;
      }
      if(!down)
      {
      delay_ms(1);
      if(!down) return 2;
      }
      if(!selec)
      {
      delay_ms(1);
      if(!selec) return 3;
      }
      if(!exit)
      {
      delay_ms(1);
      if(!exit) return 4;
      }
      if(!pNNsearch)
      {
      delay_ms(1);
      if(!pNNsearch) return 5;
      }
      if(t>0)
      {
      if(--t==0) return 0;
      }
      delay_ms(1);
      }
      }

      Comment


      • #4
        chả hiểu gọi return ở đây có tác dụng gì?
        Website chính thức đổi địa chỉ website thành
        Mời các bạn ghé thăm !!!

        Comment


        • #5
          nếu dùng cho việc nhấn nút bạn chỉ cần khai báo DDRB=0x00; để báo cho nó biết mình dùng ngõ vào
          sau đó code cho việc nhấn nút thôi VD:
          if(PINB.0==0)
          {
          delay_ms(20);
          //làm gì thì làm
          while(PINB==0);
          }
          Never forget who you are!

          Comment


          • #6
            Nguyên văn bởi mast090 Xem bài viết
            chả hiểu gọi return ở đây có tác dụng gì?
            ư

            khi mình nhấn phím nào thì nó trả vể một con số tương ứng khi mình gọi phím nhấn. chương trình gọi sẽ biết được mình nhấn phím nào dựa vào đó để xử lý theo phím đó.

            ví dụ:

            i=phim_nhan(3);
            if(i==1) tam++;
            if(i==2) tam --;
            if(i==3) .......;
            ...........
            mục đích sử dụng return là vậy đóa bạn ah

            Comment


            • #7
              Nguyên văn bởi nhquangdt3k5 Xem bài viết
              nếu dùng cho việc nhấn nút bạn chỉ cần khai báo DDRB=0x00; để báo cho nó biết mình dùng ngõ vào
              sau đó code cho việc nhấn nút thôi VD:
              if(PINB.0==0)
              {
              delay_ms(20);
              //làm gì thì làm
              while(PINB==0);
              }
              thì mình cũng đã khai báo ngõ vào là

              #define up pinb.3
              #define down pinb.4
              ........................

              void main(void)
              PORTB 0XFF(điện trở kéo lên)
              DDRB 0X07(00000111) 3 chan B0--->B2 là ngõ ra. B3->B7 là ngõ vào rồi. nhưng chương trình mô phỏng vẫn không nhận được phím khi nhấn.

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...
              X