Tình hình là em đang làm cái đồ án giao tiếp với máy tính dùng AT89 đọc dữ liệu từ ADC gửi lên máy tính, em làm mô phỏng ở máy tính thì chạy được, đến khi nạp vào KIT thật thì không chạy. Nạp thử code khác KIT vẫn chạy được. Mong mọi người giúp đỡ xem dùm em cái code.
Đây là KIT của em:

Code Vb 10:
Code C vi điều khiển:
Mong được mọi người giúp đỡ.
Đây là KIT của em:
Code Vb 10:
Code:
Public Class Form1
Dim Data As String
Dim Flag As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1.Open()
Timer1.Enabled = True
Data = " "
Flag = 0
End Sub
Private Sub LED1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LED1.CheckedChanged
If LED1.Checked Then
SerialPort1.Write("A")
Button1.BackColor = Color.Green
Else : SerialPort1.Write("E")
Button1.BackColor = Color.Black
End If
End Sub
Private Sub LED2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LED2.CheckedChanged
If LED2.Checked Then
SerialPort1.Write("B")
Button2.BackColor = Color.Green
Else : SerialPort1.Write("F")
Button2.BackColor = Color.Black
End If
End Sub
Private Sub LED3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LED3.CheckedChanged
If LED3.Checked Then
SerialPort1.Write("C")
Button3.BackColor = Color.Green
Else : SerialPort1.Write("G")
Button3.BackColor = Color.Black
End If
End Sub
Private Sub LED4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LED4.CheckedChanged
If LED4.Checked Then
SerialPort1.Write("D")
Button4.BackColor = Color.Green
Else : SerialPort1.Write("H")
Button4.BackColor = Color.Black
End If
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
SerialPort1.Close()
Application.Exit()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End Sub
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LED5.CheckedChanged
If LED5.Checked Then
SerialPort1.Write("J")
Button6.BackColor = Color.Green
Else : SerialPort1.Write("K")
Button6.BackColor = Color.Black
End If
End Sub
Private Sub LED6_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LED6.CheckedChanged
If LED6.Checked Then
SerialPort1.Write("L")
Button7.BackColor = Color.Green
Else : SerialPort1.Write("Z")
Button7.BackColor = Color.Black
End If
End Sub
Private Sub LED7_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LED7.CheckedChanged
If LED7.Checked Then
SerialPort1.Write("X")
Button8.BackColor = Color.Green
Else : SerialPort1.Write("C")
Button8.BackColor = Color.Black
End If
End Sub
Private Sub LED8_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LED8.CheckedChanged
If LED8.Checked Then
SerialPort1.Write("N")
Button9.BackColor = Color.Green
Else : SerialPort1.Write("M")
Button9.BackColor = Color.Black
End If
End Sub
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If (Flag = 1) Then
TextBox1.Text = (Data)
Flag = 0
End If
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
System.Threading.Thread.Sleep(100)
Data = SerialPort1.ReadExisting()
Flag = 1
End Sub
End Class
Code:
#include <Regx51.h>
#include <stdio.h>
#include <math.h>
unsigned char dladc;
float mv,nd;
sbit wr = P3^2;
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
sbit LED4=P2^3;
sbit LED5=P2^4;
sbit LED6=P2^5;
sbit LED7=P2^6;
sbit LED8=P2^7;
char date=0;
void delay(unsigned int adc)
{
unsigned int i;
for(i=0;i<=adc;i++);
}
void goi(unsigned int num)
{
unsigned char t,c,d;
t=num/100;
c=(num%100)/10;
d=(num%100)%10;
putchar(t+48);
putchar(c+48);
putchar(d+48);
}
unsigned char read_adc()
{
wr =1; delay (10);
wr=0; delay(10);
delay(100);
return P1;
}
void uart()
{
SCON=0x52;
TMOD=0x21;
TH1=TL1=0xfd;
TR1=1;
}
void main()
{ //uart();
IE=0x90;
RI=0;
//P0=0xff;
while(1)
{
if(date=='A') LED1 = 0;
else if(date=='B') LED2=0;
else if(date=='C') LED3=0;
else if(date=='D') LED4=0;
else if(date=='J') LED5=0;
else if(date=='L') LED6=0;
else if(date=='X') LED7=0;
else if(date=='N') LED8=0;
else if(date=='E') LED1=1;
else if(date=='F') LED2=1;
else if(date=='G') LED3=1;
else if(date=='H') LED4=1;
else if(date=='K') LED5=1;
else if(date=='Z') LED6=1;
else if(date=='V') LED7=1;
else if(date=='M') LED8=1;
dladc=read_adc();
nd=1.96*dladc;
goi(nd);
delay(1000);
}
}
void ngat() interrupt 4
{
date=SBUF;
RI=0;
}
