15系列定时器2与串口

更新时间:2024-03-14 07:30:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

15系列定时器2与串口

1,寄存器

AUXR:辅助寄存器 name address bit B7 B6 B5 B4 B3 B2 B1 B0 AUXR 8EH TOX12 T1X1USART2R T2_CT2X1EXTRSIST2 2 T_M0/T 2 AM X16 复位默认值00000001B; T0X12,T1X12,T2X12:定时器速度控制位

0,定时器是传统8051的速度,12分频,为12T; 1,定时器为传统8051的12倍,及1T; UART_MOX6:串口1模式0的通信速度设置 0,12分频; 1,2分频; T2R:定时器2控制位 0,关; 1,开;

T2_C/T:控制定时器2作定时器或计数器 0,定时器; 1,计数器;

EXTRAM:内外部RAM存取控制位 SIST2:串口1波特率发生器控制位

0,定时器1; 1,定时器2;

注意:这个寄存器在reg52.h的头文件里没有,需要自己定义sfr AUXR=0x8e;

IE2:中断允许寄存器 name address bit B7 B6 B5 B4 B3 B2 B1 B0 IE2 AFH -- ET4 ET3 ES4 ES3 ET2 ESRI ES2 复位值:x0000000B; 都是定时器2,3,4的饿中断控制为和串口中断控制位;

注意:这个寄存器在reg52.h的头文件里没有,需要自己定义sfr IE2=0xAF;

IE:中断允许寄存器 Name Address Bit B7 B6 B5 B4 B3 B2 B1 B0 IE A8H EA ELVD EADC ES ET1 EX1 ET0 EX0 注意:B5的定义与reg52.h头文件定义有出入其实并不是ET2; 定义定时器1的串口中断必须在ET2中定义;

串行口控制寄存器 SCON (98H)

D7 D6 D5 D4 D3 D2 D1 D0 SM0 SM1 SM2 REN TB8 TR8 TI RI 定时器2的高八位低八位寄存器的地址为0xd6,0xd7,与头文件中定义的有所出入,但不影响结果。 void Timer2 (void) {

//AUXR &= 0xFB; //定时器时钟12T模式 //默认值就行,为普通单片 //机速度,可以不用定义 TH2 = 0x3C;//@12M 50ms 16bit 自动重载 TL2 = 0xB0; AUXR |= 0x10; //定时器2开始计时 IE2|=0X04; EA=1; //TR2=1; //TF2=0; // 15系列没有这一位; }

void Timer2_ISR (void) interrupt 12 //中断号为12 { count++; if (count==10) { count=0; temp=~temp; led1=temp; P0|=0xfe; LED_Latch(); } } 串口

void Usart_Init (void) { AUXR &= 0xFE; // 启动定时器1为波特率产生器 TMOD = 0x20; //定时器1为模式2(8位自动重载) SCON = 0x50;

TL1 = 0XE6; //设置波特率重装值 TH1 =0XE6;

TR1 = 1; //定时器1开始工作 ES = 1; //使能串口中断 EA = 1;

}

RI=0; TI=0;

void Usart1 (void) interrupt 4 //无论是定时器1还是定时器2都是4 {

uchar oder[]=\ static uchar i=0; if (RI==1) { // LED_CRL (0xf0); RI=0; if (oder[i]==SBUF) i++; else i=0; if (i==5) { i=0; ULN2003_CRL (0,0,1); LED_CRL (0xf0); } } }

波特率的计算

串口1用定时器1工作在模式0时,及M1=0,M0=0, 波特率=(sysclk/(65536—(TH1,TL1)))/4及波特率=溢出率/4;用定时器2也是如此; 溢出率与12T和1T的关系

为12T时溢出率=sysclk/12/(65536—(TH1,TL1));进行12分频 为1T时溢出率=sysclk/(65536—(TH1,TL1));

但通常不会用到模式0,大多数时候会用到模式1; 模式1

在模式1时波特率=(2^SMOD/32)*溢出率; 溢出率的计算

为12T时,溢出率=sysclk/12/(256-TL1); 为1T时,溢出率=sysclk/(256-TL1);

模式2模式3用的不多。

本文来源:https://www.bwwdw.com/article/egq8.html

Top