打印

关于STM8输出问题

[复制链接]
1954|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wgggjfg|  楼主 | 2010-9-13 11:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM8, TE, se, RS, TI
在手册中写到Px_ODR可以位输出;
原文如下:
Bit read-modify-write instructions (BSET,BRST) can be used on the DR register to drive an individual pin without affecting the others.
那C语言中怎么实现了?
沙发
wgggjfg|  楼主 | 2010-9-13 11:55 | 只看该作者
给不能给个例子?

使用特权

评论回复
板凳
香水城| | 2010-9-13 12:41 | 只看该作者
这个就要看C编译是否支持这2条指令。

可以这样写试试:ODR |= 0x10; ODR &= ~0x10;  如果不行,就要考虑嵌入汇编实现。

使用特权

评论回复
地板
wgggjfg|  楼主 | 2010-9-13 14:06 | 只看该作者
以前就用的这个,这样不行
I2C_CLK_PORT->ODR &= (u8)(~I2C_CLK)这个被编译成下面的语句:
0xf116 CALLF 0x00f17c

0xf17c LD    A,0x039a
0xf17f CPL   A  
0xf180 AND   A,[0x039c.W]  
0xf184 LD    [0x039c.W],A
0xf188 RETF

但如果嵌入汇编,那它的移植性会大打折扣.

使用特权

评论回复
5
wgggjfg|  楼主 | 2010-9-13 14:08 | 只看该作者
其实我是想到51的Keil中有个Sbit 可直接定义IO口的位,进行输出/输入.

使用特权

评论回复
6
香水城| | 2010-9-13 14:11 | 只看该作者
其实我是想到51的Keil中有个Sbit 可直接定义IO口的位,进行输出/输入.
wgggjfg 发表于 2010-9-13 14:08


如果你强调可移植性,那么51的Keil中这个Sbit 也不具有可移植性。

使用特权

评论回复
7
wgggjfg|  楼主 | 2010-9-16 11:33 | 只看该作者
香主:
最近在用嵌入汇编,看了网上的一个汇编例子,也看了一下手册,但在嵌入时宏定义常量怎么办啊?
我试了用#define 但汇编程序不认它.
我又试了equ 但编译器又通不过.

使用特权

评论回复
8
香水城| | 2010-9-16 11:57 | 只看该作者
香主:
最近在用嵌入汇编,看了网上的一个汇编例子,也看了一下手册,但在嵌入时宏定义常量怎么办啊?
我试了用#define 但汇编程序不认它.
我又试了equ 但编译器又通不过. ...
wgggjfg 发表于 2010-9-16 11:33


这个我不太清楚,你可以查查编译器的手册。

使用特权

评论回复
9
无冕之王| | 2010-9-16 18:19 | 只看该作者
这些调试的具体问题,得自己查查相关的手册

使用特权

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

本版积分规则

个人签名:专业人做专业事!高效充电。

65

主题

438

帖子

3

粉丝