STC11F01与12C5A60S2有区别吗?同样的代码,串口波特率竟然差很多,很疑惑…… 望高手解惑
使用 STC11F01与12C5A60S2分别下载程序,就是一个简单的串口发送程序,使用示波器观察输出的波形,发现波特率竟然差别很大,难道两者的硬件有不同吗?但是看手册说内核都是一样的啊!!!很疑惑…… 望高手解惑!!!代码如下:
#include "reg51.h"
//#include "STC12c5a.H"
//#include "STC11F01.H"
sfrAUXR = 0x8e;
sfrBRT = 0x9c;
#define u8 unsigned char
#define U8 u8
u8 code hh[]={
0xff,0xff,0xff,
0xff,0xff,0xff,
0xff,0xff,0xff,
0xff,0xff,0xff,
};
u8 iii=0;
////*
void UART_Init(void) //@24MHz
{ //PCON |= 0x80; //使能波特率倍速位SMOD
PCON = 0x80;
SCON = 0x50; //8位数据,可变波特率 REN=1,允许接收SCON = 0x50;
BRT = 0xFf; //设定独立波特率发生器重装值////BRT = 0xF4;为115200 ///BRT = 0xFA;为115200*2
AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T
AUXR |= 0x01; //串口1选择独立波特率发生器为波特率发生器
AUXR |= 0x10; //启动独立波特率发生器
//AUXR =0x3d;
//AUXR =0x15;
ES=1; //使能串口接收中断,
EA=1; //打开所有中断
}
///*/
void sio_int() interrupt 4 using 3 //串口中断函数
{
ES=0;
ES=1;
}
void UART_Send_Byte(unsigned char mydata)
{
ES=0;
TI=0;
SBUF=mydata;
while(!TI);
TI=0;
ES=1;
}
void delay(unsigned int time)
{
while(time--);
}
voidmain(void)
{
UART_Init();
while(1)
{
UART_Send_Byte(hh);
if(iii==31) iii=0;
delay(20);
}
} STC11F01不太清楚,但stc12c5a60s2波特率是可以设置的,有关12T和1T. 可能是下载进没有设定外晶振吧 多谢 lee345的提醒,确实是你说的原因,我在下载程序的时候 切换芯片型号的时候 没有勾选那个选项,害得我找了好久都没找到,哎 无语啊!呵呵…… 用串口监视器 监视串口数据,不要用示波器
页:
[1]