atmega16与24l01按键主程序

2019-11-08来源: 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  按键 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479383.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

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

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

ATmega8+PT100热敏电阻+AD824S proteus仿真与源程序
;: 2011-4-16Author  : Company : Comments: Chip type           : ATmega8Program type        : ApplicationClock frequency     : 8.000000 MHzMemory model        : SmallExternal RAM size   : 0Data Stack size     : 256
发表于 2019-11-08
ATmega8+PT100热敏电阻+AD824S proteus仿真与源程序
ATmega128单片机音节显示仿真与源码
ATmega128单片机源程序如下://ICC-AVR application builder : 2018/2/23 22:40:20// Target : M128// Crystal: 8.0000Mhz#include <iom128v.h>#include <macros.h>//#include "delay.h"//本程序通过按键生成1-7共7个音阶,音阶对应的频率分别为523hz、587hz、698hz。。。// tone_freq[7]={523,587,659,698,784,880,987}//tone_cnt[]中成员值是生成不同频率的定时器寄存器OCR1A的设置
发表于 2019-10-30
ATmega128单片机音节显示仿真与源码
Atmega128单片机控制的智能小车设计
不同的模式,控制端的单片机通过LCD和语音模块进行参数信息的显示和播报。1.4 方案选择1.4.1控制器选择分析控制器主要用于各个传感器信号的接收和辨认、控制小车的电机的动作,是整个智能车系统的心脏,考虑到需要实现多个功能的要求及各个模块引脚的数目,列出以下方案,对其分析、论证、选择。方案一:采用ATMEL公司的AT89S52。AT89S52单片机支持在线编程,易于操作,价格便宜,技术成熟,应用广泛,但是功能单一,如果系统电机驱动需要增加硬件,软件实现较为复杂;另外AT89S52 单片机引脚数较少,达不到各个模块端口的要求。方案二:采用ATMEL公司的ATmega128。ATmega128是一款基于AVR内核,采用RISC
发表于 2019-10-30
Atmega128单片机控制的智能小车设计
入门第一个74HC595驱动 C语言
/********   实验驱动74HC595 芯片********     单片机型号:ATMEGA48PA    /********** 74HC595电平逻辑*********************   SI   SCK   SCLR   RCK     OE   输出管脚   X     X      X   
发表于 2019-10-29
ATmega16单片机ad电流和电压采样程序
。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口D 处于高阻状态。端口D 也可以用做其他不同的特殊功能.硬件方面基本懂了,剩下的是程序了,以下是该死的ADC数模转换器的大致使用,不太懂***************************************************************************************************************************************本程序简单的示范了如何使用ATMEGA16的ADC模数转换器     普通的单端输入 
发表于 2019-10-28
ATmega16单片机ad电流和电压采样程序
对话恩智浦全球CTO:激光雷达将被淘汰 L3级自动驾驶一两年内量产
的意义等问题,进行了深入交流。▲车东西主编晓寒(左)与恩智浦全球CTO Lars Reger(右)Lars指出,现阶段L3级自动驾驶技术,尤其是用于高速公路场景的L3级自动驾驶技术发展较为成熟,并可能在最近一两年看到这些技术实现量产。而L4/L5级自动驾驶技术,则至少还需要5年才能量产落地。虽然高等级自动驾驶技术离量产落地还有距离,但Lars认为由于中国具备更好的社会人文环境,因此完全自动驾驶汽车将率先在中国落地。“例如我们在法国进行的测试,就发现很多熊孩子故意跑到无人车前面挡路,这时候车辆就不知道该怎么办了。”Lars在现场这样讲道,“中国拥有更好的社会监督环境,这种行为在中国可能会受到严厉的处罚。”在谈及自动驾驶汽车的传感器时
发表于 2019-11-07
对话恩智浦全球CTO:激光雷达将被淘汰 L3级自动驾驶一两年内量产
小广播
何立民专栏 单片机及嵌入式宝典

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

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