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

📄 demo.c

📁 avr单片机的一些实际应用源码
💻 C
字号:
#include <avr/io.h>
#include <avr/delay.h>

#define uint unsigned int
#define uchar unsigned char

#ifdef BASE_BORD

	#define SET_RED_LED cbi(PORTC,2);
	#define CLR_RED_LED sbi(PORTC,2);

	#define SET_LFT_LED cbi(PORTC,1);
	#define CLR_LFT_LED sbi(PORTC,1);

	#define SET_RIT_LED cbi(PORTC,3);
	#define CLR_RIT_LED sbi(PORTC,3);
#else
	#define SET_RED_LED cbi(PORTB,2);
	#define CLR_RED_LED sbi(PORTB,2);

	#define SET_LFT_LED cbi(PORTB,1);
	#define CLR_LFT_LED sbi(PORTB,1);

	#define SET_RIT_LED cbi(PORTB,0);
	#define CLR_RIT_LED sbi(PORTB,0);
#endif

#define FREQ 4

void DelayMs(uint ms)
{
	uint i;
	for(i=0;i<ms;i++)
		_delay_loop_2(FREQ *250);
}

int main(void)
{
	uchar i;
	
	DDRC=0XFF;
	PORTC=0XFF;
	
	DDRB=0XFF;
	PORTB=0XFF;
	
	while(1)
	{
#ifdef BASE_BORD
		//三个灯逐一闪
		for(i=1;i<4;i++)
		{
			PORTC=0xff;
			PORTC&=~_BV(i);
			DelayMs(500);
		}
#else
		for(i=0;i<3;i++)
		{
			PORTB=0XFF;
			PORTB&=~_BV(i);
			DelayMs(500);
		}
#endif
		//每一闪两次,循环2次
		for(i=0;i<2;i++)
		{
			PORTC=0XFF;
			
			SET_LFT_LED;
			DelayMs(500);
			CLR_LFT_LED;
			DelayMs(500);
			SET_LFT_LED;
			DelayMs(500);
			CLR_LFT_LED;
			
			SET_RED_LED;
			DelayMs(500);
			CLR_RED_LED;
			DelayMs(500);
			SET_RED_LED;
			DelayMs(500);
			CLR_RED_LED;

			SET_RIT_LED;
			DelayMs(500);
			CLR_RIT_LED;
			DelayMs(500);
			SET_RIT_LED;
			DelayMs(500);
			CLR_RIT_LED;			
		}
		
		SET_RED_LED;
		DelayMs(500);
		CLR_RED_LED;
		DelayMs(500);
		SET_RED_LED;
		DelayMs(500);
		CLR_RED_LED;
		
		SET_LFT_LED;
		SET_RIT_LED;
		DelayMs(500);
		CLR_LFT_LED;
		CLR_RIT_LED;
		DelayMs(500);
		SET_LFT_LED;
		SET_RIT_LED;
		DelayMs(500);
		CLR_LFT_LED;
		CLR_RIT_LED;
		DelayMs(500);				
	}
}

⌨️ 快捷键说明

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