Thông báo

Collapse
No announcement yet.

Khai báo avr

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

  • Khai báo avr

    các bác các có thể chú thích cho em đoạn khai báo này với ạ ,nó có ý nghĩa j vậy ak?


    #include <mega128.h>
    #include <delay.h>
    #include <alcd.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <spi.h>

    #define DATA PINB.7
    #define CMD PORTB.6
    #define CLK PORTB.4
    #define ATT PORTB.5

    #define SCL PORTE.3
    #define SCK PORTE.2
    #define DATA595 PORTB.0

    #define SS1 PORTC.0
    #define SS2 PORTC.1
    #define SS3 PORTC.2
    #define SS4 PORTC.3
    #define SS5 PORTC.4
    #define SS6 PORTC.5
    #define SS7 PORTC.6
    #define SS8 PORTC.7

    #define len 1
    #define xuong 2
    #define vao 3
    #define ra 4


    //cam bien va cong tac hanh trinh
    #define cbq_bt PINA.0
    #define cb_batmam PINA.1
    #define ht_mam PINA.2
    #define ht_ngang_R PINA.3
    #define ht_ngang_L PINA.4
    #define ht_giua PINA.5
    #define cb_30cm PINA.6
    #define cb_vach PINA.7
    #define t12 PIND.0
    #define t22 PIND.4

  • #2
    Khai báo trên cơ bản như sau:
    Sử dụng thư viện tạo trễ
    Sử dụng thư viện lcd
    Sử dụng thư viện vào ra chuẩn
    Sử dụng thư viện SPI

    Còn các define tùy ứng dụng của bạn.
    Bạn cho đầy đủ code thì mình mới nói tiếp được

    Comment


    • #3
      đây bạn ak. , bạn giải thick chi tiết gium mình với
      #include <mega128.h>
      #include <delay.h>
      #include <alcd.h>
      #include <stdio.h>
      #include <stdlib.h>
      #include <spi.h>

      #define DATA PINB.7
      #define CMD PORTB.6
      #define CLK PORTB.4
      #define ATT PORTB.5

      #define SCL PORTE.3
      #define SCK PORTE.2
      #define DATA595 PORTB.0

      #define SS1 PORTC.0
      #define SS2 PORTC.1
      #define SS3 PORTC.2
      #define SS4 PORTC.3
      #define SS5 PORTC.4
      #define SS6 PORTC.5
      #define SS7 PORTC.6
      #define SS8 PORTC.7

      #define len 1
      #define xuong 2
      #define vao 3
      #define ra 4


      //cam bien va cong tac hanh trinh
      #define cbq_bt PINA.0
      #define cb_batmam PINA.1
      #define ht_mam PINA.2
      #define ht_ngang_R PINA.3
      #define ht_ngang_L PINA.4
      #define ht_giua PINA.5
      #define cb_30cm PINA.6
      #define cb_vach PINA.7
      #define t12 PIND.0
      #define t22 PIND.4

      unsigned char analog,MC1=0,MC2=0,i=0,i2=0,goc;
      unsigned char PES[6],SA[5],chuoi[32];
      unsigned char L1,R1,L2,R2,L,R,start,select,up,down,left,right,X, tron,vuong,tamgiac;
      long int angle,angle0=-1,dem,counter,counter2;
      bit batdau=1,Ttraivao=1,Ttraira=1,Tphaivao=1,Tphaira=1 ,Tgiua=1,Tcot=1,ttsa=1;
      char M[2];
      unsigned int time,ms,t1,t,t2,bt;
      int goc0;
      void buzz(void)
      {
      unsigned int m;
      for(m=0;m<100;m++)
      {
      PORTF |= 0x01;
      delay_us(100);
      PORTF &= 0xfe;
      delay_us(100);
      }
      }

      unsigned char access(unsigned char tbyte)
      {
      unsigned char rbyte=0;
      unsigned int j;
      CLK=1;
      for(j=0;j<8;j++)
      {
      CMD=tbyte&0x01;
      delay_us(100);
      CLK=0;
      delay_us(100);
      rbyte=(rbyte>>1)|(DATA<<7);
      CLK=1;
      tbyte=tbyte>>1;
      }
      delay_us(100);
      return rbyte;
      CLK=1;
      }

      void doctayPES(void)
      {
      ATT=1;
      PES[2]=PES[3]=PES[4]=PES[5]=128;
      analog=128;
      ATT=0;
      access(0x01);
      analog=access(0x42);
      access(0);
      PES[0]=access(0);
      PES[1]=access(0);
      if(analog==0x73||0x23||0X53)
      {
      PES[2]=access(0);
      PES[3]=access(0);
      PES[4]=access(0);
      PES[5]=access(0);
      }
      if(analog==0x12)
      {
      PES[2]=access(0);
      PES[3]=access(0);
      }
      ATT=1;

      select = PES[0]&0x01;
      L = (PES[0]&0x02)/2;
      R = (PES[0]&0x04)/4;
      start = (PES[0]&0x08)/8;

      up = (PES[0]&0x10)/16;
      right = (PES[0]&0x20)/32;
      down = (PES[0]&0x40)/64;
      left = (PES[0]&0x80)/128;

      L2 = (PES[1]&0x01);
      R2 = (PES[1]&0x02)/2;
      L1 = (PES[1]&0x04)/4;
      R1 = (PES[1]&0x08)/8;

      tamgiac = (PES[1]&0x10)/16;
      tron = (PES[1]&0x20)/32;
      X = (PES[1]&0x40)/64;
      vuong = (PES[1]&0x80)/128;

      }

      void dich(unsigned char x1,unsigned char x2)
      {
      int k,temp;
      for(k=0;k<8;k++)
      {
      temp=x2;//gan bien
      temp=temp&0x80;//lay ra bit dau tien (bit 7)
      if(temp==0x80)//so sanh bit
      DATA595=1; //bang 1 thi xuat vao chip =1
      else
      DATA595=0; //nguoc lai bang 0
      x2*=2; //dich bit lay bit trong so thap
      SCK=0; //tao xung tren chan 11
      SCK=1; //1 xung dua vào 1 bít
      }
      for(k=0;k<8;k++)
      {
      temp=x1;//gan bien
      temp=temp&0x80;//lay ra bit dau tien (bit 7)
      if(temp==0x80)//so sanh bit
      DATA595=1; //bang 1 thi xuat vao chip =1
      else
      DATA595=0; //nguoc lai bang 0
      x1*=2; //dich bit lay bit trong so thap
      SCK=0; //tao xung tren chan 11
      SCK=1; //1 xung dua vào 1 bít
      }

      SCL=0; //xuat du lieu ra output
      SCL=1;
      }

      unsigned char truyen(unsigned char data)
      {
      SPDR = data;
      while(!(SPSR & (1<<SPIF)));
      return SPDR;
      }


      void dc4(unsigned char chieu,unsigned char tocdo)
      {
      if (chieu==1) {SS6=0;truyen(1);SS6=1;}
      else if (chieu==0){SS6=0;truyen(2);SS6=1;}
      if ((tocdo!=1)&&(tocdo!=2)) {SS6=0;truyen(tocdo);SS6=1;}
      }

      void stop4(void)
      {
      {SS6=0;truyen(0);SS6=1;}
      }

      void dc3(unsigned char chieu,unsigned char tocdo)
      {
      if (chieu==1) {SS8=0;truyen(1);SS8=1;}
      else if (chieu==0){SS8=0;truyen(2);SS8=1;}
      if ((tocdo!=1)&&(tocdo!=2)) {SS8=0;truyen(tocdo);SS8=1;}
      }

      void stop3(void)
      {
      {SS8=0;truyen(0);SS8=1;}
      }

      void dc2(unsigned char chieu,unsigned char tocdo)
      {
      if (chieu==1) {SS5=0;truyen(1);SS5=1;}
      else if (chieu==0){SS5=0;truyen(2);SS5=1;}
      if ((tocdo!=1)&&(tocdo!=2)) {SS5=0;truyen(tocdo);SS5=1;}
      }

      void stop2(void)
      {
      {SS5=0;truyen(0);SS5=1;}
      }

      void dc1(unsigned char chieu,unsigned char tocdo)
      {
      if (chieu==1) {SS7=0;truyen(1);SS7=1;}
      else if (chieu==0){SS7=0;truyen(2);SS7=1;}
      if ((tocdo!=1)&&(tocdo!=2)) {SS7=0;truyen(tocdo);SS7=1;}
      }


      void stop1(void)
      {
      {SS7=0;truyen(0);SS7=1;}
      }

      void dc_day(unsigned char chieu,unsigned char tocdo)
      {
      if (chieu==1) {SS6=0;truyen(1);SS6=1;}
      else if (chieu==0){SS6=0;truyen(2);SS6=1;}
      if ((tocdo!=1)&&(tocdo!=2)) {SS6=0;truyen(tocdo);SS6=1;}
      }
      void stop_day(void)
      {
      {SS6=0;truyen(0);SS6=1;}
      }
      //dinh nghia xilanh
      void chim_se1 (unsigned char chieu)
      {
      if (chieu==1) {MC2 |= 0x01;dich(MC2,MC1);}
      if (chieu==0) {MC2 &= 0xfe;dich(MC2,MC1);}
      }

      void mamvala (unsigned char chieu)
      {
      if (chieu==1) {MC2 |= 0x02;dich(MC2,MC1);}
      if (chieu==0) {MC2 &= 0xfd;dich(MC2,MC1);}
      }

      void xl_encoder (unsigned char chieu)
      {
      if (chieu==1) {MC2 |= 0x04;dich(MC2,MC1);}
      if (chieu==0) {MC2 &= 0xfb;dich(MC2,MC1);}
      }



      void nang_giua (unsigned char chieu)
      {
      if (chieu==1) {MC2 |= 0x20;dich(MC2,MC1);}
      if (chieu==0) {MC2 &= 0xdf;dich(MC2,MC1);}
      }

      void chim_se2 (unsigned char chieu)
      {
      if (chieu==1) {MC2 |= 0x40;dich(MC2,MC1);}
      if (chieu==0) {MC2 &= 0xbf;dich(MC2,MC1);}
      }

      void dai_bang(unsigned char chieu)
      {
      if (chieu==1) {MC2 |= 0x80;dich(MC2,MC1);}
      if (chieu==0) {MC2 &= 0x7f;dich(MC2,MC1);}
      }
      void dc_keo (unsigned char chieu)
      {
      if (chieu==1) {MC1 =(MC1&0xf3)|0x08; dich(MC2,MC1);}
      if (chieu==0) {MC1 =(MC1&0xf3)|0x04; dich(MC2,MC1);}
      }

      void la_LR(unsigned char chieu)
      {
      if (chieu==1) {MC1 |= 0x10;dich(MC2,MC1);}
      if (chieu==0) {MC1 &= 0xef;dich(MC2,MC1);}
      }

      void nang_mam (unsigned char chieu)
      {
      if (chieu==1) {MC1 |= 0x20;dich(MC2,MC1);}
      if (chieu==0) {MC1 &= 0xdf;dich(MC2,MC1);}
      }

      void stop_keo()
      {
      MC1 =MC1&0xf3; dich(MC2,MC1);
      }


      void stopDC(void)
      {
      stop1();
      stop2();
      stop3();
      }
      void stop_all(void)
      {
      stop1();
      stop2();
      stop3();
      stop4();
      }

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X