Thông báo

Collapse
No announcement yet.

Cho hỏi về Led và Công tắc :D

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

  • Cho hỏi về Led và Công tắc :D

    Mình lập trình như thế này nhưng không hiểu sao nó không chạy

    DDRB |= ( 1 << PB5) | ( 1 << PB4); // PB4 và 5 nối ra 2 đèn Led
    DDRD &= ~( 1 << PD6) | ( 1 << PD7); // PD6 PD 7 nối ra hai công tắc
    PORTD |= ( 1 << PD6) | ( 1 << PD7);
    if (!(PORTD & (1<<PD6))) // Kiểm tra nếu công tắc được ấn
    {
    PORTB = ( 1<< PB5);
    }
    if (!(PIND & PD7))
    {
    PORTB |= (1<< PB4);
    }
    Có ai thấy lỗi ở đâu không chỉ cho mình cái, mình ngồi cả tuần mầy mò mà toàn lỗi hic hic

  • #2
    Bạn khai báo sử dụng thư viện nào vậy ? Nó có biết PD6 hay PD7 là cái gì không ?
    Đã cấu hình PORTD chứa button làm đầu vào mức cao chưa ?
    Bạn cho xem thông báo lỗi luôn đi.

    Comment


    • #3
      Nguyên văn bởi mataattane Xem bài viết
      Mình lập trình như thế này nhưng không hiểu sao nó không chạy

      DDRB |= ( 1 << PB5) | ( 1 << PB4); // PB4 và 5 nối ra 2 đèn Led
      DDRD &= ~( 1 << PD6) | ( 1 << PD7); // PD6 PD 7 nối ra hai công tắc
      PORTD |= ( 1 << PD6) | ( 1 << PD7);
      if (!(PORTD & (1<<PD6))) // Kiểm tra nếu công tắc được ấn
      {
      PORTB = ( 1<< PB5);
      }
      if (!(PIND & PD7))
      {
      PORTB |= (1<< PB4);
      }
      Có ai thấy lỗi ở đâu không chỉ cho mình cái, mình ngồi cả tuần mầy mò mà toàn lỗi hic hic
      Sao nhiều người mới học toàn làm những cái rắc rối linh tinh thêm vậy ??? Bạn dùng trình dịch nào ???

      Viết kiểu đơn giản thế này có dễ hiểu hơn không :
      DDRB = 0b00110000; // PB5, PB4 output ( output là 1 , input là 0 )

      DDRD =0b00111111; // PD7, PD6 input

      ............................
      if(!PIND.6) { PORTB.5 =1; }
      if(!PIND.7) {PORTB.4=1;}

      ---- Cứ thế mà diễn thôi ( bạn dùng trình dịch nào vì mỗi cái trình dịch sử dụng tên lệnh khác nhau ... còn cú pháp cơ bản chỉ có thế !

      Comment


      • #4
        Giống như đi thi đạt giải quốc tế nhưng không đậu ĐH
        Cài đặt Input nhớ phải treo trở, nếu không button mất tác dụng.

        Comment


        • #5
          Nguyên văn bởi mataattane Xem bài viết
          Mình lập trình như thế này nhưng không hiểu sao nó không chạy

          DDRB |= ( 1 << PB5) | ( 1 << PB4); // PB4 và 5 nối ra 2 đèn Led
          DDRD &= ~( 1 << PD6) | ( 1 << PD7); // PD6 PD 7 nối ra hai công tắc
          PORTD |= ( 1 << PD6) | ( 1 << PD7);
          if (!(PORTD & (1<<PD6))) // Kiểm tra nếu công tắc được ấn
          {
          PORTB = ( 1<< PB5);
          }
          if (!(PIND & PD7))
          {
          PORTB |= (1<< PB4);
          }
          Có ai thấy lỗi ở đâu không chỉ cho mình cái, mình ngồi cả tuần mầy mò mà toàn lỗi hic hic
          Bạn đọc vào mà dùng Port nó ko chạy đâu. Bạn chuyển sang PIN xem nó có chạy ko.
          AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
          Xem thêm tại Online Store ---> Click here
          Mob: 0982.083.106

          Comment


          • #6
            Mình thử dùng cả PIN và PORD ở code trên còn gì Mình dùng Winavr với AVR STUDIO
            Thì tại mình dùng cái trình dịch này nên phải viết code theo nó mình làm thử nhiều lần cả với PIN và PORT đều không chạy hic hic

            Comment


            • #7
              Chắc là bạn phải chuyển qua CV mà dùng thôi, AVRStudio mình lập trình và biên dịch nó có thèm chạy đâu.

              Comment


              • #8
                Bác thử xem lại câu lệnh này hộ em :if (!(PIND & PD7)) và đổi thử về thành if(!(PIND&(1<<PD7))) xem có dc ko

                Comment


                • #9
                  Chắc là tại bạn dùng PORT để kiểm tra đầu vào thay cho PIN rồi, chứ mình làm với WinAVR trên AVR Studio ngon lành mà, mấy cái kiểm tra button này làm lâu rồi .
                  Mình thấy nếu mới học thì học bằng CodeVision cũng hay, nhg lâu ngày đâm ra phụ thuộc nó lắm, chả nhớ hết được thanh ghi đâu. Sau này làm sâu hơn với AVR lại phải đi ngó lại thanh ghi khổ. Tốt nhất là học luôn WinAVR + AVR Studio đi vì trên mạng nhiều ứng dụng người ta viết bằng WinAVR, mình ứng dụng code đó nhanh hơn.
                  Câu lệnh:
                  if (!(PORTD & (1<<PD6))) nên đổi thành
                  if (!(PIND & (1<<PD6))) thì đúng hơn

                  Comment


                  • #10
                    Thanks các bác reply để tí nữa em về nhà thử xem thế nào.. Em mới học nên nhiều khi phải thử đi thử lại. Có gì em sẽ hỏi thêm các bác

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    • Ng.Phuong.5
                      Khi in lỗ khoan ra pdf ở Orcad 9.2
                      bởi Ng.Phuong.5
                      Khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau.
                      Không biết có ai sửa được vấn đề này không ạ? Hay đây là mặc định của orcad 9.2 rồi ạ ?
                      Các cách em xem trên diễn đàn thử rồi nhưng không được ạ...
                      hôm nay, 19:47
                    • Ng.Phuong.5
                      Khi in lỗ khoan ra pdf ở Orcad 9.2
                      bởi Ng.Phuong.5
                      Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
                      Không biết...
                      hôm nay, 19:45
                    • Ng.Phuong.5
                      Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
                      bởi Ng.Phuong.5
                      Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
                      Không biết...
                      hôm nay, 19:45
                    • Ng.Phuong.5
                      Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
                      bởi Ng.Phuong.5
                      Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
                      Mấy con...
                      hôm nay, 19:44
                    • viettinh
                      Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                      bởi viettinh
                      Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
                      Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
                      hôm nay, 18:12
                    • nguyendinhvan
                      Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                      bởi nguyendinhvan
                      Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
                      Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
                      Cách đơn giản...
                      hôm nay, 00:04
                    • Ng.Phuong.5
                      Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
                      bởi Ng.Phuong.5
                      Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
                      Mấy con...
                      Hôm qua, 22:44
                    • mèomướp
                      Trả lời cho Sửa bộ nguồn DC 60V 45A
                      bởi mèomướp
                      Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
                      Hôm qua, 19:02
                    • tuyennhan
                      Trả lời cho Sửa bộ nguồn DC 60V 45A
                      bởi tuyennhan
                      Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
                      Hôm qua, 15:43
                    • tuyennhan
                      Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                      bởi tuyennhan
                      Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
                      Hôm qua, 15:28
                    Đang tải...
                    X