控制单个单片机IO的按键+定时器10ms定时器程序

发布者:pcwg最新更新时间:2019-10-21 来源: 51hei关键字:单片机  定时器 手机看文章 扫描二维码
随时随地手机看文章

/*刚刚开始学习AVR单片机,
*把学习到的知识和大家分享。有错误或者更好的写法,欢迎交流。
*方便新手学习,我都尽可能的注释
*/




#include
#include
#include                         //标准输入输出头文件
#define LED_DDR  DDRA           //LED接PA0~PA7     
#define LED_P0RT PORTA          //指示灯
/*********************************
*按键定义
*******************************/
#define K1      PINC & (1<#define K2      PINC & (1<#define K3      PINC & (1 << PC2)             //位读取   PC2
#define K4      PINC & (1 << PC3)             //位读取   PC3
#define K5      PINC & (1 << PC4)             //位读取   PC4
#define K6      PINC & (1 << PC5)             //位读取   PC5
#define K7      PINC & (1 << PC6)             //位读取   PC6
#define K8      PINC & (1 << PC7)             //位读取   PC7                                                   
unsigned char key_s,biaozhi;
void port_init(void)                                        //IO端口初始化
{
                DDRC=0xFF;          
                PORTC=0xff;        
                DDRB=0xff;
                PORTB=0xff;
                DDRD=0xff; 
                PORTD=0xff;
                DDRA=0xff; 
                PORTA=0xff;
}
#pragma interrupt_handler timer1_ovf_isr:15 //dingsh中断函数
void timer1_ovf_isr()
{
    TCNT1H=0XFB;  //赋初值定义0.01s
    TCNT1L=0X1D;
        /***************************按键程序**************************************/
        if(((K1)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}}   //按键按下 key_s开始++,起到延时给按键去抖的作用
        if(((K2)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}} 
        if(((K3)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}} 
        if(((K4)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}} 
        if(((K5)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}} 
        if(((K6)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}} 
        if(((K7)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}} 
        if(((K8)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}} 


        
        if(((K1)!=0)&&((K2)!=0)&&((K3)!=0)&&((K4)!=0)&&((K5)!=0)&&((K6)!=0)&&((K7)!=0)&&((K8)!=0))
         {biaozhi=0;key_s=0;} //按键判弹起
         if(key_s>=4){key_s=0;biaozhi=1;}


}


void init_timer1()   // 定时器1初始化 
{
        TCCR1B=0X03;   //64分频
        TIFR=0X01;
        TIMSK=0X04;
        TCNT1H=0XFB;   //10ms
        TCNT1L=0X1D;
        SREG|=BIT(7);
}
void main()
{
   port_init();  //I/O初始化函数
   init_timer1();//定时器初始化函数
while(1)
{                
         if(a==0xff){LED_P0RT=0x00;} //PA口全部输出低
         if(a==0x00){LED_P0RT=0xff;} //PA口全部输出低
  } 
}

关键字:单片机  定时器 引用地址:控制单个单片机IO的按键+定时器10ms定时器程序

上一篇:Atmega16单片机实验:DS18B20和ad采集显示程序
下一篇:avr单片机+RFID的门禁系统

推荐阅读最新更新时间:2024-11-01 23:58

