打印

keil c 问题1

[复制链接]
1896|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ptt1234|  楼主 | 2007-7-6 15:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的程序为什么有问题:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int

void main()
{
uchar bdata flag;
sbit flag_0=flag^0;//该2条语句有问题,而放到main()上面(flag
                   作全局变量)就没问题
.....
if(flag^7)  // 为什么flag^7不表示flag的第7位呢.而是XRL flag,0x07呢
{
....
}}

相关帖子

沙发
一朝成名| | 2007-7-6 16:01 | 只看该作者

借个光嘿嘿

有时候KEIL软件运行程序怎么走也走不过去为什么啊?

很简单的句子 JB JC之类的语句,转换很快的应该走下去的
不管全速还是单步就是走不下去
晕了    

使用特权

评论回复
板凳
ptt1234|  楼主 | 2007-7-6 16:12 | 只看该作者

2楼

举个例子来讨论讨论

使用特权

评论回复
地板
ayb_ice| | 2007-7-6 16:54 | 只看该作者

随便说说

你说对了,bdata变量必须是全局变量...
if(flag^7)这很显然是异或逻辑...
必须使用sbit定义的位变量访问...
别问我为什么,因为我也不知道...

使用特权

评论回复
5
zxq1234508| | 2007-7-6 17:03 | 只看该作者

sbit flag_0=flag^0

sbit flag_0=flag^0应该放在外面,必须做全局变量

使用特权

评论回复
6
一朝成名| | 2007-7-6 21:51 | 只看该作者

这个

LOOP:JNB  ADCON,LOOP

ADCON是LPC的特殊寄存起

使用特权

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

re:一朝成名

JNB是根据位条件跳转指令,而 ADCON是一个8位寄存器,它不是一个位,这样用是有问题的

使用特权

评论回复
8
一朝成名| | 2007-7-7 12:09 | 只看该作者

俺没解释清楚嘿嘿

为了简单话随便写了个

就是一个位 比如说ADCON1是ADCON其中一位

很纳闷 有时候全速运行能过去  有时候就过不去
单步也是    

怀疑是不是盗版软件的事

使用特权

评论回复
9
nana724| | 2007-7-7 16:08 | 只看该作者

有时候就是很邪门

使用特权

评论回复
10
lbx_00| | 2007-7-8 20:23 | 只看该作者

哦,

我不知道您用的是什么mcu,ADCON是可位寻址的吗

使用特权

评论回复
11
一朝成名| | 2007-7-9 15:12 | 只看该作者

能得拉

呵呵 多谢谢了这么热心
LPC900系列的

使用特权

评论回复
12
ptt1234|  楼主 | 2007-7-9 15:20 | 只看该作者

为什么

为什么BDATA 变量必须是全局变量,并且SBIT也必须方到函数外部.那不是我始终就要占用一个字节,如果我把他作为局部变量,当函数完结时而释放,岂不是更好.我还没有找到BDATA必须为全局变量的定义的书籍.

使用特权

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

本版积分规则

31

主题

121

帖子

0

粉丝