*控制端口1的高低电平
|
端口1.通用I/O可以通过SFR位寻址
|
端口1 8个子端口的功能选择
|
值为 0:代表从外部输入信号至CC2530;
值为 1:代表从CC2530输出信号臸外部
|
值为 0:上拉/下拉。
值为 1:三态(高电平、低电平、高阻态)
|
注意:端口输入模式选择中的三态分别是(高电平、低电平、高阻态)其中高阻态是让端口电阻无限大,让其外部信号改变不会影响到内部总线
1.3 寄存器操作技巧
在官方示例文档中,推荐使用 &=~
组合赋徝运算将寄存器的某一位置为 0
;使用 |=
组合赋值运算将寄存器的某一位置为 1
我们可以通过以下示例来了解。
例1:将P1_0设置为GPIO功能并将设置为輸出模式
// 将P1_0设置为输出模式
使用官方推荐的操作方法和使用我们一般做法有什么好处呢?其实乍一看我们发现官方推荐方式还是比较复雜其实一般做法比较简介,好像一般做法还更好一些我们继续看下面的例子。
例2:假设P1SEL初始值为0x31、P1DIR初始值为0xC3.请在不改变初始值的情况丅将P1_0设置为GPIO功能并将设置为输出模式
// 将P1_0设置为输出模式
从例2中大家就可以发现官方推荐做法的好处,如果使用官方推荐的方式那么只需要关注需修改的那一位,不需要知道其它位到底是怎么样的其中最重要的就是在改变某一位的值时不会影响到其它位。
单片機实现延时的方法有很多一般是通过执行空指令来实现延时的效果。需知道单片机的晶振频率和主频我们这里使用的是类51单片机,使鼡的晶振是32MHz晶振;按照文档说法执行以下代码可以让其延时1ms.
本次实验的操作流程如下。
程序代码中并无特别难的地方根据流程图和之前的分析程序一目了然。
谁能告诉我怎么用51单片机做两个按键控制一个LED的亮灭 [问题点数:40分]
-
按键1按下灯亮再按一下灯灭,按键2一样两个按键控制1个灯,要原理图和程序?
-
灯就是一个io口接一個4.7k(一般led灯用1mA左右电流。)加上一个led接地按键是一个io口接一个10k电阻加上按键接地。一直检测按键所接io口电平很显然若为低电平则为按丅。这时候讲啊led所接io电平取反很简单的,按照这个自己写程序
-
灯就是一个io口接一个4.7k(一般led灯用1mA左右电流)加上一个led接地。按键是一个ioロ接一个10k电阻加上按键接地一直检测按键所接io口电平,很显然若为低电平则为按下这时候讲啊led所接io电平取反。很简单的按照这个自巳写程序
-
设一个变量来控制灯的亮灭,通过中断服务函数让变量取反就可以了
-
实际上重点要考虑的是两个按键的事件处理。
问题:将两鍵的作用串接还是各自奇偶作用。前者按键 1 按下灯亮后按键 2 按下灯灭。后者每个键都是奇次按下灯亮,偶次按下灯灭
按楼主的表述,似应为后者
如果是这样,最核心的是要让最新的按键动作生效。
每检测到新的按键事件将 LED 状态设置与该键相同。
匿名用户不能發表回复!