关于STM8输出问题

hefang05119   2010-9-13 11:54 楼主
在手册中写到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语言中怎么实现了?

回复评论 (8)

                                 给不能给个例子?
点赞  2010-9-13 11:55
这个就要看C编译是否支持这2条指令。

可以这样写试试:ODR |= 0x10; ODR &= ~0x10;  如果不行,就要考虑嵌入汇编实现。
点赞  2010-9-13 12:41
以前就用的这个,这样不行
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

但如果嵌入汇编,那它的移植性会大打折扣.
点赞  2010-9-13 14:06
                                 其实我是想到51的Keil中有个Sbit 可直接定义IO口的位,进行输出/输入.
点赞  2010-9-13 14:08
其实我是想到51的Keil中有个Sbit 可直接定义IO口的位,进行输出/输入.
如果你强调可移植性,那么51的Keil中这个Sbit 也不具有可移植性。
点赞  2010-9-13 14:11
版主:
最近在用嵌入汇编,看了网上的一个汇编例子,也看了一下手册,但在嵌入时宏定义常量怎么办啊?
我试了用#define 但汇编程序不认它.
我又试了equ 但编译器又通不过.
点赞  2010-9-16 11:33
版主:
最近在用嵌入汇编,看了网上的一个汇编例子,也看了一下手册,但在嵌入时宏定义常量怎么办啊?
我试了用#define 但汇编程序不认它.
我又试了equ 但编译器又通不过. ...
这个我不太清楚,你可以查查编译器的手册。
点赞  2010-9-16 11:57
                                 这些调试的具体问题,得自己查查相关的手册
点赞  2010-9-16 18:19
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复