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