51单片机里面的几个函数 谁能帮我解决一下 每一行能帮我详细讲解一下么

2025-06-26 09:45:45
推荐回答(2个)
回答1:

void Timer0Init(void) //1微秒@11.0592MHz
{
TMOD &= 0xF0; //定时器1保持原状态不变
TMOD |= 0x02; //定时器0设置为模式2
TH0=0xF7; //初值为256-9
TL0=0xF7; //重装值
EA=1; //开总中断
ET0=1; //开t1中断

// TR0=1; // 开始计时

void tm0_isr() interrupt 1 using 1//定时器0中断服务函数,使用工作寄存器区1
{

}

///////////////////////////////////////////////////////////////

//External interrupt0 service routine
void exint0() interrupt 0 //(location at 0003H) //外部中断0服务函数
{
Alarm_Off = 1; //报警控制信号置1

}

////////////////////////////////////////////////////////////////

void delay200ms(void) //延时200毫秒
{
unsigned char a,b,c;
for(c=55;c>0;c--)
for(b=100;b>0;b--)
for(a=3;a>0;a--);
}

void delay500ms(void) //延时500毫秒
{
unsigned char a,b,c;
for(c=67;c>0;c--)
for(b=141;b>0;b--)
for(a=18;a>0;a--);
_nop_();
}

void delay1s(void) //延时1秒
{
unsigned char a,b,c;
for(c=95;c>0;c--)
for(b=26;b>0;b--)
for(a=185;a>0;a--);
}

//----------- INIT UART ----------------------------------------

void UartInit()//串口初始化函数
{
SCON = 0x50; //8-bit variable UART
TMOD = 0x20; //Set Timer1 as 8-bit auto reload mode
TH1 = TL1 = -(FOSC/12/32/BAUD); //Set auto-reload vaule
TR1 = 1; //Timer1 start run
EA = 1; //Open master interrupt switch
}

//------- Send a byte data to UART ----------------------------
void SendData(unsigned char dat)//发送一个字节
{
SBUF = dat; //Send data to UART buffer
while(!TI);
TI=0;
}

//------- Send a string to UART -------------------------------
void SendString(char *s)//发送字符串
{
while (*s) //Check the end of the string
{
SendData(*s++); //Send current char and increment string ptr
}
} 收起 sunqi8838306 5

回答2:

关键的语句,都已经有注释了。