Thông báo

Collapse
No announcement yet.

Các bác giúp em 1 tí

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

  • Các bác giúp em 1 tí

    Em có đoạn code dùng để dùng để test 2 cai cổng nối tiếp của con ATmega 128 nhưng khi demo(dung proteus) thi không thấy cổng F hiện ra gi cả. Cấ bác chỉ giùm em chỗ sai với
    Đoạn code của em như sau:
    #define FCLK 4000000
    #define BAUD 9600
    #define UBRR ((long) FCLK/(16*BAUD)-1)
    #define RXB8 1
    #define TXB8 0
    #define UPE 2
    #define OVR 3
    #define FE 4
    #define UDRE 5
    #define RXC 7
    #define FRAMING_ERROR (1<<FE)
    #define PARITY_ERROR (1<<UPE)
    #define DATA_OVERRUN (1<<OVR)
    #define DATA_REGISTER_EMPTY (1<<UDRE)
    #define RX_COMPLETE (1<<RXC)
    #include<mega128.h>
    #include <stdio.h>
    void put(int c){
    while ((UCSR0A & DATA_REGISTER_EMPTY)==0);
    UDR0=c;
    }
    int get(){
    while ((UCSR0A & RX_COMPLETE) == 0) {};
    return UDR1;
    }
    void main ()
    {
    int i,j;
    int temp,temp1;
    DDRF=0xFF;
    DDRB=0x00;
    PORTB=0x00;
    UCSR0A=0x00;
    UCSR0B=0x08;
    UCSR0C=0x06;
    UBRR0H=UBRR >> 8;
    UBRR0L=UBRR & 0xFF;
    UCSR1A=0x00;
    UCSR1B=0x08;
    UCSR1C=0x06;
    UBRR1H=UBRR >> 8;
    UBRR1L=UBRR & 0xFF;
    temp1=0x00;
    while(1){
    temp=PINB;
    put(temp);
    temp1=get();
    for(i=0;i<300;i++)for(j=0;j<300;j++);
    PORTF=temp1+0x09;
    for(i=0;i<300;i++)for(j=0;j<300;j++);
    }
    }

  • #2
    mình cũng ko biết nhiều về Proteus nhưng nghe các cao thủ nói thì hình như nó mô phỏng ko chuẩn đâu
    bạn nên test băng mạch thật

    Comment


    • #3
      các bác ơi cho em hỏi: làm thế nào để nhận tín hiệu từ nút bấm vào PORTC.1 của ATmega16L?
      giúp em với em đang rất cần

      Comment


      • #4
        Nguyên văn bởi sugus Xem bài viết
        các bác ơi cho em hỏi: làm thế nào để nhận tín hiệu từ nút bấm vào PORTC.1 của ATmega16L?
        giúp em với em đang rất cần
        Khai báo PORCT.1 là input/pullup
        Dùng lệnh PINC.1 để đọc trạng thái 0, 1 vào.

        Comment


        • #5
          - Mô phỏng proteus, hmm theo tôi là rất chuẩn. Tuy nhiên đối với những chương trình chạy với clock cao thì nó không theo được (chuyện này là tất nhiên vì dù sao nó cũng là phần mềm), còn đối với những chương trình thông thường thì chạy vô tư, đặc biệt sử dụng ocsillo của nó để xem xung cũng rất tốt.

          - Mô phỏng atmega128 trên proteus có một điểm không biết là đúng hay sai, đó là những dòng atmega64, 128 có fuse M103. Khi mới bóc tem, fuse này thường set do mặc định, atmega128 được thiết lập RAM space tương thích với atmega103.
          Việc set fuse này đồng nghĩa với việc atmega128 default sẽ chỉ có một UART, các port G,E,F không có được các chức năng extend. Bạn có thể kiểm tra trong datasheet.
          Mồm chó vó ngựa

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X