请问哪位大侠用过STC12C5A60S2单片机?
现在想实现STC12C5A60S2单片机与PC机的串口通信,有哪位大侠做过这个,想看看程序学习一下,对这个单片机的配置也不是很了解,所以哪位大侠有关于这个单片机的手册发给我看看,非常感谢~ http://www.stcmcu.com/ 你可以上宏晶的网站去下载资料以及例程,也可以按普通的51单片机来配置http://www.mcu-memory.com/ 你以为它和传统的51有区别? zuu0 发表于 2012-7-27 17:07 static/image/common/back.gif
你以为它和传统的51有区别?
因为看了开发板附带的一个Demo程序,里面写的串口初始化程序和51不一样,没用过这个,所以不知道是不是有不一样的配置 #define Fclk 11059200UL //使用11.0592M晶体
#define BitRate 9600UL //波特率定义为9600
/********************************************************************
函数功能:串口初始化。
入口参数:无。
返 回:无。
备 注:无。
********************************************************************/
void UartInit(void)
{
EA=0; //暂时关闭中断
TMOD&=0x0F;//定时器1模式控制在高4位
TMOD|=0x20; //定时器1工作在模式2,自动重装模式
// PCON|=0x80; //串口波特率加倍 SMOD=1
SCON=0x50; //串口工作在模式1
TH1=256-Fclk/(BitRate*12*32);//计算定时器重装值
TL1=256-Fclk/(BitRate*12*32);
ES=1; //串行中断允许
TR1=1; //启动定时器1
REN=1; //允许接收
EA=1; //允许中断
}
void Uart_ISR(void) interrupt 4
{
if(RI) //收到数据
{
RI=0; //清中断请求
if(flg == 0) //没有解密
RChar = SBUF;
}
else //发送完一字节数据
{
TI=0;
Sending=0;//清正在发送标志
}
}
#endif
/********************************************************************
函数功能:往串口发送一字节数据。
入口参数:d: 要发送的字节数据。
返 回:无。
备 注:无。
*******************************************************************
void UartPutChar(uint8 d)
{
SBUF=d; //将数据写入到串口缓冲
Sending=1; //设置发送标志
while(Sending); //等待发送完毕
}
*/
/********************************************************************
函数功能:发送一个字符串。
入口参数:pd:要发送的字符串指针。
返 回:无。
备 注:无。
*******************************************************************
void Prints(uint8 * pd)
{
while((*pd)!='\0') //发送字符串,直到遇到0才结束
{
UartPutChar(*pd); //发送一个字符
pd++;//移动到下一个字符
}
}
其他设置方法与51基本一致,STC这款是双串口单片机,如有用第二串口需要查看相关寄存器设置。 zuu0 发表于 2012-7-27 17:22 static/image/common/back.gif
#define Fclk 11059200UL //使用11.0592M晶体
#define BitRate 9600UL //波特率定义为9600
...
谢谢~STC12C5A60S2是双串口的,我想实现串口1接受数据,通过串口2发送给其他设备A,这里面的逻辑不是太清楚,先通过串口2给其他设备A发指令,然后串口1有接受,启动串口1的接收中断,然后想把串口1接受到的数据通过串口2再发给设备A。对这个双串口不是很理解,大侠有没有类似用到两个串口的程序啊,能发给我看看吗?
页:
[1]