diy0816_05.c

来自「AVR单片机应用开发指南及实例,包含许多实例,挺不错」· C语言 代码 · 共 58 行

C
58
字号
//5.	用一个I/O端口控制二个I/O端口。
//ATmega16的PB.0端口开关(可用接插线接VCC或GND代替)
//控制PA.0,PA.1两端口LED灯轮流闪烁; 
//LED灯轮流闪烁可模拟动物的眼睛闪烁玩具使用。
//如果用ATmega16的PA.0端口开关控制PB.0,PB.1两端口LED灯轮流闪烁,
//你应该怎样来修改程序。
//     www.sl.com.cn
//     teny@sl.com.cn    05-11-12
// Target : mega16     Crystal: 8.0000Mhz

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

#define delay_time 500
     //delay_time=500,定义延时常量
unsigned char pb_buf;

void delay_us(int time)
{   //微秒延时       
 do
 {
  time--;
 }	
  while (time>1);
}	  

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

void shiyan5()
{
 DDRB=0x00;PORTB=0xFF;//PB口输入,内部上拉
 DDRA=0xFF;PORTA=0xFF;//PA口输出
 while(1)//循环运行
 {
  pb_buf=PINB & 0x01;//检测PINB0是否为0,为1重新检测
  if(pb_buf==0x00)//为0,PA0和PA1的两LED交替闪烁
  {
   PORTA=0xfe;//只让PA0的LED亮
   delay_ms(delay_time);//延时
   PORTA = 0xfd;//只让PA1的LED亮
   delay_ms(delay_time);//延时
  }//重新检测
  PORTA=0xff;//为1,熄灭PA口的所有LED
 }
}

void main()
{
 shiyan5();//实验5函数
} 

⌨️ 快捷键说明

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