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

          • nguyendinhvan
            Trả lời cho Vấn đề về tốc độ quay
            bởi nguyendinhvan
            Sử dụng động cơ servor, hoặc lắp thêm một cái encoder vào động cơ bước. Encoder sẽ kiểm soát động cơ có quay hoặc đứng im.
            Hôm qua, 19:50
          • Andrea14
            Vấn đề về tốc độ quay
            bởi Andrea14
            Chào mọi người,

            Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
            12-12-2025, 12:42
          • bqviet
            Trả lời cho Đấu tắt điện cho máy tính bảng
            bởi bqviet
            Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
            06-12-2025, 17:17
          • nguyendinhvan
            Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
            bởi nguyendinhvan
            Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
            05-12-2025, 19:59
          Đang tải...
          X