永发信息网

智能车avr单片机 能人翻译一下

答案:2  悬赏:0  手机版
解决时间 2021-02-04 06:05
  • 提问者网友:饥饿走向夜
  • 2021-02-03 14:18
#include
#include
void delay(unsigned int i)
{
while(i)
{i=i-1;
}
}

#pragma interrupt_handler Timer1_ovf:10
void Timer1_ovf(void)
{
TCNT1H = 0xff; //reload counter high value
TCNT1L = 0x23; //reload counter low value
PORTC^=0x03;
delay(100);
}
void initial(void)
{
unsigned char sreg;
SREG=0x80;//使能全局中断
DDRA=0x00;
PORTA=0x00;
DDRC=0xFF;
PORTC=0xFF;
DDRD=0xFF;
PORTD=0xFF;
TIMSK|=(1< TCCR1A=0x00; //配置定时器工作在普通模式
TCCR1B=0x01; //无分频
TCNT1H=0xff;
TCNT1L=0x23;

}
int main(void)
{

initial();
while(1)
{

if((PINA&0x20)==0)
{
PORTC=0x0b;
PORTD=0x70;
}
else
{
PORTC=0x0f;
PORTD=0xf0;
}
}
return (0);
}
最佳答案
  • 五星知识达人网友:酒醒三更
  • 2021-02-03 14:32
要看你的PA PB PC PD上都接的什么
用了个定时器,在定时器里面翻转PB上的某个IO
主程序不断读PA的某个引脚,根据状态操作PC和PD
全部回答
  • 1楼网友:玩世
  • 2021-02-03 15:45
#include //AVR Mega32单片机的头文件 #include void delay(unsigned int i) //延时程序 { while(i) {i=i-1; } } #pragma interrupt_handler Timer1_ovf:10 //在定时器中断中必须为定时器重新赋初值 void Timer1_ovf(void) { TCNT1H = 0xff; //reload counter high value TCNT1L = 0x23; //reload counter low value PORTC^=0x03;//PORTC口中的低两位翻转,例如PORTC开始时是00000011,那么运行完这一句话后就是00000000 delay(100); } void initial(void)//单片机初始化函数 { unsigned char sreg; SREG=0x80;//使能全局中断 DDRA=0x00;//PORTA方向设置为输入 PORTA=0x00;//关闭PORTA的上拉电阻 DDRC=0xFF;//PORTC方向设置为输出 PORTC=0xFF;//PORTC的初始值为0xFF,也就是首先你到iom128.h的文件中你会发现,eewe是avr程序里面宏定义好的为1的。 #define eerie 3 #define eemwe 2 #define eewe 1 #define eere 0 <<是左移位的意思 1<
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