找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

求教!STC12C5a单片机不能用长整型吗?

[复制链接]
glr 发表于 2013-10-17 14:45:02 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
初学stc12c5a单片机,编程如下:


#include<stc12c5a.h>
#include <stdio.h>
#include <stdlib.h>


signed long int aaa;
                                                

void Init_Uart()
{
// 115200波特率
PCON &= 0x7f;//波特率不倍速
SCON = 0x50;//8位数据,可变波特率
BRT = 0xFD;//设定独立波特率发生器重装值 11.0592M晶振
AUXR |= 0x04;//独立波特率发生器时钟为Fosc,即1T
AUXR |= 0x01;//串口1选择独立波特率发生器为波特率发生器
AUXR |= 0x10;//启动独立波特率发生器
ES = 1; //充许串口1中断
}                                                         


char putchar (unsigned char i)
{
    ES     =   0;  //关串口中断
    TI     =   0;  //清零串口发送完成中断请求标志
    SBUF   =   i;
    while(TI ==0); //等待发送完成
    TI     =   0;  //清零串口发送完成中断请求标志
    ES     =   1;  //允许串口中断
    return SBUF;
}


void abc()
{

aaa=32001;
}



        




//主函数,C语言的入口函数:        
void main(void)  
{
        Init_Uart();
          while(1)
        {
             abc();
           if(RI)
                {
                RI=0;                        
        if (SBUF=='l'){printf("%d", aaa);}
                  }
}




用串口调试助手,收到的aaa为0. 如果aaa定义为:signed  int aaa;  则正常收到32001.是这个单片机不能用长整型,还是其他什么问题?



  
 楼主| glr 发表于 2013-10-17 20:20:20 | 显示全部楼层
是我这个keil 不好?没人知道吗?
 楼主| glr 发表于 2013-10-21 00:41:29 | 显示全部楼层
没人知道?
一接触单片机就碰了壁,单片机世界如果狭窄?32767这样小的范围都不能超过?C语言通不过,汇编麻烦,只好另寻他途了。
peng2281 发表于 2013-11-2 10:08:07 | 显示全部楼层
新手上路受教
ding_yuxin 发表于 2014-3-6 22:35:09 | 显示全部楼层
char putchar (unsigned char i)
传的参数是个无符号数,为什么要以有符号数回传呢?

if (SBUF=='l'){printf("%d", aaa);}
aaa是长整形? 为什么要用%d 输出呢?是不是要用%ld
ding_yuxin 发表于 2014-3-6 22:39:37 | 显示全部楼层
在8位机中,long 是要占四个字节的
而char 只是一个字节啊
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-23 10:40 , Processed in 0.059300 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表