高级会员

- 积分
- 767
- 金钱
- 767
- 注册时间
- 2017-5-11
- 在线时间
- 100 小时
|
1金钱
刚拿到新项目,叫用AVR单片机,用的ICC for AVR ,但是现在反复的被看门狗复位啊,因为用了熔丝,所以看门狗没办法关闭,现在是我不动他不复位,只要一操作按键就复位一次[mw_shl_code=c,true]//ICC-AVR application builder : 2017/12/26 15:39:41
// Target : M8
// Crystal: 4.0000Mhz
#include <iom8v.h>
#include <macros.h>
#include "usart.h"
u8 key_scan(void);
void watchdog_init(void)
{
WDR();
WDTCR = 0X1F;
WDTCR = 0X0F;
}
void port_init(void)
{
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x1f;
DDRC = 0x1f;
PORTD = 0x00;
DDRD = 0x00;
}
void init_devices(void)
{
CLI();
port_init();
uart_init(51);//9600
watchdog_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x00;
SEI();
}
void main(void)
{
//delay_ms(1000);
init_devices();
while(1)
{
key_scan();
WDR();
}
}
u8 key_scan(void)
{
char flag=0;
if(PIND&(1<<PIND2))//KEY1
{
delay_ms(5);
if(PIND&(1<<PIND2))
{
flag=1;
uart_send(0x31);
PORTC &= ~(1<<PORTC0);
while(PIND&(1<<PIND2))WDR();
}
}
if(PINC&(1<<PINC5))//KEY2
{
delay_ms(5);
if(PINC&(1<<PINC5))
{
flag=2;
uart_send(0x32);
PORTC &= ~(1<<PORTC4);
while(PINC&(1<<PINC5))WDR();
}
}
if(PIND&(1<<PIND3))//KEY3
{
delay_ms(5);
if(PIND&(1<<PIND3))
{
flag=3;
uart_send(0x33);
PORTC &= ~(1<<PORTC3);
while(PIND&(1<<PIND3))WDR();
}
}
if(PIND&(1<<PIND4))//KEY4
{
delay_ms(5);
if(PIND&(1<<PIND4))
{
flag=4;
uart_send(0x34);
PORTC &= ~(1<<PORTC2);
while(PIND&(1<<PIND4))WDR();
}
}
if(PINB&(1<<PINB6))//KEY5
{
delay_ms(5);
if(PINB&(1<<PINB6))
{
flag=5;
uart_send(0x35);
PORTC &= ~(1<<PORTC1);
while(PINB&(1<<PINB6))WDR();
}
}
return flag;
}
[/mw_shl_code]
求帮忙啊,现在一直找不到哪里触发的看门狗复位
|
|