8051单片机初始化串口1,使用T1定时器,22.1184M晶振,波特率57600bps
void serial_init(){
//TMOD = 0x20; //定时器1工作于8位自动重载模式
TMOD &= 0x0f;
TMOD |= 0x20;
TH1 = 0xFF; //波特率
TL1 = 0xFF;
SCON = 0xD0; //串口工作方式为MODE1(10位数据,接收), SCON=0x50(10位数据, 接收) SCON = 0xD0 (11位数据,接收)
// SCON=0xC0 (11位数据,不接收)
}
//注意:当使用仿真器时,需要打开中断!!否则仿真器不能正常停止
void serial_start(){
EA = 1; //所有中断
ES = 1; //串口中断
TR1 = 1; //启动定时器1
}
void serial_stop(){
TR1 = 0;
ES = 0; //关闭串口中断
}
void send_byte(unsigned char b, bit tb8){
TB8 = tb8; //第9位
SBUF = b;
while(!_testbit_(TI)); //查询发送
TI = 0;
}
/* 串口0中断服务程序(receive)*/
void serial0_interrupt() interrupt 4
{
//ES0 = 0; //关串行中断
if(_testbit_(RI)){
RI = 0;
show(SBUF%10);
}
}
|
阅读(4203) | 评论(0) | 转发(0) |