PIC16F877A 的IO口输入和输出 单按键输入,单LED点亮

发布者:SereneHeart最新更新时间:2016-11-04 来源: eefocus关键字:PIC16F877A  IO口  输入和输出  LED点亮 手机看文章 扫描二维码
随时随地手机看文章
IO输出和输入

/*

按键连接RB1,点亮LED ,PORTA RA0 控制输出。按一次点亮,再按一次熄灭,如此循环。

RB外接上拉电阻。

*/

#include

 #define uchar unsigned char

#define uint unsigned int

// CONFIG

#pragma config FOSC = HS        //

#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)

#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)

#pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)

#pragma config LVP = ON         // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)

#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)

#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)

#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

uchar count;

void delay(uint x)

{

    uint y,z;

    for(y=x;y>0;y--)

        for(z=25;z>0;z--);

}

void Init_GPIO()

{

    TRISA = 0X00;   //  RA0 output direction

    PORTA=0X00;

 

    TRISB = 0x02;  // RB1 input 

    PORTB = 0x00;

}

void Keyscan()

{

    //temp = PORTB&0x02;

    if(RB1==0)

    {

        delay(200);           // delay time 根据机械按键的抖动情况调整,

        if(RB1==0)

        {

            count++;

        }

    }

}

void main(void)

{

    count = 0;

    Init_GPIO();

 

    while(1)

    {

        Keyscan();

        if((count%2)==1)

        {

            PORTA=0x01;

        }

        else

            PORTA = 0x00;

    }

}

关键字:PIC16F877A  IO口  输入和输出  LED点亮 引用地址:PIC16F877A 的IO口输入和输出 单按键输入,单LED点亮

上一篇:PIC18 CAN总线(1)
下一篇:PIC16F877A的EEPROM使用

推荐阅读最新更新时间:2024-03-16 15:19

创建keil工程并点亮STM32板子的LED
打开之前创建的工程,如下图所示(keil工程的创建在之前的文章中有,不了解的同学可以翻一下上一篇文章。)翻 (上图是已经建立完成的工程) 然后,再次打开我们之前下载的对应开发板版本的例程包中的点亮LED灯的例程 (路径为:en.stsw-stm32077 STM32L1xx_StdPeriph_Lib_V1.3.1 projectSTM32L1xx_StdPeriph_Examples GPIO IOToggle) 找到mian.c文件打开,全选复制里面的内容 再回到我们之前已经创建完毕的工程中,打开mian.c文件清空,并将GPIO文件中的main.c里面的内容粘贴到我们工程的mian.c中。 此时可以看到
[单片机]
创建keil工程并<font color='red'>点亮</font>STM32板子的<font color='red'>LED</font>灯
PIC16F877A Capture Mode
/* Capture mode时,外部CCP1事件触发后,CCPR1H和CCPR1L将获取Timer1的TMR1H和TMR1L中的数值 对于CCP1的触发事件,设置键CCP1Con中的相应位CCP1M3--CCP1M0 CCP1IE使能中断,中断发生时,CCP1IF位设置为1,需要软件进行清除 * capture mode的设置步骤见datasheet 的page 65 setup for capture operation */ 实现功能: 开始屏幕显示'system start '字样,然后若外部CCP1发生falling edge,则会点亮LED ,RA=1;同时将获取的timer1的16bit
[单片机]
stm32之按键实验
前言:这个实验比较简单,就是对io口的配置。 实验现象 up键用来打开led灯,down键用于关闭led灯,left键用于打开蜂鸣器,right用于关闭蜂鸣器。 操作步骤 1.初始化用到的io口 void key_init() { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//打开io口的时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);//打开io口的时钟 GPIO
[单片机]
STM32的8种IO口的模式
一、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。 推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。 二、开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。开漏形式的电路有以下几个特点: 1、利用外
[单片机]
STM32单片机基础03——使用GPIO点亮一个LED
本篇文章主要介绍如何使用STM32CubeMX初始化STM32L431RCT6的GPIO,并点亮一个LED。 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是 STM32L4的开发板(BearPi) : 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码; Keil MDK和串口助手的安装包都可以关注“小熊派开源社区”微信公众号,在资料教程一栏中可获取安装包。 2.生成MDK工程 选择芯片型号 打开STM32CubeMX,打开MCU选择器: 搜索并选中芯片STM32L431RCT6: 配置时钟源 如果选择使用外部高速
[单片机]
STM32单片机基础03——使用GPIO<font color='red'>点亮</font>一个<font color='red'>LED</font>
关于I/O口上拉电阻阻值问题的讨论
如果是驱动led,那么用1K左右的就行了。如果希望亮度大一些,电阻可减小,最小不要小于200欧姆,否则电流太大;如果希望亮度小一些,电阻可增大,增加到多少呢,主要看亮度情况,以亮度合适为准,一般来说超过3K以上时,亮度就很弱了,但是对于超高亮度的LED,有时候电阻为10K时觉得亮度还能够用。我通常就用1k的。 对于驱动光耦合器,如果是高电位有效,即耦合器输入端接端口和地之间,那么和LED的情况是一样的;如果是低电位有效,即耦合器输入端接端口和VCC之间,那么除了要串接一个1——4.7k之间的电阻以外,同时上拉电阻的阻值就可以用的特别大,用100k——500K之间的都行,当然用10K的也可以,但是考虑到省电问题,没有必要用那么小的
[单片机]
PIC16f877A读写24c01的程序
#include p IC .h #include string.h #define uchar unsigned char #define uint unsigned int static volatile unsigned char a CC @ 0x20; //发收数据暂存器 static volatile bit acc0 @ (unsigned)&acc*8+0; //接收 static volatile bit acc7 @ (unsigned)&acc*8+7; //发送 static volatile unsigned char err @ 0x21; // static
[单片机]
点亮大功率LED供电线路的驱动器
  作为一种为通用照明省电的方法,LED 的使用日益普及,而高效率驱动 LED 的方法也已变得必不可少。例如,Lumileds 公司的 Luxeon 器件带来了照明效果或房间照明。向几个 LED 供电也许只需要一个限流电阻器,但照明应用需要 20 个以上 LED 组成的串来提供一块区域的光亮。图 1 中的电路基于安森美(On Semiconductor)公司面向通用离线电源的 NCP1200A 型 100kHz PWM 电流式控制器,提供了一种低成本的离线恒流源来为多个 LED 供电。虽然设计师一般为它配置或提供电压源,但在本应用中,NCP1200A 提供了一个恒流源。图 2 和图 3 展示了该电路的特写。   一个全波桥式
[电源管理]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved