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点亮
推荐阅读最新更新时间: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中。 此时可以看到
[单片机]
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: 配置时钟源 如果选择使用外部高速
[单片机]
关于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 展示了该电路的特写。 一个全波桥式
[电源管理]