<span =tpc_content>我已做了一個8052的控制, 目的是P1.0~P1.3 收SENSOR OUTPUT +5V, 而P2.0~2.3能自動相應而著燈及經過RS232去電腦, 現在最重要是不知寫的KEIL C CODE 可以將SIGNAL傅送到電腦的VB6.0顯示燈上?? 好像很多錯誤, 請各位幫忙!!
程式如下:
#include<REGX52.H>
#include<STDIO.H>
void load1(void);
void load2(void);
void load3(void);
void load4(void);
main()
{
TMOD=0x20;
TH1=230;
TL1=230;
TR1=1;
SCON=0x70;
while(1)
{
RI=0;
TI=0;
SBUF=P1 | 0xf0;
while(TI==0);
while(RI==0);
if(SBUF==0xfe)
P2=0xfe;
load1();
else if(SBUF==0xfd)
P2=0xfd;
load2();
else if(SBUF==0xfb)
P2=0xfb;
load3();
else if(SBUF==0xf7)
P2=0xf7;
load4();
}
}
void load1(void)
{
P1_0 = !P1_0;
if(P1_0==0) send(‘0’);
else send('1");
}
void load2(void)
{
P1_1 = !P1_1;
if(P1_1==0) send(‘0’);
else send(‘1’);
}
void load3(void)
{
P1_2 = !P1_2;
if(P1_2==0) send(‘0’);
else send(‘1’);
}
void load4(void)
{
P1_3 = !P1_3;
if(P1_3==0) send(‘0’);
else send(‘1’);
}
以上不斷出現ERROR!! 另外我的VB6.0 程式如下:
Private Sub Command5_Click()
tex1.Text = “連線中”
MSComm1.Output = “0”
delayms 100
buf = MSComm1.Input
If buf = “2” Then
LOAD1.FillColor = RGB(0, 255, 0)
LOAD2.FillColor = RGB(0, 255, 0)
LOAD3.FillColor = RGB(0, 255, 0)
LOAD4.FillColor = RGB(0, 255, 0)
Else
tex1.Text = “連線失敗”
End If
End Sub
Private Sub Command6_Click()
On Error Resume Next
msg = “您確定要結束本程式嗎 ?”
code = 65
Title = “關閉程式”
return_value = MsgBox(msg, code, Title)
If return_value = 1 Then
Command5_Click
MSComm1.PortOpen = False
End
End If
End Sub
Private Sub Command7_Click()
On Error GoTo OUTPUTERR
Dim i As Integer, iFile As String
iFile = “d:\test.txt”
Do While Dir(iFile) <> “”
i = i + 1
iFile = “d:\test-” & i & “.txt”
Loop
Open iFile For Output As #1
Print #1, Text0(0).Text
Directory.Text = iFile
Close #1
Exit Sub '如果要用 On Error GoTo 的話…你要在程序結尾加返個 Exit Sub 先得架
OUTPUTERR:
MsgBox Err.Description, vbCritical, “存檔失敗”
End Sub
Private Sub Command8_Click()
Text0(0).Text = Empty
End Sub
Private Sub Form_Load()
On Error Resume Next
LOAD1.FillColor = RGB(0, 255, 0)
LOAD2.FillColor = RGB(0, 255, 0)
LOAD3.FillColor = RGB(0, 255, 0)
LOAD4.FillColor = RGB(0, 255, 0)
MSComm1.PortOpen = False
MSComm1.CommPort = 1
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
MSComm1.CommPort = 1
MSComm1.Settings = “1200,n,8,1”
MSComm1.PortOpen = True
tex1.Text = “已自動選用COM1”
Else
MSComm1.PortOpen = False
MSComm1.CommPort = 2
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
MSComm1.CommPort = 2
MSComm1.Settings = “1200,n,8,1”
MSComm1.PortOpen = True
tex1.Text = “已自動選用COM2”
Else
MSComm1.PortOpen = False
tex1.Text = “通訊埠無法給您用”
End If
End If
End Sub
Private Sub MSComm1_OnComm(Index As Integer)
tex1.Text = “連線中”
MSComm1.Output = “P1.0”
delayms 100
buf = MSComm1.Input
If buf = “0” Then
LOAD1.FillColor = RGB(0, 255, 0)
ElseIf buf = “1” Then
LOAD1.FillColor = RGB(255, 0, 0)
Text0(0).Text = Text0(0).Text + “GasSensor-” + Format(Now, “DD.MMM.YYYY.HH:MM:SS”) + vbNewLine
Else
tex1.Text = “連線失敗”
End If
End Sub
Private Sub MSComm2_OnComm(Index As Integer)
tex1.Text = “連線中”
MSComm1.Output = “2”
delayms 100
buf = MSComm1.Input
If buf = “0” Then
LOAD2.FillColor = RGB(0, 255, 0)
ElseIf buf = “1” Then
LOAD2.FillColor = RGB(255, 0, 0)
Text0(0).Text = Text0(0).Text + “FireSensor-” + Format(Now, “DD.MMM.YYYY.HH:MM:SS”) + vbNewLine
Else
tex1.Text = “連線失敗”
End Sub
Private Sub MSComm3_OnComm(Index As Integer)
tex1.Text = “連線中”
MSComm1.Output = “3”
delayms 100
buf = MSComm1.Input
If buf = “0” Then
LOAD3.FillColor = RGB(0, 255, 0)
ElseIf buf = “1” Then
LOAD3.FillColor = RGB(255, 0, 0)
Text0(0).Text = Text0(0).Text + “BreakGlass-” + Format(Now, “DD.MMM.YYYY.HH:MM:SS”) + vbNewLine
Else
tex1.Text = “連線失敗”
End If
End Sub
Private Sub MSComm4_OnComm(Index As Integer)
tex1.Text = “連線中”
MSComm1.Output = “4”
delayms 100
buf = MSComm1.Input
If buf = “0” Then
LOAD4.FillColor = RGB(0, 255, 0)
ElseIf buf = “1” Then
LOAD4.FillColor = RGB(255, 0, 0)
Text0(0).Text = Text0(0).Text + “Test-” + Format(Now, “DD.MMM.YYYY.HH:MM:SS”) + vbNewLine
Else
tex1.Text = “連線失敗”
End If
End Sub