|
下面是我编在单片机上的串行通讯接收部分的编码(BASIC语言)
$regfile = "m16def.dat"
$crystal = 8000000
$baud = 9600
Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5
Config Lcd = 16 * 2
Config Portb = Output
Portb.0 = 1
Portb.1 = 1
Portb.2 = 0
Dim B As String * 1
Dim W As String * 20
W = ""
On Urxc Isr
Enable Urxc
Enable Interrupts
Do
Idle
Loop
Isr:
B = Inkey()
If B = Chr(13) Then
Portb.0 = 0
Cls
Lcd W
Else
Cls
Lcd 2
W = W + B
Portb.1 = 0
End If
Return
Portb.1接LED灯
在家用电脑上用VB2005编写,发送部分语句是
RS232.Write(TextBox1.Text & vbCr)
我在TextBox1输入A,点击发送按钮,单片机这边,Lcd显示2,接Portb.1的LED灯亮。
单片机编码部分,把Lcd 2改位Lcd B(让单片机显示接收的字符),同样在TextBox1输入A,点击发送按钮,单片机这边,Lcd显示怪码,接Portb.1的LED灯亮。从以上现象看,1、单片机与家用电脑能够串行通讯,因为中断发生了。2、单片机接收的是怪码。为什么?单片机和电脑的波特率9600,无校验,数据位8,停止位1. 如果要在单片机上设定用ASCII码传输,是不是只要数据位8就可以了? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|