在手册中写到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语言中怎么实现了?
这个就要看C编译是否支持这2条指令。
可以这样写试试:ODR |= 0x10; ODR &= ~0x10; 如果不行,就要考虑嵌入汇编实现。
以前就用的这个,这样不行
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
但如果嵌入汇编,那它的移植性会大打折扣.
其实我是想到51的Keil中有个Sbit 可直接定义IO口的位,进行输出/输入.
其实我是想到51的Keil中有个Sbit 可直接定义IO口的位,进行输出/输入.
如果你强调可移植性,那么51的Keil中这个Sbit 也不具有可移植性。
版主:
最近在用嵌入汇编,看了网上的一个汇编例子,也看了一下手册,但在嵌入时宏定义常量怎么办啊?
我试了用#define 但汇编程序不认它.
我又试了equ 但编译器又通不过.