上拉(Pull Up )或下拉(Pull Down)电阻(两者统称为“拉电阻”)最基本的作用是:将状态不确定的信号线通过一个电阻将其箝位至高电平(上拉)或低电平(下拉),如果拉电阻用于输入信号引脚,通常的作用是将信号线强制箝位至某个电平,以防止信号线因悬空而出现不确定的状态,继而导致系统出现不期望的状态,如下图所示(上拉电阻一边接电源):
三态
0、1、高阻
实验
完成Key、led实验
作业:cc2530 PWM按键控制led灯亮度。
cc2530 PWM按键控制led灯亮度(参考代码)
#include<ioCC2530.h>#define LED1 P1_4#define S5 P0_4#define S6 P0_5#define PERIOD 20#define ON 0#define OFF 1#define DOWN 0#define UP 1unsignedchar pulse_high=20;unsignedchar delay_s5_flag=0;unsignedchar up_s5=1;unsignedchar delay_s6_flag=0;unsignedchar up_s6=1;voidled_init(void);voidkey_init(void);voidpoll_key(void);voiddelay_ms(int nms);voidmain(void){led_init();key_init();while(1){poll_key();if(pulse_high !=0){
LED1=OFF;delay_ms(pulse_high);}if(PERIOD!=pulse_high){
LED1=ON;delay_ms(PERIOD-pulse_high);}}}voidled_init(void){
P1SEL&=~0x10;
P1DIR |=0x10;
LED1=OFF;//初始状态}voiddelay_ms(int nms){unsignedint i,j;for(i=nms;i>0;i--)for(j=578;j>0;j--);}voidkey_init(void){
P0SEL &=~0x30;
P0DIR &=~0x30;
P0INP &=~0x30;
P2INP &=~0x20;}voidpoll_key(void){//延时消抖if((DOWN==S5)||(DOWN==S6)){delay_ms(20);if(DOWN==S5){if(delay_s5_flag)//松开按键为1{if(pulse_high&&up_s5){
up_s5=0;
pulse_high-=5;}}else{
delay_s5_flag=1;}}elseif(DOWN==S6){if(delay_s6_flag){if((pulse_high<PERIOD)&&(up_s6)){
up_s6=0;
pulse_high+=5;}}else{
delay_s6_flag=1;}}else{
delay_s5_flag=0;
up_s5=1;
delay_s6_flag=0;
up_s6=1;}}}
物联网实训Day2端口(外设I/O)上拉/下拉电阻三态实验cc2530 PWM按键控制led灯亮度(参考代码)端口(外设I/O)对于USART和定时器I/O,在一个数字I/O引脚上选择外设I/O功能,需要设置对应的PxSEL位为1。PxDIR配置I/O口的输入和输出,0为输入,1为输出。上拉/下拉电阻上拉(Pull Up )或下拉(Pull Down)电阻(两者统称为“拉电阻”)最基本的作用是:将状态不确定的信号线通过一个电阻将其箝位至高电平(上拉)或低电平(下拉),如果拉电阻用于输入信号引