Thông báo

Collapse
No announcement yet.

Các bác giúp em về nhận dữ liệu usart cho AVR

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

  • Các bác giúp em về nhận dữ liệu usart cho AVR

    Chào các bác em moi tìm hiểu về AVR nhờ các bác chỉ giáo cho em với a ! em muốn kích hoạt chế độ nhận cho atmega 16 qua max485 và khi nhận rồi thì xuất dữ liệu ra PORTC .nhờ các bác chỉ giáo ạ ! có thể thi cho e xin 1 doạn code đơn giản xuat dữ liệu ra cho nhấp nháy led chẳng hạn ! em dung codevision các bác nhá ! em cảm ơn ạ !

  • #2
    Nguyên văn bởi kieunamthanh Xem bài viết
    Chào các bác em moi tìm hiểu về AVR nhờ các bác chỉ giáo cho em với a ! em muốn kích hoạt chế độ nhận cho atmega 16 qua max485 và khi nhận rồi thì xuất dữ liệu ra PORTC .nhờ các bác chỉ giáo ạ ! có thể thi cho e xin 1 doạn code đơn giản xuat dữ liệu ra cho nhấp nháy led chẳng hạn ! em dung codevision các bác nhá ! em cảm ơn ạ !
    Bài 5 - Giao tiếp UART

    Comment


    • #3
      Chào bạn kieunamthanh
      Đây là code cho atmega8 chạy thanh anh 8MHZ nhé.

      // USART Mode: Asynchronous
      // USART Baud Rate: 9600

      Khi nhận ký tự là a thì sẽ đảo trạng thái của cổng C.
      Bạn xem code có chạy được không, thì mình hướng dẫn trên mạch thật cho bạn!

      /************************************************** **
      Chip type : ATmega8
      Program type : Application
      AVR Core Clock frequency: 12.000000 MHz
      Memory model : Small
      External RAM size : 0
      Data Stack size : 256
      ************************************************** ***/

      #include <mega8.h>

      // USART Receiver interrupt service routine
      interrupt [USART_RXC] void usart_rx_isr(void)
      {
      char status,data;
      status=UCSRA;
      data=UDR;
      if(data=='a') // Nhận được ký tự là a
      PORTC = ~PORTC; // đảo trạng trái trên cổng C

      }

      // Standard Input/Output functions
      #include <stdio.h>

      // Declare your global variables here

      void main(void)
      {

      PORTB=0x00;
      DDRB=0x00;

      PORTC=0x00;
      DDRC=0xFF;

      PORTD=0x00;
      DDRD=0x00;

      // USART initialization
      // Communication Parameters: 8 Data, 1 Stop, No Parity
      // USART Receiver: On
      // USART Transmitter: Off
      // USART Mode: Asynchronous
      // USART Baud Rate: 9600
      UCSRA=0x00;
      UCSRB=0x90;
      UCSRC=0x86;
      UBRRH=0x00;
      UBRRL=0x4D;

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

      while (1)
      {
      // Place your code here

      }
      }

      Comment


      • #4
        Chào bạn kieunamthanh
        Đây là code cho atmega8 chạy thanh anh 12MHZ nhé.

        // USART Mode: Asynchronous
        // USART Baud Rate: 9600

        Khi nhận ký tự là a thì sẽ đảo trạng thái của cổng C.
        Bạn xem code có chạy được không, thì mình hướng dẫn trên mạch thật cho bạn!

        /************************************************** **
        Chip type : ATmega8
        Program type : Application
        AVR Core Clock frequency: 12.000000 MHz
        Memory model : Small
        External RAM size : 0
        Data Stack size : 256
        ************************************************** ***/

        #include <mega8.h>

        // USART Receiver interrupt service routine
        interrupt [USART_RXC] void usart_rx_isr(void)
        {
        char status,data;
        status=UCSRA;
        data=UDR;
        if(data=='a') // Nhận được ký tự là a
        PORTC = ~PORTC; // đảo trạng trái trên cổng C

        }

        // Standard Input/Output functions
        #include <stdio.h>

        // Declare your global variables here

        void main(void)
        {

        PORTB=0x00;
        DDRB=0x00;

        PORTC=0x00;
        DDRC=0xFF;

        PORTD=0x00;
        DDRD=0x00;

        // USART initialization
        // Communication Parameters: 8 Data, 1 Stop, No Parity
        // USART Receiver: On
        // USART Transmitter: Off
        // USART Mode: Asynchronous
        // USART Baud Rate: 9600
        UCSRA=0x00;
        UCSRB=0x90;
        UCSRC=0x86;
        UBRRH=0x00;
        UBRRL=0x4D;

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

        while (1)
        {
        // Place your code here

        }
        }

        Comment


        • #5
          cảm ơn anh thực ra la em đang đinh làm cái mạch nhập giá trị từ máy tính (ví du ta ấn số 1 trên bàn phím máy tính thì máy tinh sẽ gửi xuồng vkd avr và hiển thị ra led 7 đoạn la số 1 thông qua 1 con ghi dich ) nói thât với bác la e chua bít làm cái này chưa bit clk chốt như nào data truyen ra như thế nào để điều hiên thanh ghi dịche vẽ 1 cái mạch nhờ bác xem giúp và cho e xin đoạn code điều khiển nếu đcj e xin cảm ơn ! bác nhiu ! em k biết gửi file đính kem nên bác co thể cho em xin email dc ak ?

          Comment


          • #6
            Nguyên văn bởi kieunamthanh Xem bài viết
            cảm ơn anh thực ra la em đang đinh làm cái mạch nhập giá trị từ máy tính (ví du ta ấn số 1 trên bàn phím máy tính thì máy tinh sẽ gửi xuồng vkd avr và hiển thị ra led 7 đoạn la số 1 thông qua 1 con ghi dich ) nói thât với bác la e chua bít làm cái này chưa bit clk chốt như nào data truyen ra như thế nào để điều hiên thanh ghi dịche vẽ 1 cái mạch nhờ bác xem giúp và cho e xin đoạn code điều khiển nếu đcj e xin cảm ơn ! bác nhiu ! em k biết gửi file đính kem nên bác co thể cho em xin email dc ak ?
            Mail minh nhe! Minh san long giup ban! alumen86@gmail.com

            Comment


            • #7
              xin chân thanh cảm ơn sư giup đỡ nhiệt tinh của a ! em gửi email cho anh rui đó ak !

              Comment


              • #8
                đại ca ơi em chưa nhận được trả lơi email cua huynnh

                Comment


                • #9
                  anh ơi sao không thây hồi âm của anh vậy?

                  Comment


                  • #10
                    anh ơi em copy cai chuong trình của a khi biên dich thi nó báo lồi này ở dòng 26 đó ánh a chỉ em tiếp đi a alumen86Click image for larger version

Name:	Untitled.jpg
Views:	1
Size:	62.0 KB
ID:	1389113 ! em cảm ơn anh !

                    Comment


                    • #11
                      Đó là warning thôi nhé!
                      Không phải nỗi đâu.
                      Mà bạn đang ở đâu? Có ở HN không?

                      Comment


                      • #12
                        Làm việc với usart thì chú ý cái ngắt timer khác đè vào nó. Ngắt nhanh quá thì e ấy dễ dở quẻ.


                        Add: 97 Quán Nam - Lê Chân - Hải Phòng.
                        Tel: 031 518648 Phone: 0904 283 505

                        Comment


                        • #13
                          e co e o hà nội a ak !

                          Comment

                          Về tác giả

                          Collapse

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

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

                          Collapse

                          Đang tải...
                          X