打印
[通用8051核FLASH系列]

【已解决】HC89S003的数据类型支持疑问

[复制链接]
6389|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 芯圣电子官方QQ 于 2023-7-25 09:58 编辑

HC89S003对long类型的不支持还是编译器的设置问题?刚入门撸代码,烦请各位高手指教。long不是4字节,数据范围很大嘛

不超过65535,没问题。


超过65535有问题
void main()
{
        unsigned int gui_AdcValue = 0;                                          //用于存放ADC的值
        unsigned long xdata ValueNum1 = 0;
        System_Init();
        Delay20us();
        while(1)
        {
                        ADCC0 |= 0x40;                                        //启动ADC转换
                        while(!(ADCC0&0x20));                //等待ADC转换结束
                        ADCC0 &=~ 0x20;                                        //清除标志位
                        gui_AdcValue = ADCR;                //获取ADC的值        
               
                        ValueNum1 = gui_AdcValue * 32;

        }
}


使用特权

评论回复
沙发
zhengshuai888| | 2021-7-10 13:50 | 只看该作者
仿真情况下IDE显示的值有可能不是实际值。

使用特权

评论回复
板凳
yueguang3048|  楼主 | 2021-7-12 09:19 | 只看该作者
本帖最后由 yueguang3048 于 2021-7-12 09:21 编辑
zhengshuai888 发表于 2021-7-10 13:50
仿真情况下IDE显示的值有可能不是实际值。

感谢回复,这货必须保证相同数据类型就可以了。
  • void main()
  • {
  •         unsigned int gui_AdcValue = 0;                                          //用于存放ADC的值
  •         unsigned long xdata ValueNum1 = 0;
  •         System_Init();
  •         Delay20us();
  •         while(1)
  •         {
  •                         ADCC0 |= 0x40;                                        //启动ADC转换
  •                         while(!(ADCC0&0x20));                //等待ADC转换结束
  •                         ADCC0 &=~ 0x20;                                        //清除标志位
  •                         gui_AdcValue = ADCR;                //获取ADC的值
  •                         ValueNum1 = (unsigned long)gui_AdcValue * 32;
  •         }
  • }

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:海纳百川,有容乃大 壁立千仞,无欲则刚

11

主题

1052

帖子

6

粉丝