关于STM8输出问题

[复制链接]
2730|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

但如果嵌入汇编,那它的移植性会大打折扣.
 楼主| wgggjfg 发表于 2010-9-13 14:08 | 显示全部楼层
其实我是想到51的Keil中有个Sbit 可直接定义IO口的位,进行输出/输入.
香水城 发表于 2010-9-13 14:11 | 显示全部楼层
其实我是想到51的Keil中有个Sbit 可直接定义IO口的位,进行输出/输入.
wgggjfg 发表于 2010-9-13 14:08


如果你强调可移植性,那么51的Keil中这个Sbit 也不具有可移植性。
 楼主| wgggjfg 发表于 2010-9-16 11:33 | 显示全部楼层
香主:
最近在用嵌入汇编,看了网上的一个汇编例子,也看了一下手册,但在嵌入时宏定义常量怎么办啊?
我试了用#define 但汇编程序不认它.
我又试了equ 但编译器又通不过.
香水城 发表于 2010-9-16 11:57 | 显示全部楼层
香主:
最近在用嵌入汇编,看了网上的一个汇编例子,也看了一下手册,但在嵌入时宏定义常量怎么办啊?
我试了用#define 但汇编程序不认它.
我又试了equ 但编译器又通不过. ...
wgggjfg 发表于 2010-9-16 11:33


这个我不太清楚,你可以查查编译器的手册。
无冕之王 发表于 2010-9-16 18:19 | 显示全部楼层
这些调试的具体问题,得自己查查相关的手册
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

65

主题

438

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部