┊ 网站导航 ┊ 管理登陆 ┊ 免责声明 ┊ 问题反馈 ┊ 友链说明┊本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正! 不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作! ![]() ![]() ![]() ![]() ![]() ![]() 本站学习交流群:138..158(高级群1-满)、77930286(高级群2)、61804809(群3) Copyright© MCUSY All Rights Reserved 本站网警备案号: WZ36040002485 ICP备案证书号:粤ICP备09034963号 |
主要是练习在WINAVR编译软件下,如何调用delay函数和位定义、位操作。
-------------------------------------
实验芯片: ATmega8515L或Atmega8515
工作频率: 8MHz
编译软件: WINAVR 1.41
-------------------------------------
将 ME300B 的 JP2 的3、4脚用跳线帽短接,选择使用LED显示 。
-------------------------------------
功能:
接收到红外信号后,8个LED亮2秒后熄灭。
--------------------------------------
#include < ;avr/io.h> //头文件
#include < ;avr/delay.h>
#define uchar unsigned char
#define uint unsigned int
#define IR_IN 2 //定义IR_IN为端口2
/*-------延时函数 -------*/
void delay_1ms(void) //1ms延时函数
{
_delay_loop_2(2000) ; //16-bit count, 4 cycles/loop
} //8MHz/8000=1ms 8000/4=2000=1ms
void delay_nms(Uint n) //N ms延时函数
{
uint i=0 ;
for (i=0 ;i< ;n ;i++)
delay_1ms() ;
}
int main(void)
{
uint j=0 ;
DDRA=0xFF ; //PA口为输出
PORTA=0xFF ; //PA口设置内部上拉电阻
DDRD=_BV(IR_IN) ; //PD2为输出
PORTD|=_BV(IR_IN) ; //PD2设置内部上拉电阻
DDRD&=~_BV(IR_IN) ; //PD2为输入
while(1)
{
PORTA=0xFF ; //关闭8个LED
if ((PIND&0B00000100)==0) //检测PD2是否为低电平
{
j++ ;
if (j>20) //连续检测到有20次PD2都为低电平
{
j=0 ;
PORTA=0x00 ; //点亮8个LED灯
delay_nms(2000) ;
}
}
}
}
┊ 网站导航 ┊ 管理登陆 ┊ 免责声明 ┊ 问题反馈 ┊ 友链说明┊本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正! 不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作! ![]() ![]() ![]() ![]() ![]() ![]() 本站学习交流群:138..158(高级群1-满)、77930286(高级群2)、61804809(群3) Copyright© MCUSY All Rights Reserved 本站网警备案号: WZ36040002485 ICP备案证书号:粤ICP备09034963号 |