混编的方式下,atmeg单片机向无线芯片发数出错
2019-03-24 21:11发布
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
单片机通过一个管脚向一个无线芯片写数据,采用c写总的架构,然后数据写到管脚用的汇编,但是出来的数据总是不对,请高手指教。大致的程序如下
unsigned char ctrl[7]={0x22,0x33,0xed,0xac,0x56,0x78,0xf7};
unsigned char *p=ctrl;
void main()
{
...
for(i=0;i<7;i++)
{
send(*(p+i));
}
汇编函数如下(通过移位,写出去的bit都是从进位位C里出去的)
_send::
JJ:
LDI R24,$08; 一字节发8次
XZJ:
ROL R16
BRCS C_1
C_0:
CBI ,0X08,2 ;PORTD的2脚往外写数据,0x8是portd的地址
RCALL **(这里延时1ms)
RJMP PD
C_1:
SBI ,0X08,2 ;PORTD的2脚往外写数据,0x8是portd的地址
RCALL **(这里延时1ms)
PD:
DEC R24
BRNE XZJ
RET
找不到程序在哪里出错,上面的程序分别包含在.C,.S文件里,感觉参数的传递也不会有错。虽然汇编写常数是16进制$,但是c里面是0x,这点没问题,可是单片机发出来的数据就是不对。是个周期数据
此帖出自
小平头技术问答
一周热门 更多>