『壹』 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)兩種封裝形式。