用51单片机控制直流电机
一、 设计方案比较与分析: 1、电机调速控制模块: 方案一:采用电阻网络或数字电位器调整电动机的分压,从而达到调速的目的。但是电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。更主要的问题在于一般电动机的电阻很小,但电流很大;分压不仅会降低效率,而且实现很困难。 方案二:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整。这个方案的优点是电路较为简单,缺点是继电器的响应时间慢、机械结构易损坏、寿命较短、可靠性不高。 方案三:采用由达林顿管组成的H型PWM电路。用单片机控制达林顿管使之工作在占空比可调的开关状态,精确调整电动机转速。这种电路由于工作在管子的饱和截止模式下,效率非常高;H型电路保证了可以简单
[单片机]
用51<font color='red'>单片机</font>控制直流电机
RUPI-44系列单片机与051单片机在内部结构上有什么区别?
RUPI-44系列单片机中的CPU与8051基本相同,其指令系统、各口的操作、片内EPROM编程,以及为操作等均与8051相同。 它们的差异主要区别在: 1、RUPI-44系列单片机用SIU取代8051的串行口,并增加了一些SIU专用寄存器。 SIU发送和接收的数据自或送至内部双口RAM。这种双口ROM既可以由CPU访问,又可以由SIU访问。 2、有5个引脚具有特殊定义。 3、RUP1-44系列单片机的内部RAM有192个字节,而8051只有128个字节
[单片机]
单片机对modem要进行哪些初始化操作?
一般单片机的MODEM通讯必须要有两个背景知识,一个是AT命令集,另一个是通用非同步接收发送器(UART)。  AT命令集 下面介绍我通讯程式例子中涉及到的AT命令。 Dn:拨号命令。该命令使MODEM立即进入摘机状态,并拨出跟在后面的号码。D命令是基本的拨号命令,它受到其他命令的修饰可构成MODEM何时拨号以及如何拨号等操作。 T:音频拨号。例如,ATDT13632757314,其中13632757314为电话号码。 P:脉冲拨号。例如,ATDT13632757314,其中13632757314为电话号码。 ,:标准暂停。我们常常碰到拨打外线电话时需要暂停一下,等听到二次拨号音(外线)之后才能再拨后续的号码。缺省时暂
[单片机]
一种基于AT89C51低频信号源的设计
函数信号发生器是一种常用的信号源,它广泛地应用在电子技术实验。目前常用的函数信号发生器,一般可靠性较差,准确度较低,难以满足科研和高精度实验的需要。现用单片机和支持软件及其外设电路构成的智能函数信号发生器,采用编程的方法来实现波形,将产生波形的程序用子程序的形式编写,在需要波形时再调用相应子程序,经过D/A转换、运算放大器处理后,作为该信号源输出,其线路简捷、功能强大、性价比较高。 1 主要芯片介绍 1.1 AT89C51单片机芯片 1.1.1 引脚图 本文采用的单片机芯是AT89C51,它是采用高速CMOS制造工艺,通用型为40脚双列直插封装方式,其引脚如图1所示。只要将+5 V电源接到VCC和VSS两端,将
[单片机]
单片机中按键“一次”处理的优化方法
以前做单片机的时候总会遇到一个问题就是:在单片机的键盘输入的键盘一次处理时,原来的做法通常是通过 延时 等待键盘的松开,所以单片机就会停留在此处,其他的程序进行不下去。会出现显示不正常、无响应等错误。 以前的程序如下: 其中p10为P10端口做键盘输入,p10= =0为按下,调用的delay程序为 void delay(unsigned int cnt) { unsigned char i; while(cnt--!=0) for(i=100;i!=0;i--); } 键盘扫描子程序如下: void scankey() //扫描按键 { if(p10==0)//p10口按键及处理程序 { del
[单片机]
基于单片机的智能小区监控系统的设计
  1. 引言   随着生活水平的不断提高,人们对居住环境的要求也大大提高,对信息服务和安全防范的要求尤为突出.如何利用计算机和通信技术在智能化小区家庭智能管理系统中,对住户家庭水表、电表、煤气表的自动计量以及火灾、煤气泄漏、入室盗窃等警情的实时监控已经成为信息产业的热点技术.利用CAN总线技术虽然有其开放式、数字化、多点通信等诸多优点,但将其用于智能住宅小区,却因其成本偏高,目前在我国还难以推广.为此,作者开发出一种设备简单,成本低廉,便于维护经济型智能小区家庭管理系统,能有效地实现三表自动采集计费,防盗、防灾、自动报警和远程监控等功能.利用单片机进行实时采集,并将采集的数据通过串行口传给PC机,PC机完成数据的运算、存储、和
[单片机]
基于<font color='red'>单片机</font>的智能小区监控系统的设计
iPhone 8带动无线充电MCU出货 盛群趁势发表新品
随着三星(Samsung)与苹果(Apple)纷纷在智慧型手机导入无线充电功能,并采用无线充电联盟(Wireless Power Consortium, WPC)的Qi规格后,扩大引爆了无线充电市场商机;带动许多终端品牌投入开发各种具备无线充电功能的设备,同时也提升相关硬体模组的出货量。 盛群半导体资源管理中心副总经理李佩萦说明,该公司2013年投入开发无线充电, 2014年即推出相关产品,并取得WPC无线充电联盟5W认证。在2017年9月苹果发布iPhone 8、iPhone X搭载了WPC的Qi规格无线充电之后,合作厂商对于相关MCU的询问度明显提高。至2017年9月份止,盛群无线充电MCU方案出货量已达到30万颗,预计在
[半导体设计/制造]
stm32和同类单片机用ADC采集多通道信号量
在此之前,使用stm32的ADC采集信号,使用到的通道就只有一个,用的时候也是别人写好的代码,没去研究,然而最近用GD32F350单片机作一个电源板时,要采集6个通道的信号,所以就仔细看了手册,有规则通道和注入通道两个概念,按概念,规则通道是按顺序采集,注入通道可以最多设备四个,有独立的保存采集数据的寄存器。如果超过4个就不能没每个每个通道对应一个数据寄存器;如果是规则通道,当通道数大于一时是可以先设置采集通道再读数据,但是我想要的是像手册上说大的一次就把6个通道的数据采集出来,但是规则通道只有一个数据寄存器,如何知道每一次采集的数据是对应哪一个通道呢?最后问了一个做电源有经验的人,他说使用DMA,设置数据长度为6个,然后每个通道
[单片机]
热门资源推荐
热门放大器推荐
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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