pc串口和单片机通讯的问题
在单片机和pc上设置的都是9600波特率,无奇偶校验,8位数据位,1位停止位
我用的是RC来产生单片机所需的时钟,理论上想设计4MHz的,但在时钟输入端实测是5.05M
单片机的波特率是由公式 ((FCY/9600)/16)-1 来算的,FCY是指令时钟频率,我设成5.05M对应的1262626和4M对应的1000000时,出不了正确结果,设成1600000时,有时出正确结果,有时结果又不对,但是错误的结果又固定为那1到2种特定值,这种情况是由于波特率的设置有问题造成的吗?
这是pc部分接收数据的程序:
Private Static Sub MSComm1_OnComm()
Dim Buffer As String
Dim sData() As Byte
Dim i As Integer
Select Case MSComm1.CommEvent
Case comEvReceive
Buffer = MSComm1.Input
sData() = Buffer
For i = 0 To UBound(sData)
If Len(Hex(sData(i))) = 1 Then
strdata = strdata & "0" & Hex(sData(i)) & " "
Else
strdata = strdata & Hex(sData(i)) & " "
End If
Next i
txtTerm.Text = strdata
End Select
End Sub