打印

求助关于单片机C语言的编程

[复制链接]
1900|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wkmhl|  楼主 | 2008-5-6 07:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
后学| | 2008-5-6 08:41 | 只看该作者

80000H?

XBYTE[ 0x8000 ] = 0x30;

((unsigned char *)0)[ 0x8000 ] = 0x30;

使用特权

评论回复
板凳
zhaoyu2005| | 2008-5-6 08:45 | 只看该作者

如果是标准51的话

好像定义一个pdata或者xdata,然后赋值30h即可
如果不是标准51,好像得变通一下

使用特权

评论回复
地板
wxj1952| | 2008-5-6 08:50 | 只看该作者

我这样行吗?

*((unsigned char xdata *)0x8000 )=0x30;

((unsigned char xdata *)0x8000)[0]=0x30;

使用特权

评论回复
5
农民讲习所| | 2008-5-6 09:12 | 只看该作者

LS 60分

*((volatile unsigned char xdata *)0x8000 )=0x30

使用特权

评论回复
6
wxj1952| | 2008-5-6 09:52 | 只看该作者

所长高见

#pragma OT(3)

*((unsigned char xdata *)0x8000 )=0x30;

((unsigned char xdata *)0x8000)[0]=0x30;

使用特权

评论回复
7
wkmhl|  楼主 | 2008-5-6 22:50 | 只看该作者

谢谢大家的回答,小弟学了

首先先谢谢大家,我这还有一点不明白
我在书上看到一段程序
#define PORT XBYTE[0X8000]
                           //在main()函数里直接就用到
PORT=0X30;
但是编译的时候总是说XBYTE定义好像不对,其实我对#define PORT XBYTE[0X8000]这句话不是很理解,能不能帮忙解释一下,先在这谢谢了。

使用特权

评论回复
8
computer00| | 2008-5-7 01:37 | 只看该作者

XBYTE其实是个宏定义,要事先定义才能用

#define XBYTE ((volatile unsigned char xdata *)0)

使用特权

评论回复
9
wxj1952| | 2008-5-7 13:29 | 只看该作者

absacc.h中已经说明了。不必太关心。

C51是给初阶程序员用的,只要包含头文件即能使用XBYTE[0X8000]了。

#include <absacc.h>  

 一定要关心为什么,去看看absacc.h 文件内的定义。与圈圈是一个意思:

#define XBYTE ((unsigned char *)0x20000L).

以上0x2xxxx (三字节通用指针形式)是FRANKLIN的外部存储器编码,keil 的有所不同。照 圈圈直接注明xdata 就不必关心编码号了。

使用特权

评论回复
10
lbx_00| | 2008-5-7 19:09 | 只看该作者

这样呢

unsigned char xdata x _at_ 0x8000;

 x =0x30;

使用特权

评论回复
11
noend297| | 2008-5-9 10:04 | 只看该作者

用at定义一个绝对地址变量

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

28

帖子

0

粉丝