代码
//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);
}
}
原理图
可是运行只有两个灯闪。请问高手,如何解决?谢谢!
|