Thông báo

Collapse
No announcement yet.

giúp em giải đoạn code này với

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

  • giúp em giải đoạn code này với

    #include <16F877A.h>
    #include <def_877a.h>
    #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
    #use delay(clock=4000000)
    #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
    #include <font_ascii.c>

    //===================Dinh nghia cac chan cho ket noi 74595================
    #bit data = 0x05.1
    #bit clk = 0x05.2
    #bit latch = 0x05.0
    #bit tt = 0x05.3

    //=====================khai bao bien toan cuc==============================
    int8 buff_disp[33];
    int8 max_char;
    int8 time=5;
    int8 count=0;
    int is = 0;
    char dt[65];
    //======================KHAI BAO CAC CHUONH TRINH CON======================
    void send_2_595(int8 temp);
    void display();
    void copy_2_ram1(int8 index_char);
    void copy_2_ram2(int8 index_char);
    void luudata();
    //================================================== =======================
    #INT_RDA
    Receive_isr()
    {
    char c;
    c = getc();
    putc(c);
    if(c==2) { count =0; is =1; };
    else
    {
    if(c==3)
    {
    is = 0; max_char = count+5; luudata();
    }
    else
    {
    if(is==1 && count<60) { dt[count] = c; count++;
    }
    }
    }
    //================================================== ============================
    void luudata()
    {
    int i;
    for(i=0;i<max_char-5;++i)
    write_eeprom(i,dt[i]);
    write_eeprom(i,32); write_eeprom(i+1,32); write_eeprom(i+2,32); write_eeprom(i+3,32); write_eeprom(i+4,32); write_eeprom(i+5,32); write_eeprom(i+6,32);
    write_eeprom(0xff,max_char);
    }
    //===========Chuong trinh chinh============================================= ====
    void main() {
    int8 i,j;
    enable_interrupts(int_rda); //thiet lap ngat noi tiep
    enable_interrupts(GLOBAL); // thiet lap ngat toan cuc
    //================================================== ============================
    TRISA=0x00; // Thiet lap chan vao ra
    TRISB=0x00;
    delay_ms(10);


    //================================================== ===========================
    max_char = read_eeprom(0xff);
    //==============Bat dau hoat dong chuong trinh chinh===========================


    while(1)
    {
    for (i=0;i<=32;i++)
    buff_disp[i]=0xff;
    for (i=0;i<=max_char;i++)
    {
    j=read_eeprom(i)-32;
    if (j<=51)
    copy_2_ram1(j);
    else
    {
    j=j-51;
    copy_2_ram2(j);
    }
    }
    }
    }
    //==========================END MAIN =========================================

    // ====================== CAC CHUONG TRINH CON ===============================
    //=======Gui du lieu theo duong noi tiep toi 595==============================
    void send_2_595(int8 temp) {

    int8 i;
    clk=0;
    for(i=0;i<32;i++)
    {
    if(i==temp)
    data=0;
    else data=1;
    clk=1;
    clk=0;
    }

    }
    //=====================Chuong trinh con hien thi===============================
    void display() {
    int8 count;
    int8 i;

    for (i=0;i<=time;i++) //Toc do chu chay thay doi boi bien time
    {

    for(count=32;count>0;count--)
    {
    send_2_595(count-1);
    PORTB = 0x00;
    latch=1;
    latch=0;
    PORTB = buff_disp[count];
    delay_us(20);
    }
    }
    }

    //========================Copy to Ram1=======================================
    void copy_2_ram1(int8 index_char)
    {
    int8 i,j;

    for (j=0;j<=5;j++)
    {
    for (i=32;i>0;i--)
    buff_disp[i]= buff_disp[i-1];
    buff_disp[0]=font[index_char].b[j];
    display();
    }
    buff_disp[0]=0xff;
    }
    //==========================Copy to Ram 2=====================================
    void copy_2_ram2(int8 index_char) {

    int8 i,j;

    for (j=0;j<=5;j++)
    {
    for (i=32;i>0;i--)
    buff_disp[i]= buff_disp[i-1];
    buff_disp[0]=font2[index_char].b[j];
    display();
    }
    buff_disp[0]=0xff;
    }

  • #2
    Hi,
    Đoạn code này có gì đâu mà giải.
    Đường đến những ngày vinh quang không còn xa
    Con đường chúng ta... chúng ta đã chọn.

    Comment


    • #3
      thiệt là làm khó - gữi một đoạn code đã có chú thích mà kêu giải thích -> ko biết giải thích cái gì , tốt nhất bạn nên hỏi người nào ghi ra những dòng giải thích trong code - đó là người hiểu rõ đoạn code này nhất
      Đang thất nghiệp 0988-010-486

      Comment


      • #4
        cho mình hỏi ham nay dc gọi khi nào void send_2_595(int8 temp) { do mình thấy trong chương trình chình không gọi nên không biết được gọi ra và làm việc khi nào. mong đượ sự giúp đỡ của các bạn

        Comment


        • #5
          nó gọi trong hàm dislay() đó bạn:
          void display() {
          int8 count;
          int8 i;

          for (i=0;i<=time;i++) //Toc do chu chay thay doi boi bien time
          {

          for(count=32;count>0;count--)
          {
          send_2_595(count-1);
          PORTB = 0x00;
          latch=1;
          latch=0;
          PORTB = buff_disp[count];
          delay_us(20);
          }
          }
          }

          Hàm này là hàm gửi dữ liệu ra ic dịch 74hc595

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X