Thông báo

Collapse
No announcement yet.

Lỗi này là lỗi gì trong AVRSTUDIO ?

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

  • Lỗi này là lỗi gì trong AVRSTUDIO ?

    lỗi báo error: lvalue required as left operand of assignment

    lỗi này là lỗi gì thế các bác.

    chương trình của em:

    Code:
    #include <avr/io.h>
    #include <avr/pgmspace.h>
    #include <util/delay.h>
    #include <avr/interrupt.h>
    
    
    #include "pcd8544.h"
    #include "main.h"
    
    #define contrast    0x7F
    //#define contrast  0x2A
    
    #define LATCH	  	PB2
    #define DATA		PB3
    #define CLK			PB5
    
    #define D5          851
    #define E5          758
    #define Fsh5        675
    #define G5          637
    #define A5          568
    #define B5 			506
    #define C6 			477
    #define D6 			425
    #define DUR 		40
    
    static const unsigned char data[6][8] PROGMEM = {
    	{0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00},
    	{0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0}
    };
    
    volatile unsigned char temp[8],i,j=0;
    
    void latch_data();
    
    void latch_data( void )
    {
    	LATCH = 1;
    	LATCH = 0;
    }
    
    ISR (TIMER1_COMPA_vect)
    {
    	for (i=0;i<8;i++)
    	{
    		temp[i] = data[0][i];
    	}
    }
    
    ISR (TIMER2_COMP)
    {
    	for (i=0;i<8;i++)
    	{
    		if (temp[i]&(0x80>>i))
    			DATA = 0;
    		else 
    			DATA = 1;
    		CLK = 0;
    		CLK = 1;
    	}
    	latch_data();
    	PORTC = j|8;
    	j++;
    	if (j==8) 
    	{
    		j=0;
    	}
    }
    	
    
    int main()
    {
    	PORTD=0x00;
    	DDRD=0xFF;
    
    	PORTB=0x00;
    	DDRB=(1<<CLK)|(1<<LATCH)|(1<<DATA);
    
    	// Timer/Counter 1 initialization
    	// Clock source: System Clock
    	// Clock value: 11.719 kHz
    	// Mode: Normal top=FFFFh
    	// OC1A output: Discon.
    	// OC1B output: Discon.
    	// Noise Canceler: Off
    	// Input Capture on Falling Edge
    	// Timer 1 Overflow Interrupt: Off
    	// Input Capture Interrupt: Off
    	// Compare A Match Interrupt: On
    	// Compare B Match Interrupt: Off
    	TCCR1A=0x00;
    	TCCR1B=0x05;
    	TCNT1H=0x00;
    	TCNT1L=0x00;
    	ICR1H=0x00;
    	ICR1L=0x00;
    	OCR1AH=0x01;
    	OCR1AL=0xD4;
    	OCR1BH=0x00;
    	OCR1BL=0x00;
    
    	// Timer/Counter 2 initialization
    	// Clock source: System Clock
    	// Clock value: 46.875 kHz
    	// Mode: CTC top=OCR2
    	// OC2 output: Disconnected
    	ASSR=0x00;
    	TCCR2=0x0E;
    	TCNT2=0x00;
    	OCR2=0x75;
    
    	// Timer(s)/Counter(s) Interrupt(s) initialization
    	TIMSK=0x90;
    
    	sei();
    
    	PORTC=0x00;
    	DDRC=0xFF;
    
      	LcdInit(); 
            LcdContrast(contrast);
    	LcdInit();
    
        return 0;
    }
    các dòng có lỗi như trên là :
    Code:
    LATCH = 0;
    LATCH = 1;
    DATA = 0;
    DATA = 1;
    CLK = 0;
    CLK =1;

  • #2
    có phải cách #define sai không các bác nhỉ

    Comment


    • #3
      Dòng định nghĩa #define của bạn bị sai rồi.
      Vì trong thư viện IO của nó, hình như là không có PB2,PB3 hay gì đó mà là PORTB, và hình như là nó không cho truy cập đến từng bit giống CV

      Comment


      • #4
        Nguyên văn bởi soulasylum Xem bài viết
        có phải cách #define sai không các bác nhỉ
        Một ví dụ cụ thể
        #define LED7SEG_DATA_DDR DDRA
        #define LED7SEG_DATA_PORT PORTA
        #define LED7SEG_DATA_BIT PA1

        #define LED7SEG_CLOCK_DDR DDRA
        #define LED7SEG_CLOCK_PORT PORTA
        #define LED7SEG_CLOCK_BIT PA2

        #define LED7SEG_LATCH_DDR DDRA
        #define LED7SEG_LATCH_PORT PORTA
        #define LED7SEG_LATCH_BIT PA3

        #define led7seg_data_ouput() LED7SEG_DATA_DDR |= _BV(LED7SEG_DATA_BIT)
        #define led7seg_data_high() LED7SEG_DATA_PORT |= _BV(LED7SEG_DATA_BIT)
        #define led7seg_data_low() LED7SEG_DATA_PORT &= ~_BV(LED7SEG_DATA_BIT)

        #define led7seg_clock_ouput() LED7SEG_CLOCK_DDR |= _BV(LED7SEG_CLOCK_BIT)
        #define led7seg_clock_high() LED7SEG_CLOCK_PORT |= _BV(LED7SEG_CLOCK_BIT)
        #define led7seg_clock_low() LED7SEG_CLOCK_PORT &= ~_BV(LED7SEG_CLOCK_BIT)

        #define led7seg_latch_ouput() LED7SEG_LATCH_DDR |= _BV(LED7SEG_LATCH_BIT)
        #define led7seg_latch_high() LED7SEG_LATCH_PORT |= _BV(LED7SEG_LATCH_BIT)
        #define led7seg_latch_low() LED7SEG_LATCH_PORT &= ~_BV(LED7SEG_LATCH_BIT)

        Comment


        • #5
          cách set bit va clear bit trong AVRStudio

          #define setbit(port,pin) port |= 1<<pin
          #define clrbit(port,pin) port &= ~(1<<pin)

          VD: setbit(PORTD,PORTD1);

          Comment


          • #6
            thanks các bác

            Comment


            • #7
              help

              e mới học avr studio, nhưng khi đã cải cả winavr và e coppy thử một đoạn code, chạy thử và nó báo warning như sau:
              c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:85:3: warning: #warning "F_CPU not defined for <util/delay.h>"
              mong các anh chị giúp em cách khắc phục

              Comment


              • #8
                Hàm delay yêu cầu định nghĩa tần số cho CPU. Ví dụ:
                #define F_CPU 8000000UL
                #include <util/delay.h>
                Last edited by semipower; 05-08-2010, 08:58. Lý do: sai
                Giải pháp nguồn điện và nguồn dự phòng chuyên nghiệp.
                Thiết kế chế tạo nguồn xung theo yêu cầu:

                Comment


                • #9
                  các bác cho em hỏi toán tử BV trong mấy cái macro ấy có nghĩa gì ạ?

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...
                  X