15.3.c
来自「中间配套传感器的测试 avr 有很多地方需要改进」· C语言 代码 · 共 58 行
C
58 行
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
volatile unsigned char count,center_sensor;
unsigned char tmp;
void initialize_timer(void);
void delay(int d1,int d2);
SIGNAL(SIG_OVERFLOW0)
{
TCNT0=141;
count++;
switch(count)
{
case 1:
tmp=PINE|0x04;
PORTE=tmp;//中间传感器发射
center_sensor=PINF;//PINF=0x00
break;
case 2:
//center_sensor=PINF&0x10;
tmp=PINE&~0x04;
PORTE=tmp;//停止发射
center_sensor=PINF;//0x10
//count=0;//为什么这里不行?
break;
case 3:
count=0;
break;
/*default:
break;*/
}
}
int main()
{
DDRD=0xf0;
DDRE=0x04;
DDRF=~0x10;
initialize_timer();
while(1)
{
delay(1000,1000);
PORTD=center_sensor;
}
}
void initialize_timer()
{
TCNT0=141;//记数初值
TCCR0=0x03;//时钟选择
TIMSK=0x01;//溢出中断使能
sei();//置位
}
void delay(int d1,int d2)
{
int i,j;
for(i=0;i<d1;i++)
for(j=0;j<d2;j++);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?