‘壹’ 51单片机 设置串口波特率115200初值怎么弄 呢 单片机是11.0592的晶振
void UartInit(void) //[email protected]
{
PCON &= 0x7f; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xfe; //串口1选择定时器1为波特率发生器
TMOD &= 0x0f; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
void UartInit(void) //[email protected]
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
AUXR &= 0xbf; //定时器1时钟为Fosc/12,即12T
AUXR &= 0xfe; //串口1选择定时器1为波特率发生器
TMOD &= 0x0f; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFF; //设定定时初值
TH1 = 0xFF; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
‘贰’ 51单片机编程
#include <reg51.h>
int flag = 0;
int tag = 0;
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0C8; //计数14286: 20Hz = 50ms 50/7*2*1000
TL0 = 0x32;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main(void)
{
InitTimer0();
P1.0 = 1;
while(1)
{
if(tag==1)
{
P1.1 = ~P1.1;
tag = 0;
}
}
void Timer0Interrupt(void) interrupt 1
{
if(flag==0)
{
TH0 = 0x74;
TL0 = 0x7E;
flag = 1;
}
else
{
TH0 = 0x0C8;
TL0 = 0x32;
flag = 0;
}
tag = 1;
}
‘叁’ 52单片机 如何用T2来设波特率为115200的 串口接收 要用C语言写
void UART_init()
{
//初始化串行口和波特率发生器
SCON =0x64; //选择串口工作方式,打开接收允许
TMOD =0x21; //定时器1工作在方式2,定时器0工作在方式1
TH1 =0xfd; //实现波特率115200(系统时钟11.0592MHZ)
TR1 =1; //启动定时器T1
ET2 =1; //允许T2中断
ES=1; //允许串行口中断
PS=1; //设计串行口中断优先级
EA =1; //单片机中断允许
}
//--------------------------------------------------------------------------------------------------
// 函数名称: com_interrup()串口接收中断处理函数
// 函数功能: 接收包括起始位'S'在内的十位数据到数据缓冲区
//--------------------------------------------------------------------------------------------------
com_interrupt(void) interrupt 4 using 3
{
unsigned char RECEIVR_buffer;
if(RI) //处理接收中断
{
RI=0; //清除中断标志位
RECEIVR_buffer=SBUF; //接收串口数据
if(point==0) //如果还没有接收到起始位
{
if(RECEIVR_buffer=='S') //判断是否起始标志位
point++; //是准备接收下一位
else
point=0; //不是,继续等待起始位
}
else if(point>0&&point<10) //判断是否接收够十位数据
buffer[point++]=RECEIVR_buffer; //不够,把接收到的数据放入接收缓存区
else point=0; //缓冲区已满,清除缓存区内数据重新接收
}
If(TI) //处理发送中断
{
TI=0;
}
}
//
‘肆’ 给100分,stc89c52单片机,用11.0592的晶振,产生115200的波特率
如果STC单片机处于6T模式,RCAP2H=0xFF,RCAP2L=0xD0。如果为12T方式RCAP2H=0xFF,RCAP2L=0xE8。然后设置T2CON=0x34即完成对串口的初始化,其余的操作就和普通串口一样了。
‘伍’ 单片机串口用T2做定时器 晶振为:22。1184 比特率:115200 汇编程序怎么写
初始化程序如下:
MOV SCON, #50H ;设置串口方式1,允许接收.
MOV T2CON, #00110100B ;设置T2
MOV T2MOD, #0
MOV RCAP2H, #0FFH
MOV RCAP2L, #0FAH
MOV TH2, #0FFH
MOV TL2, #0FAH
……
‘陆’ 编程实现stm32单片机串口的数据收发
int main(void)
{
u16 t;
u16 len;
u16 times=0;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //LED端口初始化
KEY_Init(); //初始化与按键连接的硬件接口
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
printf("\r\n您发送的消息为:\r\n\r\n");
for(t=0;t<len;t++)
{
USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
printf("\r\n\r\n");//插入换行
USART_RX_STA=0;
}
}
}
‘柒’ C51单片机程序:数码管左边两位显示秒,右边两位显示毫秒。串口波特率设置为115200串口助手发送
就说你要求的串口波特率为115200,除了STC10以上系列的单片机实物可以达到。对于传统的51单片机,不论仿真还是实物开发板都实现不了。
‘捌’ 89C52单片机怎样产生115200波特率
采用11.0592M的晶体或者22.1184M的的晶体
89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。89C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。