|
當(dāng)P1為高電平串口發(fā)送字符串b,低電平發(fā)送a。現(xiàn)在要求當(dāng)接受高低電平信號后只發(fā)送一次字符串就停止。等待下次再接收到信號再發(fā)送。還有消除單片機(jī)上電高電平的影響,就是單片機(jī)上電的時候不發(fā)送b。程序應(yīng)該怎樣改。
#include<reg52.h>
sbit shuru=P1^0;
unsigned char PuZh[16] = "a";
unsigned char BuZh[16] = "b";
void UsartConfiguration();
void Delay10ms(unsigned int c); //誤差 0us
void main()
{
unsigned char i;
UsartConfiguration();
while(1)
{
if(shuru==0)
{
for(i=0; i<16; i++)
{
SBUF = PuZh[i]; //將要發(fā)送的數(shù)據(jù)放入到發(fā)送寄存器
while(!TI); //等待發(fā)送數(shù)據(jù)完成
TI=0; //清除發(fā)送完成標(biāo)志位
TR1 = 0;
ES = 0;
EA = 0;
}
Delay10ms(500); //延時一下再發(fā)
}
else
for(i=0; i<16; i++)
{
SBUF = BuZh[i]; //將要發(fā)送的數(shù)據(jù)放入到發(fā)送寄存器
while(!TI); //等待發(fā)送數(shù)據(jù)完成
TI=0; //清除發(fā)送完成標(biāo)志位
TR1 = 0;
ES = 0;
EA = 0;
}
Delay10ms(500); //延時一下再發(fā)
}
}
/*******************************************************************************
* 函 數(shù) 名 :UsartConfiguration()
* 函數(shù)功能 :設(shè)置串口
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void UsartConfiguration()
{
SCON=0X50; //設(shè)置為工作方式1
TMOD=0X20; //設(shè)置計數(shù)器工作方式2
PCON=0X80; //波特率加倍
TH1=0XFA; //計數(shù)器初始值設(shè)置,注意波特率是4800的
TL1=0XFA;
// ES=1; //打開接收中斷
// EA=1; //打開總中斷
TR1=1; //打開計數(shù)器
}
void Delay10ms(unsigned int c) //誤差 0us
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
|
|