
只要设置以下参数:TMOD TH1 TL1 SMOD(PCON) SCON EA ES TR1等。
以下代码,供初始化用参考:
MOV TMOD,#20H 定时器1用作波特率发生器
ORL PCON,#80H
MOV TL1,#0F3H 4800波特率的初值,板子使用12M晶振,初值=256-12000000/32/12/2400
MOV TH1,#0F3H
MOV SCON,#50H 串口的工作方式,设置为方式2
SETB EA 打开总中断
SETB ES 打开串口中断
SETB TR1 启动波特率发生
不同的机子只要设置相同的波特率,理论上就可以通讯。
MOV SBUF,A 将A中的数据发出去
MOV A,SBUF 将收到的数据放入A中
至于其它细节性的东西,可以参考相关书本或文章。
串口收发,要有通信协议。也就是什么时候开始接收,接收到指令后,转发什么数据。这个要知道,才可以写。而且使用不同的51单片机,其内部寄存器配置是不同的。一般来说,过程如下:
1,配置串口参数、波特率等,开启串口中断;
void Init_UART()
{
}
2,中断函数里写中断响应函数,根据接收的指令或者数据,执行相应的动作;
程序一般为:
void UART_ISR() interrupt x using y
{
串口中断处理函数
}
x - 单片机的C51中断号
y - 指定使用的当前工作寄存器组号(0-3 PSW中的RS0,RS1组合)
3,主程序
int main(void)
{
Init_UART()
while(1)
{
//数据发送函数
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)