打印
[AVR单片机]

M128似乎进不了主程序,看门狗正常。

[复制链接]
1287|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cpu51|  楼主 | 2013-8-28 11:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//ICC-AVR application builder : 2013/8/28 9:07:52
// Target : M128
// Crystal: 11.059Mhz

#include <iom128v.h>
#include <macros.h>
#include <math.h>
#include <stdio.h>

void delay(unsigned int ms);
void delay_ms(unsigned int ms);

#define run_led_h    PORTF|=(1<<PF7)   //置高电平
#define run_led_l    PORTF&=~(1<<PF7) //拉低电平
#define comm_led_h    PORTF|=(1<<PF6)   //置高电平
#define comm_led_l    PORTF&=~(1<<PF6) //拉低电平

void delay(unsigned int ms)
{
  unsigned int i;
   for(i=0;i<ms;i++)
   {
                   _NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();                  
   }  
}

void delay_ms(unsigned int ms)
{
  unsigned int i;
   for(i=0;i<ms;i++)
   {
    delay(780);
    _NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();
        _NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();
        WDR();
    }  
}

void port_init(void)
{
PORTA = 0xFF;
DDRA  = 0xFF;
PORTB = 0x00;
DDRB  = 0x03;
PORTC = 0xFF; //m103 output only
DDRC  = 0xFF;
PORTD = 0xFF;
DDRD  = 0xFF;
PORTE = 0xFE;
DDRE  = 0xFE;

PORTF = 0x5F;
DDRF  = 0xFF;

PORTG = 0x00;
DDRG  = 0x00;

}

//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9600 (0.0%)
// char size: 8 bit
// parity: (Reserved)
void uart0_init(void)
{
UCSR0B = 0x00; //disable while setting baud rate
UCSR0A = 0x00;
UCSR0C = 0x16;
UBRR0L = 0x47; //set baud rate lo
UBRR0H = 0x00; //set baud rate hi
UCSR0B = 0x18;
}
/*
//Watchdog initialize
// prescale: 2048K
void watchdog_init(void)
{
WDR (); //this prevents a timeout on enabling
WDTCR |= (1<<WDCE) | (1<<WDE);// 30-Oct-2006 Umesh  
WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
WDTCR = 0x00;
}
*/

//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
XDIV  = 0x00; //xtal divider
XMCRA = 0x00; //external memory

port_init();

PORTF = 0xEF;
DDRF  = 0xFF;


uart0_init();

MCUCR = 0x00;
MCUCSR=0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x00; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
//SEI(); //re-enable interrupts
//all peripherals are now initialized

}

void main(void)
{
//CLI();
init_devices();
while(1)  //在端口初始化中,F口是5F,有2个LED灯亮,主程序中将LED
          //全熄灭。但实际只有2个灯一直亮,似乎进不到主程序中。
{
PORTF = 0xFF;
DDRF  = 0xFF;
delay(2000);
PORTF = 0x0F;
DDRF  = 0xFF;
delay(2000);

}
}

相关下载

相关帖子

沙发
huangxz| | 2013-8-28 11:43 | 只看该作者
配置位有问题没,
又是个icc的,呵呵。

使用特权

评论回复
板凳
qin552011373| | 2013-8-28 19:37 | 只看该作者
你是不是直接生成的程序?把你自己写的程序拿下去看看能不能正常

使用特权

评论回复
地板
cpu51|  楼主 | 2013-8-30 20:19 | 只看该作者
已经解决了,是ICC里面的芯片配置忘了配置。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:承接工业远程控制系统及设计研发,DCS控制系统,无线采集控制系统,单片机设计,工业设备维修,仪器仪表、控制系统维护、检修。

98

主题

458

帖子

0

粉丝