历史上的今天

今天是:2024年11月08日(星期五)

2019年11月08日 | atmega16与24l01按键主程序

发布者:sjp5035022 来源: 51hei关键字:atmega16  24l01  按键 手机看文章 扫描二维码
随时随地手机看文章

#include
#include
#include"NRF24L01.h"
//#define Open_TX
#define Open_RX
typedef unsigned char  uint8;                   /* defined for unsigned 8-bits integer variable     无符号8位整型变量  */
typedef signed   char  int8;                    /* defined for signed 8-bits integer variable       有符号8位整型变量  */
typedef unsigned short uint16;                  /* defined for unsigned 16-bits integer variable    无符号16位整型变量 */
typedef signed   short int16;                   /* defined for signed 16-bits integer variable      有符号16位整型变量 */
typedef unsigned int   uint32;                  /* defined for unsigned 32-bits integer variable    无符号32位整型变量 */
typedef signed   int   int32;                   /* defined for signed 32-bits integer variable      有符号32位整型变量 */
typedef float          fp32;                    /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */
typedef double         fp64;                    /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */
extern uint8_t RX_BUF[];
extern uint8_t TX_BUF[];
void motorrun();
uint8 HandleKey();  
uint8 KEY_Release;
uint32 i,MS1;
#define  KEY1_Press  ((keys & 0x03) == 3)
#define  KEY1_Pressed ((keys & 0x03) == 2)
#define  KEY1_Release ((keys & 0x03) == 1)
#define  KEY1_Released ((keys & 0x03) == 0)
int main(void)
{
//nRF24L01_Config(); 
//usartInit();
uint8 keys = 0;
nRF24L01_Initial();
while(1)
{
      #ifdef Open_TX
   keys=HandleKey();
   if(KEY1_Release)
   {
   TX_BUF[0]=0x55;
   NRF24L01_Send();
   if(TX_BUF[0]==0x55)
   {
   for(i=1;i<100;i++)
   {
    PORTB &=~ (1<    _delay_ms(1000);
    PORTB |= (1<    _delay_ms(1000);
   }
   }
   //printf("rnSend data:0x%xrn",TX_BUF[0]);
   _delay_ms(5000);
   }
      #else
   
   PORTD &=~(1<   NRF24L01_Receive();
   _delay_ms(2000);
   if(RX_BUF[0]==0X55)
   motorrun();
   while(1);
   #endif  
       }
}
uint8 HandleKey(void)
{
static uint8 key1laststa = 1,pressure = 0;
uint8 ret = 0;
DDRB &= ~(1 << PB1);
if(PINB & (1 << PB1))  //KEY1
{
  ret = (ret & ~(0x03 << 0)) | (0x00 << 0);
  if(key1laststa == 0) //release
  {
   ret = (ret & ~(0x03 << 0)) | (0x01 << 0);
  }
  key1laststa = 1;
}
else
{
  ret = (ret & ~(0x03 << 0)) | (0x02 << 0);
  if(key1laststa == 1) //press
  {
   ret = (ret & ~(0x03 << 0)) | (0x03 << 0);
  }
  key1laststa = 0;
}
return ret;
}
void motorrun()
{
PORTD |=(1<PORTD &=~  (1<PORTD &=~  (1<PORTD &=~  (1<PORTC &=~(1<for(i=0;i<4000;i++)
{
  PORTC |= (1 << PC0);
  _delay_ms(20);
  PORTC &=~ (1 << PC0);
  _delay_ms(20);
}
}

关键字:atmega16  24l01  按键 引用地址:atmega16与24l01按键主程序

上一篇:avr单片机可演奏的电子琴仿真加源码
下一篇:avr单片机八位流水灯程序

推荐阅读

作者:蓝牙技术联盟亚太区开发者关系经理 任凯 蓝牙mesh在去年7月正式发布,至今已经过去了一年多的时间。在过去的一年中,蓝牙mesh的开发者社区有哪些最新的更新?· 多家会员公司推出了面向开发者的蓝牙mesh SDK;· 相关的开源社区已经提供了关于蓝牙mesh和蓝牙5的开源项目;· 相关会员公司提供了蓝牙mesh 的IP解决方...
八位流水灯程序单片机源程序如下:#include<iom16v.h>#define uint unsigned int#define uchar unsigned charvoid Delay_ms(uint k){ uint i,j; for(;k>0;k--) for(i=142;i>0;i--) for(j=2;j>0;j--);}void port_init(void){ DDRD=0xff; ...
物联网(IoT)已经彻底改变了许多行业,为创新和经济增长开辟了新的途径。然而,这个新的连接时代到来也带来了严重的电池问题。每年有数以十亿计的电池被扔掉,污染了全世界。电池的经济成本也是惊人的。想想那些使用电子货架标签显示价格的零售商店。考虑到材料成本和人工成本,更换所有这些电池的成本极高。为了解决这些问题,科技行业开始采用能够延长...
    2022第六届CMM制造自动化&资源展览会   展会名称:CMM电子制造自动化&资源展   同期展会:东莞国际芯片及半导体产业博览会Chips&SemiconS   IC工业&工业自动化展   展会日期:2022年5月18-20日   展会地点:广东现代国际展览中心(东莞)   支持单位:惠州智能终端制造协会   东莞市机器人行业协会   东莞市工业自动化...

史海拾趣

问答坊 | AI 解惑

怎么分析晶体管放大器的电路,Ib,c,e方向怎么考虑?

怎么分析晶体管放大器的电路,Ib,c,e方向怎么考虑?…

查看全部问答∨

开关电源中功率MOSFET的驱动技术荟萃

功率MOSFET以其导通电阻低和负载电流大的突出优点,已经成为高频开关电源系统(switch-mode POWER supplies,SMPS)整流组件的最佳选择,专用MOSFET驱动器的出现又为优化SMPS控制器带来了契机。那些与SMPS控制器集成在一起的驱动器只适用于电路简单 ...…

查看全部问答∨

请问声卡设置中的均衡器设置,环境设置, DSP模式设置是怎么实现的?

Windows, VC2008 现在的声卡安装了驱动后, 都会附带一个声卡设置程序。 这个声卡设置程序里,有各种音量设置,这个可以通过混音器来实现。 但是,它还有均衡器设置,环境设置, DSP模式设置,这些又是怎么实现的? 我知道播放器可以设置均衡器, ...…

查看全部问答∨

问DeviceEmulatorBSP.msi模拟器支持不知道directdrawCreate

感谢大家来看我的问题: 我想问的问题,标题已经说了 现在我的环境如下: 1.用pb5.0定制了sdk,并安装完成。并添加了directdraw组件 2.vs2005可以正常使用该sdk,并建立项目运行调试正常。 现在调用ddraw里的函数 directdrawcreate直接返回失 ...…

查看全部问答∨

嵌入式Linux驱动内核视频

推荐一个不错的嵌入式驱动开发入门的免费视频:http://www.56.com/u15/v_NDE1MjU1MzI.html 好的话顶一个 更多资料了解顶嵌站点…

查看全部问答∨

【急】xpe无法启动,提示“lsass.exe 当试图更新密码时本返回状态表示所提供的当前密码不正确”

一台升腾的8600,所用系统为Windows XP Embedded,就用了C盘一个分区,加过一层保护。那天装某个软件 ,安装驱动时提示更新几个系统文件,没怎么注意就更新掉了。结果重启后就进不去系统了, 在XP启动画面滚动 条之后用户名密码登录提示框出来前 ...…

查看全部问答∨

CE中编译Media Player的最快方法是什么?

工程已经编译通过,现在想跟踪Media Player的代码. Media Player的源代码在WINCE500\\PUBLIC\\DIRECTX\\SDK\\SAMPLES\\WMP目录下. 于是在PB中的WINCE500\\PUBLIC\\DIRECTX\\SDK\\SAMPLES\\WMP目录下选择Build. 但是Build之后只是生成了ceplayer.l ...…

查看全部问答∨

gprs模块用at指令上网connect之后出现乱码?

我用的西门子mc35i gprs modem 与pc机连接上之后 通过串口调试助手 发送at指令给它 当发送 atd*99***1#时 先返回 connect 然后持续不断出现大概四排乱码!@¥#!%……%……&~!~#¥¥#%@#@%%之类的 然后再显示:no carrier 我不知道是怎么 ...…

查看全部问答∨

人社部部长:大学生年底就业率基本上达90%以上

  十一届全国人大四次会议新闻中心3月8日上午9时在梅地亚中心多功能厅举行记者会,人力资源和社会保障部部长尹蔚民、副部长胡晓义就“就业和社会保障体系建设”的相关问题回答中外记者的提问。[尹蔚民]第二个问题,关于你讲到的大学毕业生就业 ...…

查看全部问答∨

串口干扰

现在AD可以正常工作了,测得的电压用串口发电脑上数值,也是对的,但是出现了这个问题:1、运放工作电压3.3V ,U16C跟随电压1.5V2、输入50HZ的正弦交流电流峰值2.5mA,输出怎么是跟它的电源一样大的直流了,而偶尔又能输出需要的正弦直流 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved