[通用8051核FLASH系列]

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

[复制链接]
6184|2
手机看帖
扫描二维码
随时随地手机跟帖
yueguang3048|  楼主 | 2021-7-9 09:49 | 显示全部楼层 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-25 09:58 编辑

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

不超过65535,没问题。
2021-07-09_094315.jpg

超过65535有问题
2021-07-09_094214.jpg
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

主题

961

帖子

4

粉丝