你用是汇编语言,估计现在看懂汇编的人不多,虽然我以前写过汇编程序,现在也不想看了,对于你的问题描述,我想问你两个问题:
1、单片机能接收到单字节(如0AAH)吗?
2、中断等参数设置是否正确。
如果单字节能接收,说明你的设计没有问题,一定是中断处理除了问题。
给一段我的中断处理程序,用c语音编写的。
//串口接收中断函数
void serial () interrupt 4 using 3
{
EA=0;
if(RI)
{
unsigned char ch;
RI = 0;
ch=SBUF;
dat[num++]=ch;
}
EA=1;
}
其中dat[num]就是想获取的十六进制数据
VB编写的程序,我也做过,
希望对你有帮助
OK
汇编不太想看,就没全看,但是有两个地方和在一起绝对错误,12M的晶振用9600的波特率是绝对不行的,我个人使用2400的波特率最后一位还会错误,但勉强能通信,所以两个建议:
1,换11.0592的晶振
2. 换成2000一下的波特率
其他的错误暂时不挑了。
其它未细看。首先你的晶振选择得不对,不能用12M,误差太大(8.51%)。如果波特率不变,晶振要用11.0592M(误差为0 )。如果晶振不变,波特率可改成2400试试(误差0.16%)。
MOV TH1,#0F3H ;2400
MOV TL1,TH1
a href="http://www.datasheetcatalog.org/datasheet/hynix/GMS97C56.pdf" target="_blank">http://www.datasheetcatalog.org/datasheet/hynix/GMS97C56.pdf