打印
[AVR单片机]

ICCVR建立工程运行有问题

[复制链接]
2535|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
代码
//ICC-AVR application builder : 2012/2/13 20:52:33
/*******************************************************************************
* 版权:     涛哥
*
* 单片机:   ATMAGE64A AU 1036
* 晶振:     外部8MHz
* 编译器:   ICC 7.22
*
* 文件名:   main.c
* 版本:     1.0
* 完成日期:
* 功能描述: 在8M晶振下,实现6路LED流水灯操作
*******************************************************************************/
#include <iom128v.h>
#include <macros.h>

#define LED PORTF
#define BEEL_ON  PORTB |= BIT(0);
#define BEEL_OFF PORTB &= ~BIT(0);

/*******************************************************************************
* 函数名称: delay_us()
* 入口参数: microsecond : 输入延时微秒的时间
* 出口参数:
* 功能描述: 微秒的延时                    
*******************************************************************************/
void delay_us(unsigned int microsecond)
{      
    do
        {
        microsecond--;
        }         
    while (microsecond>1);
}
/*******************************************************************************
* 函数名称: delay_ms()
* 入口参数: millisecond : 输入延时毫秒的时间
* 出口参数:
* 功能描述: 毫秒的延时         
*******************************************************************************/
void delay_ms(unsigned int millisecond)
{      
    while (millisecond--)
        {
        delay_us(999);
        }  
}
void port_init(void)
{
PORTA = 0x07;     
DDRA  = 0x07;
PORTB = 0x01;
DDRB  = 0x01;
PORTC = 0x00; //m103 output only
DDRC  = 0x00;
PORTD = 0xFF;
DDRD  = 0xFF;
PORTE = 0x00;
DDRE  = 0x00;
PORTF = 0xFF;   //输入输出模式的设置!    1:为输入模式  2:为输出模式!
DDRF  = 0xFF;   //LED口 PF2~PF7  
PORTG = 0x00;
DDRG  = 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();


MCUCR = 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)
{
        unsigned char l;
        unsigned int k;
            init_devices();
        BEEL_ON;
        delay_ms(100);
        BEEL_OFF;
        PORTF=0XFF;
        PORTD=0X00;
        PORTA=0X00;
    while(1)
    {
            PORTF= 0X00;
                delay_ms(100);
                PORTF = 0XFF;
                delay_ms(100);
               
    }
}

原理图

可是运行只有两个灯闪。请问高手,如何解决?谢谢!

使用特权

评论回复

相关帖子

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

本版积分规则

467

主题

3517

帖子

7

粉丝