前幾天寫一個程序,碰到一個問題,51單片機常用到的波特率是9600的,但是使用到的模塊的波特率是115200的,程序寫好了但是功能不能正常實現,所以想到了修改波特率,但是在網上查了好多關于修改波特率的文章,但是都沒有直接可以解決問題的,希望寫這篇文章可以對遇到相同問題的同學起到幫助。
void Uart1Init(void) //串口初始化
{
SCON=0x50; //串口工作方式1,8位UART
TH2=0xFF;
TL2=0xFD; //波特率:115200 晶振:11.0592MHZ
RCAP2H=0xFF;
RCAP2L=0xFD; //16位自動再裝入值
TCLK=1;
RCLK=1;
C_T2=0;
EXEN2=0; //波特率發生器工作方式
TR2=1 ; //定時器2開始
TI = 1; //發送標志位置1
}
同時添加頭文件
#ifndef __STC89C5xRC_RDP_H_
#define __STC89C5xRC_RDP_H_
/////////////////////////////////////////////////
/* The following is STC additional SFR */
/* sfr AUXR = 0x8e; */
/* sfr AUXR1 = 0xa2; */
/* sfr IPH = 0xb7; */
sfr P4 = 0xe8;
sbit P46 = P4^6;
sbit P45 = P4^5; //ISP下載需勾選"ALE腳用作P4.5口"
sbit P44 = P4^4;
sbit P43 = P4^3;
sbit P42 = P4^2;
sbit P41 = P4^1;
sbit P40 = P4^0;
sfr XICON = 0xc0;
sfr WDT_CONTR = 0xe1;
sfr ISP_DATA = 0xe2;
sfr ISP_ADDRH = 0xe3;
sfr ISP_ADDRL = 0xe4;
sfr ISP_CMD = 0xe5;
sfr ISP_TRIG = 0xe6;
sfr ISP_CONTR = 0xe7;
/* Above is STC additional SFR */
/*--------------------------------------------------------------------------
REG51F.H
Header file for 8xC31/51, 80C51Fx, 80C51Rx+
Copyright (c) 1988-1999 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
Modification according to DataSheet from April 1999
- SFR's AUXR and AUXR1 added for 80C51Rx+ derivatives
--------------------------------------------------------------------------*/
/* BYTE Registers */
sfr P0 = 0x80;
sbit P00 = P0^0;
sbit P01 = P0^1;
sbit P02 = P0^2;
sbit P03 = P0^3;
sbit P04 = P0^4;
sbit P05 = P0^5;
sbit P06 = P0^6;
sbit P07 = P0^7;
sfr P1 = 0x90;
sbit P10 = P1^0;
sbit P11 = P1^1;
sbit P12 = P1^2;
sbit P13 = P1^3;
sbit P14 = P1^4;
sbit P15 = P1^5;
sbit P16 = P1^6;
sbit P17 = P1^7;
sfr P2 = 0xA0;
sbit P20 = P2^0;
sbit P21 = P2^1;
sbit P22 = P2^2;
sbit P23 = P2^3;
sbit P24 = P2^4;
sbit P25 = P2^5;
sbit P26 = P2^6;
sbit P27 = P2^7;
sfr P3 = 0xB0;
sbit P30 = P3^0;
sbit P31 = P3^1;
sbit P32 = P3^2;
sbit P33 = P3^3;
sbit P34 = P3^4;
sbit P35 = P3^5;
sbit P36 = P3^6;
sbit P37 = P3^7;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x8D;
sfr IE = 0xA8;
sfr IP = 0xB8;
sfr SCON = 0x98;
sfr SBUF = 0x99;
/* 80C51Fx/Rx Extensions */
sfr AUXR = 0x8E;
sfr AUXR1 = 0xA2;
sfr SADDR = 0xA9;
sfr IPH = 0xB7;
sfr SADEN = 0xB9;
sfr T2CON = 0xC8;
sfr T2MOD = 0xC9;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
/* PCA SFR
sfr CCON = 0xD8;
sfr CMOD = 0xD9;
sfr CCAPM0 = 0xDA;
sfr CCAPM1 = 0xDB;
sfr CCAPM2 = 0xDC;
sfr CCAPM3 = 0xDD;
sfr CCAPM4 = 0xDE;
sfr CL = 0xE9;
sfr CCAP0L = 0xEA;
sfr CCAP1L = 0xEB;
sfr CCAP2L = 0xEC;
sfr CCAP3L = 0xED;
sfr CCAP4L = 0xEE;
sfr CH = 0xF9;
sfr CCAP0H = 0xFA;
sfr CCAP1H = 0xFB;
sfr CCAP2H = 0xFC;
sfr CCAP3H = 0xFD;
sfr CCAP4H = 0xFE;
*/
/* BIT Registers */
/* PSW */
sbit CY = PSW^7;
sbit AC = PSW^6;
sbit F0 = PSW^5;
sbit RS1 = PSW^4;
sbit RS0 = PSW^3;
sbit OV = PSW^2;
sbit P = PSW^0;
/* TCON */
sbit TF1 = TCON^7;
sbit TR1 = TCON^6;
sbit TF0 = TCON^5;
sbit TR0 = TCON^4;
sbit IE1 = TCON^3;
sbit IT1 = TCON^2;
sbit IE0 = TCON^1;
sbit IT0 = TCON^0;
/* IE */
sbit EA = IE^7;
sbit EC = IE^6;
sbit ET2 = IE^5;
sbit ES = IE^4;
sbit ET1 = IE^3;
sbit EX1 = IE^2;
sbit ET0 = IE^1;
sbit EX0 = IE^0;
/* IP */
/* sbit PPC = IP^6;*/
sbit PT2 = IP^5;
sbit PS = IP^4;
sbit PT1 = IP^3;
sbit PX1 = IP^2;
sbit PT0 = IP^1;
sbit PX0 = IP^0;
/* P3 */
sbit RD = P3^7;
sbit WR = P3^6;
sbit T1 = P3^5;
sbit T0 = P3^4;
sbit INT1 = P3^3;
sbit INT0 = P3^2;
sbit TXD = P3^1;
sbit RXD = P3^0;
/* SCON */
sbit SM0 = SCON^7; // alternatively "FE"
sbit FE = SCON^7;
sbit SM1 = SCON^6;
sbit SM2 = SCON^5;
sbit REN = SCON^4;
sbit TB8 = SCON^3;
sbit RB8 = SCON^2;
sbit TI = SCON^1;
sbit RI = SCON^0;
/* P1 */
/* PCA
sbit CEX4 = P1^7;
sbit CEX3 = P1^6;
sbit CEX2 = P1^5;
sbit CEX1 = P1^4;
sbit CEX0 = P1^3;
sbit ECI = P1^2;
*/
sbit T2EX = P1^1;
sbit T2 = P1^0;
/* T2CON */
sbit TF2 = T2CON^7;
sbit EXF2 = T2CON^6;
sbit RCLK = T2CON^5;
sbit TCLK = T2CON^4;
sbit EXEN2 = T2CON^3;
sbit TR2 = T2CON^2;
sbit C_T2 = T2CON^1;
sbit CP_RL2= T2CON^0;
/* CCON */
/* PCA
sbit CF = CCON^7;
sbit CR = CCON^6;
sbit CCF4 = CCON^4;
sbit CCF3 = CCON^3;
sbit CCF2 = CCON^2;
sbit CCF1 = CCON^1;
sbit CCF0 = CCON^0;
*/
/////////////////////////////////////////////////
#endif
上一篇:8051指令集和匯編語言程序設計
下一篇:51單片機定時器和波特率
推薦閱讀
史海拾趣
為了更好地服務全球客戶,Fischer Elektronik積極實施國際化戰略。公司在全球范圍內建立了多個生產基地和銷售網絡,以確保能夠快速響應市場需求并提供高質量的產品和服務。通過多年的努力,Fischer Elektronik已經成功進入了眾多國際市場,并與眾多知名企業建立了長期合作關系。這些合作不僅提升了公司的品牌知名度,也為其帶來了更多的商業機會和發展空間。
為了更好地服務全球客戶,Fischer Elektronik積極實施國際化戰略。公司在全球范圍內建立了多個生產基地和銷售網絡,以確保能夠快速響應市場需求并提供高質量的產品和服務。通過多年的努力,Fischer Elektronik已經成功進入了眾多國際市場,并與眾多知名企業建立了長期合作關系。這些合作不僅提升了公司的品牌知名度,也為其帶來了更多的商業機會和發展空間。
ESS不僅在個人電腦音頻領域取得了顯著成就,還在HIFI領域實現了突破。ESS的HIFI傳承可以追溯到其創始人對音頻技術的深刻理解和對市場需求的敏銳把握。通過多年的技術積累和不斷創新,ESS成功推出了多款高性能的HIFI音頻芯片,如ES9018,這些產品憑借其卓越的性能和音質贏得了廣泛好評。
Dialog Semiconductor一直專注于能源管理領域,致力于提供高效的電源管理解決方案。公司推出了多種高效的電源管理芯片,這些芯片能夠顯著延長電池壽命并提高設備效率。特別是在移動設備領域,Dialog Semiconductor的電源管理芯片被廣泛應用于智能手機、平板電腦等設備中,為用戶提供了更長的使用時間和更好的使用體驗。
為了進一步增強市場影響力,Dialog Semiconductor通過一系列的收購策略來擴大其業務范圍。例如,在2020年,公司收購了Adesto Technologies,這是一家專注于非易失性存儲器(NVM)解決方案的公司。此次收購為Dialog Semiconductor帶來了近5,000家新客戶,并補充了其在無線連接產品之外的有線連接解決方案。同年,Dialog Semiconductor還收購了另一家公司,獲得了強大的核心IC產品組合和經驗豐富的工程師團隊,進一步鞏固了其在IoT市場的地位。
G24i在發展過程中始終注重國際合作與市場拓展。公司董事長Mr. Edward J Stevenson及其團隊多次訪問國內外知名科研機構和企業,就DSSC技術的研發、產業化等方面進行深入交流。同時,G24i還積極參加國際太陽能展會和論壇,展示其最新的技術成果和產品應用。這些努力不僅提升了G24i在國際市場上的知名度和影響力,也為公司贏得了更多的合作機會和市場份額。通過國際合作與市場拓展,G24i正逐步成為全球DSSC領域的領軍企業之一。
AVR ATMega16 步進電機驅動程序,已經調試通過【轉】 這兩天做步進電機的驅動成功,現將程序共享,愿起到拋磚引玉的作用。 此程序可驅動五引線步進電機,通過按鍵可控制步進電機的轉速、方向、三種驅動方式,三種驅動方式分別為:單四拍驅動、雙四拍驅動、單雙八拍驅動,其中以單雙八拍驅動轉速最慢。 ...… 查看全部問答∨ |
|
上述代碼經過在Quartus II上編譯仿真后其波形如圖2所示。 設計中適當選取K值特別的重要。如果K值偏大,這樣計數器對少量噪聲干擾不可能計滿,就不會有進位或者借位脈沖,有利于抑制隨機噪聲;但就會使捕捉帶減小,導致環路進入鎖定 ...… 查看全部問答∨ |
發送到普通手機上沒問題,發送到SP提供商時軟嗎 int SendSMSForMobile(BOOL bSendConfirmation, BOOL bUseDefaultSMSC, LPCTSTR lpszSMSC, LPCTSTR lpszRecipient, LPCTSTR lpszMessage) { BOOL bRet = FALSE; & ...… 查看全部問答∨ |
各位大神們,剛學arm指令,老師讓編寫一個arm的匯編程序,至少100行代碼,還要有流程圖或者注釋,還要有執行結果,對于新手實在有難度啊。。。哪位大神幫幫忙吧… 查看全部問答∨ |
近日為師弟做的一個數碼管驅動。以前用數碼管不多,沒有仔細考慮使用的通用性及方便,今天整理出一個方法,希望能對新手有點兒幫助! 數碼管顯示函數,在定時器中斷中調用,我用的是毫秒中斷, void Display() 在定時器中斷中調用 ...… 查看全部問答∨ |