想用AVR单片机Atmega16做个程序,控制三个LED工作,
LED1(PD0输出)间隔500ms闪烁LED2(PC0输出)间隔1000ms闪烁LED3(PB0输出)亮灭受(PA0输入)控制其中LED1和LED2是一直工作的,LED...
LED1(PD0输出)间隔500ms闪烁
LED2(PC0输出)间隔1000ms闪烁
LED3(PB0输出)亮灭受(PA0输入)控制
其中LED1和LED2是一直工作的,LED3要PA0=0有输入才亮,没输入就灭
请写一个完整的代码,业余爱好非商业用 展开
LED2(PC0输出)间隔1000ms闪烁
LED3(PB0输出)亮灭受(PA0输入)控制
其中LED1和LED2是一直工作的,LED3要PA0=0有输入才亮,没输入就灭
请写一个完整的代码,业余爱好非商业用 展开
展开全部
随便给你编一个
#include<mega16.h> //灯和按键的另一端都接地 CVAVR
#include<delay.h>
main()
{
DDRA=0X00;DDRB=0XFF;DDRC=0XFF;DDRD=0XFF;
PORTA=0XFF;PORTB=0X00;PORTC=0X00;PORTD=0X00;
while(1)
{
PORTC=0X00;PORTD=0X00;delay(500);
PORTC=0X00;PORTD=0XFF;delay(500);
PORTC=0XFF;PORTD=0X00;delay(500);
PORTC=0XFF;PORTD=0XFF;delay(500);
if(PINA.0==0)
{
PORTB=0XFF;PORTC=0X00;PORTD=0X00;delay(500);
PORTB=0XFF;PORTC=0X00;PORTD=0XFF;delay(500);
PORTB=0XFF;PORTC=0XFF;PORTD=0X00;delay(500);
PORTB=0XFF;PORTC=0XFF;PORTD=0XFF;delay(500);
}
else
{
PORTC=0X00;PORTD=0X00;delay(500);
PORTC=0X00;PORTD=0XFF;delay(500);
PORTC=0XFF;PORTD=0X00;delay(500);
PORTC=0XFF;PORTD=0XFF;delay(500);
}
}
#include<mega16.h> //灯和按键的另一端都接地 CVAVR
#include<delay.h>
main()
{
DDRA=0X00;DDRB=0XFF;DDRC=0XFF;DDRD=0XFF;
PORTA=0XFF;PORTB=0X00;PORTC=0X00;PORTD=0X00;
while(1)
{
PORTC=0X00;PORTD=0X00;delay(500);
PORTC=0X00;PORTD=0XFF;delay(500);
PORTC=0XFF;PORTD=0X00;delay(500);
PORTC=0XFF;PORTD=0XFF;delay(500);
if(PINA.0==0)
{
PORTB=0XFF;PORTC=0X00;PORTD=0X00;delay(500);
PORTB=0XFF;PORTC=0X00;PORTD=0XFF;delay(500);
PORTB=0XFF;PORTC=0XFF;PORTD=0X00;delay(500);
PORTB=0XFF;PORTC=0XFF;PORTD=0XFF;delay(500);
}
else
{
PORTC=0X00;PORTD=0X00;delay(500);
PORTC=0X00;PORTD=0XFF;delay(500);
PORTC=0XFF;PORTD=0X00;delay(500);
PORTC=0XFF;PORTD=0XFF;delay(500);
}
}
追问
这样好像按键输入要等PD输出完毕才能检测到,假如PD延时更长时间,那么按键检测等待时间就更长,能不能实现单片机多任务运行
追答
你说的这个应该需要使用中断编写了,意思相当于你在写作业中途上了一个厕所回来继续写作业。具体程序加两句代码随便改改就行,我建议你买本书仔细学学就行,或者我这有些最小系统的程序和材料,想要我发给你吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询