STC8A的移位问题,代码该怎么表达请教?
extern U8 xdatamBuffer; //变量
在其它环境中是这样实现整体移位,连续接收数据
asm("RRCmBuffer+10");
asm("RRCmBuffer+9");
asm("RRCmBuffer+8");
asm("RRCmBuffer+7");
asm("RRCmBuffer+6");
asm("RRCmBuffer+5");
asm("RRCmBuffer+4");
asm("RRCmBuffer+3");
asm("RRCmBuffer+2");
asm("RRCmBuffer+1");
asm("RRCmBuffer");
现在要改到KEILC51中,用于STC8A上去, C该怎么表达, 或者汇编该怎么弄呢?
我试了下老C51的汇编插入进去,
#pragma asm
RLC A
#pragma endasm
它奶奶的, 还报错哟~~~~
: error C272: 'asm/endasm' requires src-control to be active _crol_(temp,1); 用C语言就不应该再用带CY移位的处理,51的汇编倒是很容易方便,楼主贴的“其它环境中”也是嵌入的汇编。
我一般是接收满1个字节,就保存一个字节,超简单,效率高。大概代码意思如下:
假设是P1.0输入的位信号:
dat = dat >> 1;
if(P10)dat |= 0x80;
if(++bit_cnt >=8) //满一个字节
{
rxbuf = dat;
rxcnt++;
bit_cnt = 0;
} 小李非刀 发表于 2018-6-14 23:10
用C语言就不应该再用带CY移位的处理,51的汇编倒是很容易方便,楼主贴的“其它环境中”也是嵌入的汇编。
我 ...
因为这里时序要求严格, 记得当时也是像你说的这么处理的,但是最后测试还是我那样处理的效率高,所以就这么用了
C51中要看转汇编的效率了!
KEIL C51C中嵌入汇编的格式是怎么弄的呢? 什么格式? 班主! 而且用汇编很容易计算出 消耗的时间 对时序要求严格的应用,汇编是第一选择。 su33691 发表于 2018-6-15 16:06
对时序要求严格的应用,汇编是第一选择。
是的, 话说c51插入汇编的格式是怎样的呢? 在 C 文件中要嵌入汇编代码片以如下方式加入汇编代码:
#pragma ASM
; Assembler Code Here
#pragma ENDASM
在 Project 窗口中包含汇编代码的 C 文件上右键,选择“Options for ...”,
点击右边的“Generate Assembler SRC File”和
“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态;
根据选择的编译模式,把相应的库文件(如 Small 模式时,是 Keil\C51\Lib\C51S.Lib)加入工程中, 该文件必须作为工程的最后文件;
一定要将c:\keil\C51下的STARTUP.A51文件加入项目
4、编译,即可生成目标代码。 su33691 发表于 2018-6-15 19:44
在 C 文件中要嵌入汇编代码片以如下方式加入汇编代码:
#pragma ASM
; Assembler Code Here
#pragma ASM
; Assembler Code Here
#pragma ENDASM
谢谢, 编译没有提示错误了
新建工程就有这个文件 c:\keil\C51下的STARTUP.A51
我没有管 Keil\C51\Lib\C51S.Lib 这个文件目前嵌入的汇编没有错误!
还有其它一堆错误要改,移植~~~ 小李非刀 发表于 2018-6-14 23:10
用C语言就不应该再用带CY移位的处理,51的汇编倒是很容易方便,楼主贴的“其它环境中”也是嵌入的汇编。
我 ...
如此操作,又得多加一全局变量了。
页:
[1]