diy0816_06.c
来自「AVR单片机应用开发指南及实例,包含许多实例,挺不错」· C语言 代码 · 共 56 行
C
56 行
//6. 用1个I/O端口控制8个I/O端口。
//ATmega16的PB.0端口开关(可用接插线接VCC或GND代替)控制PA口8个LED灯闪烁;
//可作简单的广告灯使用。
//如果ATmega16的PB.0端口开关要控制PA口,PC口,PD口三个口同时闪烁,
//你应该怎样编程序?
// 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 shiyan6()
{
DDRB=0x00;PORTB=0xFF;//PB口输入,内部上拉
DDRA=0xFF;PORTA=0xFF;//PA口输出
while(1)//循环运行
{
pb_buf=PINB & 0x01;//检测PINB0是否为0,为1重新检测
if(pb_buf==0x00)//为0,PA口的LED整体闪烁
{
PORTA=0x00;//点亮PA口所有的LED
delay_ms(delay_time);//延时
PORTA = 0xff;//熄灭PB口所有的LED
delay_ms(delay_time);//延时
}//循环检测,为1停止闪烁(熄灭)
}
}
void main()
{
shiyan6();//实验6函数
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?