|
相关连接:参与社区讨论
--------------------------------------------------------------------
天梯 之 从零开始玩PIC——7.位变量的定义与引用
--------------------------------------------------------------------
再次遭遇非典(匠人被一个小小的分号绊倒了):位变量的定义与引用?
先看看匠人的程序:
//-------------------------------------------------------- //重新命名数据类型 //-------------------------------------------------------- typedef unsigned char tU08; //unsigned 8
//================= //位结构类型定义 //定义一个位结构,结构名=BIT_F //================= typedef struct { unsigned b0 : 1; //结构元素表 unsigned b1 : 1; unsigned b2 : 1; unsigned b3 : 1; unsigned b4 : 1; unsigned b5 : 1; unsigned b6 : 1; unsigned b7 : 1; } BIT_F; //结构类型
//================= //联合定义 //定义一个联合,联合名=FLAG_union //================= typedef union { BIT_F oneBit; tU08 allBits; }FLAG_union;
//--------------------------------------------------------
// FLAG_union PORTC_TEMP; //PORTC 口输出临时缓冲区
#define PORTC_TMP PORTC_TEMP.allBits #define LED00_TMP PORTC_TEMP.oneBit.b3; (请注意,这里多了一个分号,匠人就是被这个不起眼的分号给绊倒的!)
//-------------------------------------------------------- //接下来两条是程序中的指令 //--------------------------------------------------------
PORTC_TMP = 0 ; //不报错 PORTC_TEMP.oneBit.b3 = 1 ; //不报错 LED00_TMP = 1 ; //报错(信息:Error[195] H:\pic\clolk_01\clock.c 224 : expression syntax) //-------------------------------------------------------- 请注意红色字体部分,该语句应该是等效于蓝色字体的吧?但是编译就是通不过?
上网查了一下,居然发现hotpower早在2004年已经修炼过此非典大法了。看来要再次请教hotpower。把你的脑髓贡献一下吧……
--------------------------------------------------------------
--------------------------------------------------------------
问题在平常人的指点下获得了解决
--------------------------------------------------------------
|
73楼: 试试加个括号,突然发现多了个分号,倒塌了~~~ |
#define LED00_TMP (PORTC_TEMP.oneBit.b3)
签名:
不当雷锋,愿做水工; 闲来无聊,网上兜风。 ---------------------- 做个平常人,好好享乐吧 |
 有空抱着地球玩玩 | | |
程序匠人 发表于 2008-1-2 22:30 PIC 单片机 ←返回版面  |
74楼: 谢平常人提醒,果然是分号惹祸 |
| 用ASM用惯了,偶然用C,最大的问题,就是出来这个分号上。经常被忽视。呵呵 | |
|