野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11164|回复: 3

请教一个51单片机的问题。sfr相关。

[复制链接]
发表于 2016-9-30 23:01:47 | 显示全部楼层 |阅读模式
用STC 的15系列单片机做东西时,P0驱动三极管,但蜂鸣器不响。想到可能因为P0准双向原因。所以程序中设置了 强上拉。果然,蜂鸣器响了。
设置如下:
P0M1 &= ~(1<<7);
P0M0 |=  (1<<7);

QQ截图20160930225451.jpg

手册上说明: 这两个寄存器的地址分别是0x93和0x94。
接下来,我不想用头文件中关于这两个寄存器的声明。
QQ截图20160930225810.jpg

我直接在程序中这样操作寄存器。
QQ截图20160930225951.jpg
但是下载程序后,并不是我预期的。蜂鸣器并没有BBB叫。我操作STM32寄存器都是这样做的啊。
请教为什么,还有sfr是什么意思?

回复

使用道具 举报

发表于 2016-10-1 11:08:05 来自手机 | 显示全部楼层
sfr应该是51里面专门用来实现寄存器映射的关键字啊,比如  sfr p0=0x80。。
回复 支持 反对

使用道具 举报

发表于 2016-10-1 18:14:43 | 显示全部楼层
SFR特殊功能寄存器
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-1 23:39:50 | 显示全部楼层
fire 发表于 2016-10-1 11:08
sfr应该是51里面专门用来实现寄存器映射的关键字啊,比如  sfr p0=0x80。。

谢火哥,查资料好像是因为51单片机寄存器和内存地址相同,所以不能通过指针操作寄存器
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-28 16:19 , Processed in 0.038042 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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