/********************************************************
实验一: 控制LED闪烁实验
说明: 按制D1每隔500MS亮一次
CPU型号: ATMEGA128A
晶振频率: 8MHZ
日期: 2011-3-12
联系方法: MCU.2000@163.com
********************************************************/ #include<iom128v.h>
#define uchar unsigned char
#define uint unsigned int //void Delay_us(uint US);
//void Delay_ms(uint MS);
void wait(void) //拖延时间的函数
{
int count;
for(count=0;count<30000;count++)
{
}
}
void main(void)
{
//DDRA=0XFF; //LED IO口设为输出
DDRC=0XFF; //数码管段选设为输出
DDRF |=0X03; //LED及数码管锁存IO口设为输出
PORTF|=0X0E;
PORTA=0XFF;
PORTC=0XFF;
PORTF&=0xF9; //锁存数据关闭数码管 DDRB=0XFF; //PORTB设为输出
DDRB|=0X10; //PB4设为输出
PORTB|=0X10; //关闭PB4外接的LED
DDRA|=(1<<DDA0);
while(1)
{
PORTA &=~(1<<PORTA0);
wait();
PORTA|=(1<<PORTA0);
wait();
}
}
//void main(void)
//{
// DDRA=0XFF; //LED IO口设为输出
// DDRC=0XFF; //数码管段选设为输出
// DDRF |=0X03; //LED及数码管锁存IO口设为输出
// PORTF|=0X0E;
// PORTA=0XFF;
// PORTC=0XFF;
// PORTF&=0xF9; //锁存数据关闭数码管 // DDRB=0XFF; //PORTB设为输出
//DDRB|=0X10; //PB4设为输出
//PORTB|=0X10; //关闭PB4外接的LED
// while(1)
// {
//PORTA=0X00; //点亮全部
//PORTA=0xFE; //点亮LED1
//PORTA=0XFd; //点亮LED2
//PORTA=0XFB; //点亮LED3 *通过对每位的置零,可以点亮任意灯
// PORTA=0X46;
// PORTB=0X00;
//PORTB &=~(1<<DDB4); //通过运算,PORTB4设为0
// Delay_ms(500); //延时500MS
//Delay_ms(500);
//PORTA=0xff; //关闭LED1
// PORTA=0xFF;
// PORTB=0XFF;
//PORTB|=(1<<PORTB4); //pb4设为1
// Delay_ms(500);
//Delay_ms(500);
// PORTA=0X46;
// PORTB=0X00;
// Delay_ms(100);
// }
//} /****************************************************
函数名称: Delayus
功 能: 延时指定微秒(8M晶振)
参 数: US--延时的微秒数(大约,不是很精确,MS越大越准确)
返回值 : 无
/****************************************************/
//void Delay_us(uint US)
//{
// uint i;
// US=US*5/4;
// for( i=0;i<US;i++);
//}
/****************************************************
函数名称: Delayms
功 能: 延时指定毫秒(8M晶振)
参 数: MS--延时的毫秒数
返回值 : 无
通过软件仿真反复实验得到的数值
/****************************************************/
//void Delay_ms(uint MS)
//{
// uint i,j;
// for( i=0;i<MS;i++)
// for(j=0;j<1141;j++);
//}