单片机课后习题答案[1]1 联系客服

发布时间 : 星期一 文章单片机课后习题答案[1]1更新完毕开始阅读552798096c85ec3a87c2c51f

/********** 初始化串口波特率 ************/

void initUart(void)/*初始化串口波特率,使用定时器1*/ {

/* Setup the serial port for 1200 baud at 11.0592MHz */ SCON = 0x50; //串口工作在方式1 TMOD = 0x20; PCON = 0x0;

TH1 = 0xe8; //波特率1200 TCON = 0x40;

if(!SEND_RECI_CTRL)

IE=0x90; //如果是接收方,则打开串口中断 }

void send(uchar *d) /*发送函数*/ {

uchar i;

for(i=0;i<15;i++){ time(10);

SBUF=d[i]; /*发送一个数据*/ while(TI==0){}TI=0; } }

/*********** 串行口中断服务程序***************/ void serial0_int(void) interrupt 4 {

*p_rbuf=SBUF;RI=0; p_rbuf++; }

/********************************************************* * 函数说明:延时5us,晶振改变时只用改变这一个函数! 1、对于11.0592M晶振而言,需要2个_nop_(); 2、对于22.1184M晶振而言,需要4个_nop_(); * 入口参数:无 * 返回: 无

*********************************************************/ void delay_5us(void)//延时5us,晶振改变时只用改变这一个函数! {

_nop_(); _nop_(); //_nop_(); //_nop_(); }

/************ delay_50us ***************/ void delay_50us(void)//延时50us { unsigned char i;

for(i=0;i<4;i++) { delay_5us(); } }

/******** 延时100us ******************/ void delay_100us(void)//延时100us { delay_50us(); delay_50us(); }

/*********** 延时单位:ms *******************/ void time(unsigned int ucMs)//延时单位:ms { unsigned char j; while(ucMs>0){

for(j=0;j<10;j++) delay_100us(); ucMs--; } }