发布时间 : 星期一 文章单片机课后习题答案[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--; } }