开源硬件
Arduino
客制化键盘
Arduino_寄存器
二进制运算
寄存器+二进制运算
LCD-逐字显示
密码依次录入
等待输入
WiFi Duck(无线击键注入攻击平台)
WiFi Duc-New
WiFi Duc-Old
蓝牙无线烧录
ESP8266
ESP-NOW
ESP8266看门狗
ESP8266-休眠模式
ESP01/01S使用说明
WIFI_SD
ESP8266-Web服务器
ESP8266-WIFI自动认证
ESP32
ESP32 ADC2
ESP32_PWM
ESP32_CAM
ESP32 小坦克
ESP32_限电保护
Arduino IDE 添加 ESP32
ESP32-iPhone BLE攻击
STM32
STM32F103-虚拟键盘
STC
STC8G1K08(A)
树莓派-触摸屏
Arduino IDE
Arduino_自制库
Arduino库收集
常见排序算法
冒泡排序
选择排序
插入排序
希尔排序
归并排序
快速排序
计数排序
预处理
millis(运行时长)
Arduino IDE 2.X-修改数据位置
Mixly
Mixly安装教程
Mixly 模块介绍
Mixly-添加ESP32CAM支持
Mixly-库定制工具
模块
4G模块连接物联网
GPS模块
语音模块(JQ8900)
安信可VB语音识别
28BYJ-48(5V步进)
FreeRTOS
FreeRTOS-多任务基础
FreeRTOS-任务共享全局变量
FreeRTOS-多核多任务
FreeRTOS-MUTEX
FreeRTOS-常规程序改多任务
FreeRTOS-定时器
LaserGRBL(激光雕刻)
LaserGRBL-GRBL
GRBL-CNC Shield v4
MicroPython
Scratch
Wokwi(在线仿真)
html转无符号数组
待做开源项目
本文档使用 MrDoc 发布
-
+
首页
寄存器+二进制运算
## DDRx 和 PORTx 这两个比较相似,都是都是设定寄存器,主要讲思路,运用方法一样 这里使用DDRx管脚模式举例,也可运用于PORTx管脚状态 ### 指定位修改为1 #### |(或) 使用 `|(或)` 即可完成 ```C # 将D2设置为输出模式 DDRD = DDRD | 0b00000100 # 将D2,D5,D7设置为输出模式 DDRD = DDRD | 0b10100100 # 使用 寄存器 + |(或) 就可以实现一次性同时修改多个引脚 ``` #### <<(左移) ```C # 将D2设置为输出模式 DDRD | (1<<2) # 这个略微复杂点,逐步分析 # 1<<2=0b00000100,和之前的一样,,, # 将D2,D5,D7设置为输出模式 DDRD | (41<<2) # 逐步分析 # 41 = 0b00101001,先把41转换为二进制 # 41<<2 = 0b10100100,和之前一样了,,, # 也可写作为 DDRD | (0b101001<<2) # 连续引脚改变模式使用 << 很简单 # 1,3,7,17,37,63,127,255,这8个分别对应1-8位为1时的十进制数值 # 再结合 << 就可以实现任意连续引脚改变状态了 DDRD | (7<<3) # 如上方,7为连续3个引脚,默认最右侧D0开始,D0-D2三个引脚 # 7<<3 则把起始从D0改为D3,即D3-D5这三个引脚 ``` ### 指定位修改为0 使用 `&(与)` 来改变 ```C # 将D2设置为输入模式,&(与) + ~(非) DDRD = DDRD & ~(0b00000100) # 使用的是 &(与) + ~(非),一起来改变的,这样更加利于分别修改位 # 将D2设置为输入模式,&(与) DDRD = DDRD & ~(0b11111011) # 只使用 &(与) 也是可以的,就是0的为改变位,不便于阅读 ``` #### <<(左移) ```C # 将D2设置为输入模式 DDRD & ~(1<<2) # 这个略微复杂点,逐步分析 # 1<<2=0b00000100 # ~(1<<2)=0b11111011,到这应该可以看出来了吧,和前面直接写是一样的效果 ``` ## PINx ### 判断指定位电平 借助于 `&(与)` 的特性,全部满足为1,否则为0 ```C # 判断D2电平 PIND & 0b00000100 # 其他位和0与肯定为0,D2为和1与返回其本身 # 这个可用于判断,D2为0则全部为0,否则D2无论在哪一位都大于0为真 # 判断D2,D5,D7电平 PIND & 0b10100100 # 直接判断只能判断其中是否有任意一个为高电平 # 同时判断D2,D5,D7电平 (PIND & 0b10100100)== 0b10100100 # 使用 &(与)运算 后再和 与运算的数值 作对比,判断是否一致 # 这几个电平是高电平才能通过 &(与) 运算还为1 ```
造物者W
2022年5月15日 22:44
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码