今天做了一下實驗,從VB程序中向單片機發(fā)送數(shù)據(jù),結(jié)果問題很嚴(yán)重。求高人解答一下。
比如:
從VB發(fā)出的數(shù)據(jù) -> 單片機獲得的數(shù)據(jù)
0 -> 0xfa
4 -> 0xfb
5 -> 0xff
11 -> 0xad
12 -> 0xa5
15 -> 0xcc
單片機代碼:
#include
//串口初始化
void serial_init(void)
{
//ET1 = 0; //CLR 0ABH ;禁止T1中斷
TMOD = 0x20; //MOV 89H,#20H ;timer 1 mode 2: 8-Bit reload(定時器T1 模式2: 8位自動初值重裝)
TH1 = 0xE8; //MOV 8DH,#0E8H
TL1 = 0xE8; //MOV 8BH,#0E8H ;1200bps, 11.059
TR1 = 1; //SETB 8EH ;啟動定時器1
SCON = 0x50; // mode 1: 10-bit UART, enable receiver(模式1: 10位異步發(fā)送/接收, 使能接收允許位)
//SM1 = 1; // ;串行口 模式1
//SM0 = 0;
//REN = 1; // ;允許串行中斷接收
SM2 = 1; //SETB O9DH ;收到有效的停止位時才將RI置1
ES = 1; //SETB 0ACH ;允許串行中斷
EA = 1; //SETB 0AFH ;總中斷開
}
void main(void)
{
unsigned char i;
serial_init(); // 串口初始化
do {
P0 = SBUF;
}while(1);
}
[此貼子已經(jīng)被作者于2010-1-13 22:12:29編輯過]
|