全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版

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

[复制链接]
8529 5

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

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

x
初学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.是这个单片机不能用长整型,还是其他什么问题?



  

举报

回复

5 个评论

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

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

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表