我想用计数器0来计数,以得到相应的时候,但程序好像没有运行成功,求各位大神指点...
程序如下:
#include <iom16v.H> //器件配置文件
#include <macros.h>
#define TXoff PORTB&=~BIT(0)
#define TXon PORTB|=BIT(0)
void Delay5Ms(void);
void Delay400Ms(void);
unsigned int time=0;
unsigned long S=0;
void Delay5Ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc--);
}
//400ms延时
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--)
{
TempCycB=7269;
while(TempCycB--);
};
}
void Conut(void)
{
time=TCNT0*256;
TCNT0=0X00;
S=(time*1.7)/100;
}
/********************************************************/
/********************************************************/
void StartModule(void) //启动模块
{
TXon; //启动一次模块
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
TXoff;
}
/********************************************************/
void delayms(unsigned int ms)
{
unsigned char i=100,j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}
/*********************************************************/
void main(void)
{
unsigned char RX;
RX=PINB&BIT(1);
TCCR0=0X00;
TCNT0=0X00;
DDRB|=0XFD;
DDRA=0XFF;
PORTA=0XFF;
while(1)
{
StartModule();
while(!RX); //当RX为零时等待
TCCR0=0X06;
while(RX); //当RX为1计数并等待
TCCR0=0X00; //关闭计数
Conut(); //计算
delayms(80); //80MS
if(S>10) PORTA=0X00;
else PORTA=0XF0;
}
}
|