找回密码
 注册
关于网站域名变更的通知
查看: 103|回复: 0
打印 上一主题 下一主题

单片机的写1清零及写0清零,有什么区别?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-2-24 17:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
单片机文档的时候一般寄存器是rw类型,还有一些是r或者w。对于一些特殊寄存器的置1是由硬件自动实现的,比如标志位flag、中断int;但清0还是需要通过软件进行操作。清0方式有两种,写1清0、写0清0。这两种方式有什么区别呢?在硬件实现上有什么不同?+ W8 P* n! k2 ]4 J  r! b& f9 Q0 Z
单片机内部有各种功能的寄存器,比如PIC、C51系列8位的单片机,寄存器的宽度就是八个二进制位,一般是高位在前低位在后,例如:11000011,一共是八位,高四位数据是1100,低四位数据是0011。

0 i+ Q1 A4 a$ _2 S1 @, v) u7 T
! x0 v& B6 w& q" D# P% ^
2 ?+ o" y; U" s

* v; Q1 k- V  {3 X1 x. [

# ^; B' ~# `! A* I; b9 N7 C5 K单片机是可以进行位操作的,一个8位的寄存器,我们可以只针对其中一个位或者某些位进行操作,将寄存器相应的位赋值1(高电平)为置位,相反赋值0(低电平)为清零。这是一种比较容易理解的方式。
' f/ L2 {% _/ u3 \7 }: Z; `/ U/ m
) t  r4 ~( p" X8 p% g
但对于写1清0有几种说法:) G# n3 h' Z1 Q& {$ U( N
  • 1)从电路角度去看,对某位写1,即输入一个高电平,使内部的一个三极管导通接地,电容放电进行清0。
  • 2)写1是在硬件上产生一个复位脉冲。能写0清除就很可能也可以写1进去,而这与功能要求不符。如要控制只能写0而不能写1,则硬件比较复杂。
  • 3)从应用便捷性角度来说,读了寄存器数据以后,照着写回去就可以清0,不用再更改一次数据。! g" S( Q. v: Y

4 B1 l% g5 R% b2 F

+ o9 Q) c2 C5 l/ V0 k还有寄存器一般支持的是byte、half word、word操作,对于寄存器上有几个标志位的情况下,完成对单一标志位的清0,又不影响其他标志位,但又必须对其他位进行写,因此也就只能是写1或者写0清0才有效,只能一种方式。0 u: E. t/ o: h# V$ y

" ?" B) H% V1 v- m2 S" ~* a
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-25 04:34 , Processed in 0.078125 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表