打印

有几句代码看不懂,求解释

[复制链接]
1426|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
whirt_noob|  楼主 | 2015-12-28 23:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
whirt_noob|  楼主 | 2015-12-29 09:37 | 只看该作者
没人理我:Q

使用特权

评论回复
板凳
ningling_21| | 2015-12-29 09:52 | 只看该作者
STM8能像51一样支持位操作吗

使用特权

评论回复
地板
qq4988| | 2015-12-29 10:42 | 只看该作者
得重新定义,好像不能位操作

使用特权

评论回复
5
liufabing| | 2015-12-29 13:26 | 只看该作者
程序发全一点.如果是位操作,可以定义成结构体.

使用特权

评论回复
6
whirt_noob|  楼主 | 2015-12-29 15:22 | 只看该作者
ningling_21 发表于 2015-12-29 09:52
STM8能像51一样支持位操作吗

可以的,你就这样定义一下_Bool   led  @PA_ODR:1;  就可以了

使用特权

评论回复
7
whirt_noob|  楼主 | 2015-12-29 15:26 | 只看该作者
#include <sys\sys.h>
#include <lcd\lcd.h>

unsigned char bdata bitdata;
sbit bit7=bitdata^7;
sbit bit6=bitdata^6;
sbit bit5=bitdata^5;
sbit bit4=bitdata^4;
sbit bit3=bitdata^3;
sbit bit2=bitdata^2;
sbit bit1=bitdata^1;
sbit bit0=bitdata^0;

u16 BACK_COLOR, POINT_COLOR;   //背景色,画笔色          
void LCD_Writ_Bus(char da)   //串行数据写入
{       
        bitdata=da;
        LCD_SDA=bit7;LCD_SCK=0;LCD_SCK=1;
        LCD_SDA=bit6;LCD_SCK=0;LCD_SCK=1;
        LCD_SDA=bit5;LCD_SCK=0;LCD_SCK=1;
        LCD_SDA=bit4;LCD_SCK=0;LCD_SCK=1;
        LCD_SDA=bit3;LCD_SCK=0;LCD_SCK=1;
        LCD_SDA=bit2;LCD_SCK=0;LCD_SCK=1;
        LCD_SDA=bit1;LCD_SCK=0;LCD_SCK=1;
        LCD_SDA=bit0;LCD_SCK=0;LCD_SCK=1;
}

使用特权

评论回复
8
whirt_noob|  楼主 | 2015-12-29 15:27 | 只看该作者
贴了源代码的一段,求解答

使用特权

评论回复
9
whirt_noob|  楼主 | 2015-12-29 15:27 | 只看该作者
liufabing 发表于 2015-12-29 13:26
程序发全一点.如果是位操作,可以定义成结构体.

这个要怎么定义?真心求教

使用特权

评论回复
10
whirt_noob|  楼主 | 2015-12-29 15:28 | 只看该作者
qq4988 发表于 2015-12-29 10:42
得重新定义,好像不能位操作

要怎么重新定义?

使用特权

评论回复
11
qq4988| | 2015-12-29 15:47 | 只看该作者
i=0x80;


if(LCD_SDA&i)
{

}   

i>>=1;

使用特权

评论回复
12
liufabing| | 2015-12-29 15:50 | 只看该作者
https://bbs.21ic.com/icview-865511-1-1.html
位域排列是有默认方向的,不同的编译器默认是不一样的,这点要注意

使用特权

评论回复
13
liufabing| | 2015-12-29 15:53 | 只看该作者
另外你在芯片的头文件里可能也能找到这样的位定义.

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
whirt_noob + 3 很给力!
14
ff8zgs| | 2015-12-29 17:21 | 只看该作者
stm8 不支持sbit 关键字吧
有个东西叫位域 能满足你 注意大端小端

使用特权

评论回复
15
柏谕| | 2015-12-29 21:02 | 只看该作者
用结构体
struct
                {
                        uchar bit_0        :1;
                        uchar bit_1        :1;
                        uchar bit_2        :1;
                        uchar bit_3        :1;
                        uchar bit_4        :1;
                        uchar bit_5        :1;
                        uchar bit_6        :1;
                        uchar bit_7        :1;       
                }Flag;
这样定义位

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
whirt_noob + 3 赞一个!
16
whirt_noob|  楼主 | 2015-12-29 21:15 | 只看该作者
liufabing 发表于 2015-12-29 15:50
https://bbs.21ic.com/icview-865511-1-1.html
位域排列是有默认方向的,不同的编译器默认是不一样的,这点 ...

多谢了,知道怎么去做了

使用特权

评论回复
17
whirt_noob|  楼主 | 2015-12-29 21:18 | 只看该作者
liufabing 发表于 2015-12-29 15:53
另外你在芯片的头文件里可能也能找到这样的位定义.

这个原来是51单片机的上的程序,最近想移到STM8上去,STVD不支持sbit,多谢指点。

使用特权

评论回复
18
whirt_noob|  楼主 | 2015-12-29 21:20 | 只看该作者
ff8zgs 发表于 2015-12-29 17:21
stm8 不支持sbit 关键字吧
有个东西叫位域 能满足你 注意大端小端

STM8是不支持sbit的,一时间不知道怎么把一个变量拆成8个二进制数

使用特权

评论回复
19
whirt_noob|  楼主 | 2015-12-29 21:21 | 只看该作者
柏谕 发表于 2015-12-29 21:02
用结构体
struct
                {

懂了,C语言功底不过关啊:L

使用特权

评论回复
20
whirt_noob|  楼主 | 2015-12-29 21:26 | 只看该作者

这样做会使程序更加复杂吗?

使用特权

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

本版积分规则

个人签名:永远保持一颗充满激情的心

16

主题

286

帖子

8

粉丝