PDA

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


27041990
31-05-2011, 10:07 PM
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;}
}

}