hi mọi người cho mình hỏi tại sao mình phải click đến 2 lần nút gửi(trong vb6.0)lần thì vòng lặp while (chương trình nạp cho vdk ) mới hoạt động lần thứ nhất nó gửi dữ liệu đến vdk kiểm tra dữ liệu trên vdk prot P0 nhân đươc là ok mình click đến lần 2(chuong trình vb6.0) thì dữ liệu mới cho ra cỗng P1 (tuc là khi clik lần 2 thì vòng lặp while trong vdk 89 mới hoạt đọng) cho mình hỏi tại sao như vậy các pác xem hộ rùi cho ý kiến nha giúp mình tí
#include <REGX51.H>
#include <stdio.h>
//=========================
#define led1 P0_0
#define led2 P0_1
#define led3 P0_2
#define led4 P0_3
#define led5 P0_4
#define led6 P0_5
#define led7 P0_6
#define led8 P0_7
//=========================
int i;
char c[10],ch1,ch2;
//==========================
void delay(int t)
{
while(t--);
}
void SetupSerial()
{
SCON = 0x52; /* Che do 1: 8-bit UART, cho phep truyen */
TMOD = 0x20; /* timer 1 che do 2: 8-Bit tu dong nap lai. */
TH1 = 0xfd ; /* toc do 9600 baud */
TL1 = 0xfd ;
TI = 0; /* co ngat nha^n.=0*/
RI=0; /* co ngat' truye^n =0*/
TR1 = 1; /* timer 1 run */
ES =1; /* cho phep ngat noi tiep */
EA = 1 ;
}
void NhanData() interrupt 4
{
unsigned int i;
if (RI)
{
ES=0;
for (i = 0; i < 9; i++)
{
while (!RI);
RI = 0;
c[i] = SBUF;
if (c[i]==65) led1=0; //kiem tra du lieu nhan duoc tren cong P0
if (c[i]==66) led2=0;
if (c[i]==67) led3=0;
if (c[i]==68) led4=0;
if (c[i]==69) led5=0;
if (c[i]==70) led6=0;
if (c[i]==71) led7=0;
if (c[i]==72) led8=0;
if (c[i]==73)
{
P0=0xFF;
}
}
}
}
//===========================
void main()
{
int i;
SetupSerial(); //Khoi tao cac thong so cho truyen thong noi tiep
//Cho phep ngat nhung chi? có ngat noi tiep duoc dung trong code nay
while(1)//xu li du lieu sau khi nhan duoc
{
for(i=0;i<=8;i++)
{
P1=c[i];
delay(10000);
}
}
}
#include <REGX51.H>
#include <stdio.h>
//=========================
#define led1 P0_0
#define led2 P0_1
#define led3 P0_2
#define led4 P0_3
#define led5 P0_4
#define led6 P0_5
#define led7 P0_6
#define led8 P0_7
//=========================
int i;
char c[10],ch1,ch2;
//==========================
void delay(int t)
{
while(t--);
}
void SetupSerial()
{
SCON = 0x52; /* Che do 1: 8-bit UART, cho phep truyen */
TMOD = 0x20; /* timer 1 che do 2: 8-Bit tu dong nap lai. */
TH1 = 0xfd ; /* toc do 9600 baud */
TL1 = 0xfd ;
TI = 0; /* co ngat nha^n.=0*/
RI=0; /* co ngat' truye^n =0*/
TR1 = 1; /* timer 1 run */
ES =1; /* cho phep ngat noi tiep */
EA = 1 ;
}
void NhanData() interrupt 4
{
unsigned int i;
if (RI)
{
ES=0;
for (i = 0; i < 9; i++)
{
while (!RI);
RI = 0;
c[i] = SBUF;
if (c[i]==65) led1=0; //kiem tra du lieu nhan duoc tren cong P0
if (c[i]==66) led2=0;
if (c[i]==67) led3=0;
if (c[i]==68) led4=0;
if (c[i]==69) led5=0;
if (c[i]==70) led6=0;
if (c[i]==71) led7=0;
if (c[i]==72) led8=0;
if (c[i]==73)
{
P0=0xFF;
}
}
}
}
//===========================
void main()
{
int i;
SetupSerial(); //Khoi tao cac thong so cho truyen thong noi tiep
//Cho phep ngat nhung chi? có ngat noi tiep duoc dung trong code nay
while(1)//xu li du lieu sau khi nhan duoc
{
for(i=0;i<=8;i++)
{
P1=c[i];
delay(10000);
}
}
}
Comment