Thông báo

Collapse
No announcement yet.

Thắc mắc code I2C AVR?

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

  • Thắc mắc code I2C AVR?

    mấy pác cho em hỏi nếu thay đổi các hằng trong mã nhúng asm (#ám)thì mình có còn sử dụng được thư viện i2c không
    nếu theo như codevision cung cấp thì ta có ".equ __i2c_port=0x18(cổng)" còn .equ __sda_bit=3.equ __sda_bit=4 là cái gì nhỉ
    #asm

    .equ __i2c_port=0x18

    .equ __sda_bit=3

    .equ __scl_bit=4

    #endasm


    /* now you can include the I2C Functions */

    #include <mega16.h>
    #include <i2c.h>

    /* function declaration for delay_ms */
    #include <delay.h>

    #define EEPROM_BUS_ADDRESS 0xa0

    /* read a byte from the EEPROM */
    unsigned char eeprom_read(unsigned char address) {
    unsigned char data;
    i2c_start();
    i2c_write(EEPROM_BUS_ADDRESS);
    i2c_write(address);
    i2c_start();
    i2c_write(EEPROM_BUS_ADDRESS | 1);
    data=i2c_read(0);
    i2c_stop();
    return data;
    }

    /* write a byte to the EEPROM */
    void eeprom_write(unsigned char address, unsigned char data) {

    i2c_start();
    i2c_write(EEPROM_BUS_ADDRESS);
    i2c_write(address);
    i2c_write(data);
    i2c_stop();

    /* 10ms delay to complete the write operation */
    delay_ms(10);
    }


    void main(void) {

    unsigned char i;

    DDRD = 0xff;
    PORTD = 0x00;

    delay_ms(1000);

    /* initialize the I2C bus */
    i2c_init();

    /* write the byte 55h at address AAh */
    eeprom_write(0xaa,0x55);

    /* read the byte from address AAh */
    i=eeprom_read(0xaa);
    PORTD = i;

    while (1); /* loop forever */
    }

  • #2
    Nguyên văn bởi suri Xem bài viết
    mấy pác cho em hỏi nếu thay đổi các hằng trong mã nhúng asm (#ám)thì mình có còn sử dụng được thư viện i2c không
    nếu theo như codevision cung cấp thì ta có ".equ __i2c_port=0x18(cổng)" còn .equ __sda_bit=3.equ __sda_bit=4 là cái gì nhỉ
    #asm

    .equ __i2c_port=0x18

    .equ __sda_bit=3

    .equ __scl_bit=4

    #endasm


    /* now you can include the I2C Functions */

    #include <mega16.h>
    #include <i2c.h>

    /* function declaration for delay_ms */
    #include <delay.h>

    #define EEPROM_BUS_ADDRESS 0xa0

    /* read a byte from the EEPROM */
    unsigned char eeprom_read(unsigned char address) {
    unsigned char data;
    i2c_start();
    i2c_write(EEPROM_BUS_ADDRESS);
    i2c_write(address);
    i2c_start();
    i2c_write(EEPROM_BUS_ADDRESS | 1);
    data=i2c_read(0);
    i2c_stop();
    return data;
    }

    /* write a byte to the EEPROM */
    void eeprom_write(unsigned char address, unsigned char data) {

    i2c_start();
    i2c_write(EEPROM_BUS_ADDRESS);
    i2c_write(address);
    i2c_write(data);
    i2c_stop();

    /* 10ms delay to complete the write operation */
    delay_ms(10);
    }


    void main(void) {

    unsigned char i;

    DDRD = 0xff;
    PORTD = 0x00;

    delay_ms(1000);

    /* initialize the I2C bus */
    i2c_init();

    /* write the byte 55h at address AAh */
    eeprom_write(0xaa,0x55);

    /* read the byte from address AAh */
    i=eeprom_read(0xaa);
    PORTD = i;

    while (1); /* loop forever */
    }
    Mình lâu không động đến avr có lẽ quên, nhưng mà thay đổi các hẳng trong khai báo #asm đấy có lẽ là được, cái đầu tiên dành cho địa chỉ của PORT, còn hai tham số sau là chân số mấy của port đó (ở đây là chân số 3 và chân số 4). Mình thấy là cùng lắm bạn cứ đổi code rồi test cái là biết ngay! Thêm nữa bạn đọc lại trong phần help của codevision hình như cũng có nói đấy!

    Comment


    • #3
      bây giờ em muốn sửa lại đoạn code
      #asm

      .equ __i2c_port=0x18

      .equ __sda_bit=3

      .equ __scl_bit=4

      #endasm
      bằng c thì sửa như thế nào các bác em muốn cho nó thuần c luôn chứ asm +c chương trình khó hiểu

      Comment


      • #4
        Nguyên văn bởi suri Xem bài viết
        bây giờ em muốn sửa lại đoạn code
        #asm

        .equ __i2c_port=0x18

        .equ __sda_bit=3

        .equ __scl_bit=4

        #endasm
        bằng c thì sửa như thế nào các bác em muốn cho nó thuần c luôn chứ asm +c chương trình khó hiểu
        thuần thị tự viết lấy hoặc dùng phần mềm khác . Dùng thư viện của nó làm chi ?
        Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

        Comment


        • #5
          anh nói zậy mà cũng nói viết lại thi được nhưng em muốn sài thư viện của nó nhưng hông có mã nhúng asm chứ viết lại toàn bộ thì cần gí mà hỏi chứ anh dậy cái này là mặc định khi cấu hình cho AVR à không thay đổi được à sao mà chán đúng là mấy thằng viết phần mền này nó bị tưng tửng hay sao ấy
          em muốn sửa lại đoạn asm trên ứng với c thì sao hả anh queduong anh là cao thủ mà chỉ cho em với em mới tập tành từ con 89 sang avr mà chủ yếu em viết bằng c mong anh giúp đỡ

          Comment


          • #6
            Nguyên văn bởi suri Xem bài viết
            anh nói zậy mà cũng nói viết lại thi được nhưng em muốn sài thư viện của nó nhưng hông có mã nhúng asm chứ viết lại toàn bộ thì cần gí mà hỏi chứ anh dậy cái này là mặc định khi cấu hình cho AVR à không thay đổi được à sao mà chán đúng là mấy thằng viết phần mền này nó bị tưng tửng hay sao ấy
            em muốn sửa lại đoạn asm trên ứng với c thì sao hả anh queduong anh là cao thủ mà chỉ cho em với em mới tập tành từ con 89 sang avr mà chủ yếu em viết bằng c mong anh giúp đỡ
            cái này là thư viện nó viết cứng trong cái file exe đó , mà muốn chuẩn xác, ngon lành thì nó phải viết trong asm. Nếu nó viết = C bạn có thể thay thế bằng ASM ( vì rằng trình dịch sẽ dịch từ C sang asm ) , còn nếu nó đã viết = asm thì phải sống chung với lũ thôi .

            - Bạn muốn fast food , sử dụng thư viện thì sài cái CV làm gì ... nghe tôi chuyển sang mikroC đi , nhanh, dễ ... thư viện toàn C cả . dễ dàng , thoáng đãng chứ không như CV .
            Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

            Comment


            • #7
              mikro c là cái chi anh cho em cái hình để hình dung được không ạ nó có hỗ trợ thư viện nhiều như CV hông anh em mới len gugo tìm thấy củng hay mà chủ yếu bài viết về cái này có nhiều không nó dể lập trình không có như kelic hông anh
              Last edited by suri; 15-03-2013, 22:12.

              Comment


              • #8
                khe khe để em nghiên cứu cái mikroc rùi hỏi tiếp cám ơn bác nhìu

                Comment


                • #9
                  Nguyên văn bởi suri Xem bài viết
                  mikro c là cái chi anh cho em cái hình để hình dung được không ạ nó có hỗ trợ thư viện nhiều như CV hông anh em mới len gugo tìm thấy củng hay mà chủ yếu bài viết về cái này có nhiều không nó dể lập trình không có như kelic hông anh
                  đương nhiên thư viện của nó thì có khoảng 5 - 600 thư viện ( chắc ăn đứt các loại trình dịch khác ) ... Nó được đánh giá là top trong những năm trở lại đây vì giá rẻ, support tốt và đầy đủ thư viện
                  dễ thì khỏi phải hỏi ... dễ hơn keil ấy chứ

                  --- nếu bạn đã lập trình 89C51 với keilC mà bạn dùng mikroC 8051 thì bạn sẽ thấy ... đúng là phí sức khi dùng keil
                  nếu bạn đã biết 8051 mikroC ... đương nhiên bạn cũng có thể làm với AVR, PIC, ARM như 8051 vậy ... vì trên nền tảng trình dịch ... các câu cú đều như nhau .
                  Dù bạn chẳng biết ARM là cái quái gì thì bạn vẫn có thể làm cho ARM STM32 , LMS chạy như bạn đã làm với 89C51 vậy .
                  - nói chung tôi cho rằng nó rất dễ . ( còn dễ đến đâu thì do cái đầu mỗi người ) !
                  Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                  Comment


                  • #10
                    sẵn giúp thì giúp cho trót anh up cho em luôn cái phần mền mikroc avr luôn đi+"rắt" em tìm mà nó hổng có "rắt" mới đau chứ

                    Comment


                    • #11
                      Nguyên văn bởi suri Xem bài viết
                      sẵn giúp thì giúp cho trót anh up cho em luôn cái phần mền mikroc avr luôn đi+"rắt" em tìm mà nó hổng có "rắt" mới đau chứ
                      đây ... hàng xịn mới nhất đó 5.8.0 ( cài xong copy đè vào trong thư mục đã cài )

                      pass : xem nick

                      mCa.zip
                      Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                      Comment


                      • #12
                        cám ơn anh nhiều .......lắm ủa sao không thấy phần mền anh up cho em luon di chứ trên mạng nó có bản 5.6 à đói anh ơi

                        Comment


                        • #13
                          ủa má sao nó có chút xíu zậy anh em giài nén má nó chì có 2m à

                          Comment


                          • #14
                            Nguyên văn bởi suri Xem bài viết
                            ủa má sao nó có chút xíu zậy anh em giài nén má nó chì có 2m à
                            hic, pó tay ! vào trang của nó rồi down cái bản 5.8.0 mới nhất về , cài ra ... copy cái trên vào !
                            download ở đây : mikroC PRO for AVR - C compiler for Atmel AVR microcontrollers
                            Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                            Comment


                            • #15
                              "rắt" làm sao anh nói cụ thể cho em với em down được rùi
                              có phải coppy file "mikroCAvr.exe" vào "C:\Program Files\Mikroelektronika\mikroC PRO for AVR" hông anh
                              em giải nén nó có tới 2 file luôn anh ơi 1file"mikroCAvr.exe" và"mikroC_AVR.key" (file này ẩn có cần coppy hông anh)
                              mà nếu hông "rắt" thì không biên dịch được hả anh

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X