找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4003|回复: 9
打印 上一主题 下一主题
收起左侧

[求助] 请教个简单的入门问题(看内容吧)

[复制链接]
跳转到指定楼层
楼主
ID:35461 发表于 2012-3-8 15:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "reg51.h" sbit P1_0 = P1^0; void main() { P1_0 = 0; } 仿真的话上面点亮的是第一个灯,如果将语句“sbit P1_0 = P1^0;”改为“sbit P1_0 = P1^1;” 地址wytq偏移了1个单位,那么点亮的便是第二个灯吧! 在reg51.h 文件里有这么两名:sfr P0 = 0x80;sfr P1 = 0x90; P0到P1地址相差刚好是10(个单位)。 那么如果我还是要点亮第 一 个灯。 可不可以用这样:sbit P1_0 = P0^10 (用P0偏移10个单位的地址得到P1) ?????
[此贴子已经被作者于2012-3-8 15:36:13编辑过]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:35461 发表于 2012-3-8 15:37 | 只看该作者
无法编程换行,请大家耐心点看吧。然后帮帮解答一下!
回复

使用道具 举报

板凳
ID:27916 发表于 2012-3-8 17:48 | 只看该作者

会自己来推理,确实是好事

 

但是还是建议你多看点书,基础很重要

回复

使用道具 举报

地板
ID:27916 发表于 2012-3-8 17:49 | 只看该作者
P1^1的意思不是什么偏移一个地址,指的是P1.1在C语言里,^就是 .  的意思
回复

使用道具 举报

5#
ID:27916 发表于 2012-3-8 17:51 | 只看该作者

另外0X80和0X90,他们之间不是相差10哦,而是相差16

回复

使用道具 举报

6#
ID:27916 发表于 2012-3-8 18:00 | 只看该作者
看看书吧,磨刀不误砍柴工呀
回复

使用道具 举报

7#
ID:35461 发表于 2012-3-8 18:10 | 只看该作者
哦,是了。0x80 到0x90 是相差16。是16进制的。 那我把那句改成:sbit P1_0 = P0^16,编译不过呀。为什么? 我在书上没有看到这方面的讲解,现在正在看《新概念51单片机C语言教程.入门、提高、开发》好像也没有讲到。
回复

使用道具 举报

8#
ID:27916 发表于 2012-3-8 20:32 | 只看该作者
我不是说了嘛, ^ 这个符号不是代表偏移,而是代表前面一个寄存器的第几位,一个只有八位的数,你想知道它的第九位,你觉得可行吗?
回复

使用道具 举报

9#
ID:35461 发表于 2012-3-8 21:21 | 只看该作者
原来如此。 还以为按C语言来,可以偏移到任何地址呢!! 学习了,谢谢大师!!
回复

使用道具 举报

10#
ID:35691 发表于 2012-3-8 23:42 | 只看该作者

我认为不行,楼上那位仁兄也讲了^的含义,和c语言中的不同。。

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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