在KEIL软件中写好程序后,通过RS232串口经MAX232芯片电平转换后能直接将程序下载到单片机STC89C51吗?

 我来答
论宇之新宇宙观
2011-07-27 · 中国人自己的宇宙观,新世纪新宇宙观!
论宇之新宇宙观
采纳数:514 获赞数:2456

向TA提问 私信TA
展开全部
可以,但要设置好项目选项。在其中“功能”页中有编程选项可以选择。
日日超超
2011-07-27 · TA获得超过482个赞
知道小有建树答主
回答量:318
采纳率:100%
帮助的人:92.8万
展开全部
可以到宏晶公司的官方网站上下载,STC系列单片机就是宏晶公司出的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ef71dfe91
2011-07-26
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
不能 首先经过KEIL编译生成HEX文件后,再用专门的下载软件下载
更多追问追答
追问
生成HEX文件后,用什么下载软件下载,谢谢
追答
STC isp  下载软件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-07-27
展开全部
楼上发的不是VB代码!
我来回答
....首先,串口所发的数据是有码制变化的。。分为2种情况,字符串和16进制发送。

两种方式的发送和接受方法是不同的。

先说16进制的

Dim sData() As Byte
Dim bData(1 To 6) As Byte
Dim strBuff As String

MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True

bData(1) = &HE0
bData(2) = &H0
bData(3) = &H3F
bData(4) = &H0
bData(5) = &H0
bData(6) = &H1F

MSComm1.InputMode = comInputModeBinary

必须把数据先存进一个字符数组中。

下面是接收的代码
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = 2 Then

MSComm1.InputLen = 0
strBuff = MSComm1.Input
sData() = strBuff

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

Text1.Text = strdata

If Text1.Text <> Text2.Text Then
Text2.Text = Text1.Text

List1.AddItem (Text2.Text)

End If

End If
End Sub

下面是发送的代码
MSComm1.Output = bData

好了16进制就是这样。
如果是字符串发送方式就简单了。。直接发送,不用存到数组中。MSComm1.Output = "abcd" 接收只需要把strBuff = MSComm1.Input放在循环中判断就行了。

说明。。一般设备控制多用字符串方法就可以了。。如投影机的控制等。而单片机的控制多用于16进制传输的方法。先要搞清楚用的什么方式。

再说编码的问题。。一般都是 明码转成ascII码再转成16进制码。然后再发送。

再解释一下用数组的理由:
单片机接受数据一般的都是一串16进制值的组合。如1f 00 00 1e ff 2c等等。。要一次发送出一个组合的数据,必须用数组存这些数据后发送这个数组!
另外,虚机团上产品团购,超级便宜
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-07-27
展开全部
楼上发的不是VB代码!
我来回答
....首先,串口所发的数据是有码制变化的。。分为2种情况,字符串和16进制发送。

两种方式的发送和接受方法是不同的。

先说16进制的

Dim sData() As Byte
Dim bData(1 To 6) As Byte
Dim strBuff As String

MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True

bData(1) = &HE0
bData(2) = &H0
bData(3) = &H3F
bData(4) = &H0
bData(5) = &H0
bData(6) = &H1F

MSComm1.InputMode = comInputModeBinary

必须把数据先存进一个字符数组中。

下面是接收的代码
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = 2 Then

MSComm1.InputLen = 0
strBuff = MSComm1.Input
sData() = strBuff

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

Text1.Text = strdata

If Text1.Text <> Text2.Text Then
Text2.Text = Text1.Text

List1.AddItem (Text2.Text)

End If

End If
End Sub

下面是发送的代码
MSComm1.Output = bData

好了16进制就是这样。
如果是字符串发送方式就简单了。。直接发送,不用存到数组中。MSComm1.Output = "abcd" 接收只需要把strBuff = MSComm1.Input放在循环中判断就行了。

说明。。一般设备控制多用字符串方法就可以了。。如投影机的控制等。而单片机的控制多用于16进制传输的方法。先要搞清楚用的什么方式。

再说编码的问题。。一般都是 明码转成ascII码再转成16进制码。然后再发送。

再解释一下用数组的理由:
单片机接受数据一般的都是一串16进制值的组合。如1f 00 00 1e ff 2c等等。。要一次发送出一个组合的数据,必须用数组存这些数据后发送这个数组!
另外,站长团上有产品团购,便宜有保证
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式