qq_34007813 2018-04-02 15:11 采纳率: 66.7%
浏览 747
已采纳

这是什么问题,是编译器的小缺陷吗?

本人最近在用STC12C5A60S2做一个AD电压检测,编写了如下程序

void ADC_SEL(unsigned char shift,unsigned char num)
{
//unsigned char c = 0x1;
P1ASF = num << shift;
}
我想用对num(num = 1)的移位来打开P1口AD允许,但是经过移位后发现P1ASF = 0,于是我截取了如下汇编代码:
反汇编:
C:0x054F ED MOV A,R5
C:0x0550 A807 MOV R0,0x07
C:0x0552 08 INC R0
C:0x0553 8002 SJMP C:0557
C:0x0555 C3 CLR C
C:0x0556 33 RLC A
C:0x0557 D8FC DJNZ R0,C:0555
C:0x0559 F59D MOV P1ASF(0x9D),A
按C语言调用规则,第一个参数是放在R7寄存器里的,也就是说R7里的数是左移位数,但我并没有在代码里看到对R7的处理。而是编译器自作主张将ACC移了8位,那肯定最后就等于零了呀。这是不是编译器的一个小缺陷?编译器我用的Keil4请问各位高手怎么解决?

  • 写回答

4条回答 默认 最新

  • qq_34007813 2018-04-12 07:39
    关注

    经过实验,直接对PIASF赋值0xff即可。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 ROS Turtlebot3 多机协同自主探索环境时遇到的多机任务分配问题,explore节点
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题