⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diy0816_08.c

📁 AVR单片机应用开发指南及实例,包含许多实例,挺不错
💻 C
字号:
//8.	I/O端口的进一步应用。
//请你设计SL-DIY08-16主板上4个I/O口32个LED灯的变化多样的广告灯程序。
//     www.sl.com.cn
//    teny@sl.com.cn    05-11-12
// Target : atmega16     Crystal: 8.0000Mhz

#include <iom16v.h>
#include <macros.h>

#define delay_time 500
     //delay_time=500,定义延时常量
unsigned char pa_buf,pb_buf,pc_buf,pd_buf,loop_timers;
	 //定义为字符型变量
void delay_us(int time)
{    //微秒延时         
 do
 {
  time--;
 }	
  while (time>1);
}	  

void delay_ms(unsigned int time)
{    //毫秒延时
 while(time!=0)
 {		
  delay_us(1000);
  time--;
 }
}		

void shiyan8()
{	 //PA口、PB口、PC口、PD口都为输出口
 DDRA=0xFF;PORTA=0xFF;
 DDRB=0xFF;PORTB=0xFF;
 DDRC=0xFF;PORTC=0xFF;
 DDRD=0xFF;PORTD=0xFF;
 delay_ms(delay_time/2);
 while(1)//循环运行
 {
  pa_buf=0x01;//PA0~PA7依次点亮
  for(loop_timers=0;loop_timers<8;loop_timers++)
  {PORTA=~pa_buf;pa_buf=pa_buf<<1;delay_ms(delay_time/3);}
  PORTA=0xff;//PA口熄灭
  pc_buf=0x80;//PC7~PC0一次点亮
  for(loop_timers=0;loop_timers<8;loop_timers++)
  {PORTC=~pc_buf;pc_buf=pc_buf>>1;delay_ms(delay_time/4);}
  PORTC=0xff;//PC口熄灭
  pb_buf=0x01;//PB0~PB7依次点亮
  for(loop_timers=0;loop_timers<8;loop_timers++)
  {PORTB=~pb_buf;pb_buf=pb_buf<<1;delay_ms(delay_time/4);}
  PORTB=0xff;//PB口熄灭
  pd_buf=0x01;//PD0~PD7依次点亮
  for(loop_timers=0;loop_timers<8;loop_timers++)
  {PORTD=~pd_buf;pd_buf=pd_buf<<1;delay_ms(delay_time/4);}
  PORTD=0xff;//PD口熄灭
  for(loop_timers=0;loop_timers<4;loop_timers++)
  {
   PORTA=PORTD=0xf0;PORTB=PORTC=0x0f;delay_ms(delay_time/2);
   PORTA=PORTD=0x0f;PORTB=PORTC=0xf0;delay_ms(delay_time/2);
  }//PA、PB、PC、PD对半交替闪烁
  PORTA=PORTB=PORTC=PORTD=0xFF;//熄灭四个口所有的LED
 }
}

void main()
{
 shiyan8();//实验8函数
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -