Thông báo

Collapse
No announcement yet.

UART với Atmega644p , Atmega88p

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

  • UART với Atmega644p , Atmega88p

    Em chào các pro, e là mem mới, mới học AVR
    Em hiện đang tìm hiểu về UART dùng AVR và mô phỏng với Protus 7.8
    Em học trên hocavr.com và viết theo chuơng trình đối với Atmega32 và mô phỏng thành công. Nhưng khi viết lại cùng chuơng trình này đối với Atmega644p và Atmega88p thì mô phỏng không được. Về program thì ko có vấn đề vì cùng 1 chuơng trình, chỉ là đổi các setting của USART, mà e tìm mãi ko ra tại sao khi dùng vs 644p và 88p thì mô phỏng ko được, chắc do setting trong protus đối với Atmega644p và 88p khác, các pro có thể chỉ giáo e được ko ah. Em cám ơn.

    #include <avr/io.h>
    #include <avr/delay.h>
    #define FOSC 20000000//20MHz
    #define BAUD 9600//9600bps
    #define MYUBRR FOSC/16/BAUD-1

    void uart_putchar(unsigned char c);
    void uart_init(unsigned int ubrr){

    UBRRH=(unsigned char)(ubrr>>8);

    UBRRL=(unsigned char)ubrr;

    UCSRA=(0<<U2X);

    UCSRB=(1<<TXEN);

    UCSRC=(3<<UCSZ0);

    }

    int main(void){
    uart_init(MYUBRR);//USART setting
    while(1){
    for (char i=32;i<128;i++){
    uart_putchar(i);
    _delay_ms(100);
    }
    }
    }

    //chuong trinh con phat du lieu
    void uart_putchar(unsigned char c){
    while (bit_is_clear(UCSRA,UDRE)) {}; //cho den khi bit UDRE=1 moi thoat khoi while
    UDR=c;
    }

Về tác giả

Collapse

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

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

Collapse

Đang tải...
X