lesson5.c

来自「AVR mega16单片机的示例程序」· C语言 代码 · 共 72 行

C
72
字号
#include <avr/io.h>
int main(void)
{
	DDRD &= ~(1 << 6);
	PORTD |= (1 << 6);
	DDRD &= ~(1 << 7);
	PORTD |= (1 << 7);
	DDRD &= ~(1 << 2);
	PORTD |= (1 << 2);
	DDRD &= ~(1 << 3);
	PORTD |= (1 << 3);

	DDRA |= (1 << 3);
	PORTA &= ~(1 << 3);//关蜂鸣器

	DDRB = 0xff;

	while(1)
	{
		switch(PIND & 0b11001100)
		{
			case 0b11001100://K1被按下
			{
				PORTB |= (1 << 0);//LED0发光
				break;
			}
			case 0b11000000://K2被按下
			{
				PORTB |= (1 << 1);//LED1发光
				break;
			}
			case 0b10001000://K3被按下
			{
				PORTB |= (1 << 2);//LED2发光
				break;
			}
			case 0b01001000://K4被按下
			{
				PORTB |= (1 << 3);//LED3发光
				break;
			}
			default://0b11001000
			{
				PORTA &= ~(1 << 3);//关蜂鸣器
				PORTB = 0;
				break;
			}
		}
		/*if(!(PIND & (1 << 6)))//K3按键被按下
		{
			PORTA |= (1 << 3);//蜂鸣器鸣响
		}
		else if(!(PIND & (1 << 7)))//K4按下
		{
			PORTB |= (1 << 0);//第1个LED发光
		}
		else if(PIND & (1 << 2))//K1按下
		{
			PORTB |= (1 << 1);//第2个LED发光
		}
		else if(!(PIND & (1 << 3)))//K2按下
		{
			PORTB |= (1 << 2);//第3个LED发光
		}
		else//按键没被按下
		{
			PORTA &= ~(1 << 3);//关蜂鸣器
			PORTB = 0;
		}*/
	}
}

⌨️ 快捷键说明

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