Làm sao để thoát khỏi vòng lập

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • 27041990
    Nhập môn đệ tử
    • Mar 2010
    • 2

    #1

    Làm sao để thoát khỏi vòng lập

    SAU KHI GỬI ND (X 12 Y 13) XỬ LÝ CHO ĐÈN GIAO THÔNG CHẠY SAU ĐÓ LẠI GỬI ND MỚI ĐỂ THAY ĐỔI SỐ HIỂN THỊ CỦA DÈN GIAO THÔNG THÌ KO DƯỢC MONG CAC CHO Y KIEN:
    #include <16f877a.h>
    #include <string.h>
    #include <stdlib.h>
    #fuses nowdt,noprotect,nolvp,xt,put
    #use delay(clock=4000000)
    #use fast_io(b)
    #use fast_io(d)
    #use fast_io(a)
    #byte porta=0x05
    #byte portb=0x06
    #byte porte=0x09
    #bit a0=porta.0
    #bit a1=porta.1
    #bit a2=porta.2
    #bit e0=porte.0
    #bit e1=porte.1
    #bit e2=porte.2
    #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
    int i,DENA,DENB,DEM,DA,VA,XA,DB,VB,XB,count,TAMA,j,z,t ,dau,cuoi,done;
    char data[90],ndung1[15],ndung2[15];
    //GHUONG TRINH NGAT//
    #INT_RDA
    void ngat()
    {data[count]=getc();
    count++;}
    //CHUONG TRINH CON//

    void GOI_DEN();
    void main()
    {
    set_tris_b(0b00000000);
    set_tris_a(0b000000);
    set_tris_e(0b000);
    output_b(0);
    output_e(0);
    output_a(0);
    enable_interrupts(global);//Cho phep ngat toan cuc
    enable_interrupts(int_rda);//Cho phep ngat nhan noi tiep


    getc();
    a0=1;
    e0=1;
    delay_ms(10000);
    XU_LY_ND:
    ndung1:
    for(i=0;i<strlen(data);i++)
    {if (data[i]=='x') z=0;dau=i+2;cuoi=i+3;
    for(j=dau;j<cuoi;j++)
    {
    ndung1[z]=data[j];
    z++;}}
    ndung:
    for(i=0;i<strlen(data);i++)
    {if (data[i]=='y') z=0;dau=i+2;cuoi=i+3;
    for(j=dau;j<cuoi;j++)
    {
    ndung2[z]=data[j];
    z++;}}

    DA=atoi(ndung1);
    DB=atoi(ndung2);
    //XOA NDUNG///
    for(i=0;i<10;i++)
    {ndung1[i]=0;
    ndung2[i]=0;}
    //XOA_DATA//
    for (i=0;i<=strlen(data);i++)
    { data[i]=0;}
    VA=3;
    VB=3;
    XA=DB-3;
    XB=DA-3;
    DEM=4;
    CHAY:
    DENA=DA;
    a0=1;
    e0=0;
    DENB=XB;
    e2=1;

    while(!KBHIT())
    {HIEN_THI:
    for (i=0;i<25;i++)
    {
    if (DENA<=9) TAMA=0; else TAMA=16;
    portb=DENA/10|TAMA;
    delay_ms(30);
    TAMA=32;
    portb=DENA%10|TAMA;
    delay_ms(30);
    if (DENB<=9) TAMA=0; else TAMA=64;
    portb=DENB/10|TAMA;
    delay_ms(30);
    TAMA=128;
    portb=DENB%10|TAMA;
    delay_ms(30);
    }
    DENA=DENA-1;
    DENB=DENB-1;
    IF (DENA==0||DENB==0)
    { DEM=DEM-1;
    GOI_DEN();}
    goto HIEN_THI;}
    //DIEU KIEN SAI//

    a0=0; a1=0; a2=0; e0=0; e1=0; e2=0; a0=1; e0=1;
    getc(); delay_ms(5000);
    goto XU_LY_ND;}
    ///CHUONG TRINH GOI DEN///
    void GOI_DEN()
    {
    switch (DEM)
    {
    case 0:
    { DEM=4;
    DENA=DA;
    a0=1;
    a1=0;
    DENB=XB;
    e2=1;
    e0=0;
    break;}
    case 1:
    { DENA=VA;
    a1=1;
    a2=0;
    break;}
    case 2:
    { DENA=XA;
    a2=1;
    a0=0;
    DENB=DB;
    e0=1;
    e1=0;
    break;}
    case 3:
    { DENB=VB;
    e2=0;
    e1=1;
    break;}
    }

    }
Working...