資源簡介
本文是關(guān)于52單片機(jī)定時器計數(shù)器2做為串行口波特率發(fā)生器使用的例子,類似于定時器1作為波特率發(fā)生器工作在模式1下,但是不同的是:定時器2作為波特率發(fā)生器是16位自動重裝的,位數(shù)比定時器1作為波特率發(fā)生器要高(定時器1作為串口波特率發(fā)生器是8位自動重裝的),所以可以支持更高的傳輸速度,性能也比定時器1要好。程序在Keil 2和Keil 3下調(diào)試通過,下載在實驗板上達(dá)到預(yù)期效果。AT89C52及其以上、AT89S52及其以上、STC89C52及其以上測試正常運行。

代碼片段和文件信息
/*
程序功能:52系列單片機(jī)定時器計數(shù)器2作為串行口波特率發(fā)生器使用??
程序設(shè)計:燕山大學(xué)?魯信瓊??
晶振選擇:24MHz?如果晶振不匹配,請修改延時函數(shù)參數(shù);P2^6口接數(shù)碼管段選控制位;?P2^7口接數(shù)碼管位選控制位;
本實驗注意事項:??
1.?定時器2作為波特率發(fā)生器是16位自動重裝,而定時器1作為波特率發(fā)生器是8位自動重裝,定時器2使用RCAP2H去重裝TH2,用RCAP2L去重裝TL2;定時器1是使用TH2去重裝TL2。
2.?定時器2作為波特率發(fā)生器,工作在模式1和模式3,波特率=振蕩期頻率/[32×(0xFFFF-)]?指RCAP2H作為高8位、RCAP2L作為低8位構(gòu)成的16位無符號整數(shù)。
承接51單片機(jī)、PIC單片機(jī)程序、VB/VC++上位機(jī)程序、電子產(chǎn)品軟硬件設(shè)計開發(fā)工作??
EMail:?xqlu@ysu.net.cn??QQ:?9790335?
*/
#include?
#define?uchar?unsigned?char
#define?uint?unsigned?int
sbit?DULA=P2^6;
sbit?WELA=P2^7;
uchar?str[]=“Yanshan?university!“;
uchar?i;
//24MHz晶振下延時x毫秒函數(shù)
void?delay_ms(uint?xms)
{
uint?xy;
for(x=xms;?x>0;?x--)
for(y=248;?y>0;?y--);
}
//?主函數(shù)初始化24MHz晶振?28800bps波特率,有誤差,建議大家使用11.0592MHz或者22.1184MHz
//?使用11.0592MHz時使用9600bps無誤差;?22.1184MHz使用19200、14400、28800bps無誤差,參數(shù)請大家按照上面的公式自己算。
void?main_init()
{
DULA=0;
WELA=0;
delay_ms(1);
SCON=0x50; //SM0?SM1?SM2?REN?TB8?RB8?TI?RI
RCAP2H=(65536-26)/256;
RCAP2L=(65536-26)%256;
TH2=RCAP2H;
TL2=RCAP2L;
T2CON=0x34; //TF2?EXF2?RCLK?TCLK?EXEN2?TR2?C/T2?CP/RL2?
delay_ms(1);
}
void?main()
{
main_init();
i=0;
while(str[i]!=‘\0‘)
{
TI=0;
SBUF=str[i];
while(!TI);
TI=0;
i++;
}
while(1);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2010-09-05?00:50??T2_COM_CLK\
?????文件????????1577??2010-09-05?00:49??T2_COM_CLK\main.c
?????文件????????3994??2010-09-05?00:38??T2_COM_CLK\main.LST
?????文件????????4522??2010-09-05?00:38??T2_COM_CLK\main.OBJ
?????文件????????4430??2010-09-05?00:38??T2_COM_CLK\T2_COM_CLK
?????文件?????????812??2010-09-05?00:38??T2_COM_CLK\T2_COM_CLK.hex
?????文件??????????46??2010-09-05?00:38??T2_COM_CLK\T2_COM_CLK.lnp
?????文件????????4392??2010-09-05?00:38??T2_COM_CLK\T2_COM_CLK.M51
?????文件?????????960??2010-09-05?00:50??T2_COM_CLK\T2_COM_CLK.Opt
?????文件?????????188??2010-09-05?00:50??T2_COM_CLK\T2_COM_CLK.plg
?????文件????????2107??2010-09-05?00:49??T2_COM_CLK\T2_COM_CLK.uv2
?????文件?????????832??2010-09-05?00:49??T2_COM_CLK\T2_COM_CLK_Opt.Bak
- 上一篇:C++仿QQ界面
- 下一篇:VC 6.0快速修改工程名工具
評論
共有 條評論