C51单片机 的定时器学习笔记
2014-02-18 17:35
281 查看
/*-------------------------------------------------------*/
/* -------------author: robinson_911 -------------------------*/ /* -------------date:2014年2月 -------------------------*/ /* -------------content:关于串口 定时器程序 -----------*/ // 在22.1184MHZ下,通过定时器0,每1s通过串口发送数据 /*-------------------------------------------------------*/ //#include "reg52.h" #include "STC_NEW_8051.H" typedef unsigned char u8; typedef unsigned int u16; typedef unsigned long u32; /************* 本地变量声明 **************/ u16 JumpAddress,a=0; u8 xdata RxBuffer[64]; u8 ReCount=0, i; u8 RxCounter=0; /************* 本地哈函数声明 **************/ void push_pull(); void Serial_Initinal(); void sendchar(u8 p); void sendstring(u8 *p); void dmsec (u16 count); void delay_1ms(u16 count); void Timer0Init(void); void Timer1Init(void); void init() ; void main() { push_pull(); Serial_Initinal(); Timer0Init(); while(1) { i++; } } void receive(void) interrupt 4 { if(RI) { RI=0; RxBuffer[RxCounter++]=SBUF; } } void Timer0(void) interrupt 1 { TL0 = 0x9A; //设置定时初值 TH0 = 0xA9; //设置定时初值 a++; if(a==1000) { a=0; sendstring("delay 1s "); } } /*发送一字节数据/*/ void sendchar(u8 ch) { SBUF=ch; while(!TI);// TI=0; } void sendstring(u8 *p) { while(*p) { sendchar(*p++); } } /*实现功能:进行毫秒延时*/ void dmsec (u16 count) { u16 i; while (count) { i =230; while (i>0) i--; count--; } } /***1T 下大概的ms精确按时****/ void delay_1ms(u16 count) { u16 i,j; for(i=0;i<8*count;i++) { for(j=0;j<225;j++){;} } } void push_pull() { P0M1=0X00; //STC12C5A60s2,端口改为强推挽 P0M0=0XFF; P1M1=0X00; P1M0=0XFF; P2M1=0X00; P2M0=0XFF; P3M1=0X00; P3M0=0XFF; P4M1=0X00; P4M0=0XFF; } //定时器1作为波特率发生器用 void Serial_Initinal() { //波特率设置 SCON = 0x5a; //8 bit data ,no parity bit TMOD = 0x21; //设置定时器1为工作方式2 TH1 = TL1 = 0xfa; //波特率9600 TR1 = 1; //T1 start running EA=1; ES=1; } void Timer0Init(void) //1毫秒@22.1184MHz { AUXR |= 0x80; //定时器时钟1T模式 TL0 = 0x9A; //设置定时初值 TH0 = 0xA9; //设置定时初值 ET0=1; TR0 = 1; //定时器0开始计时 }
波特率和定时时间值计算,可以通过STC_ISP计算得出
相关文章推荐
- Javascript学习笔记-定时器
- (笔记)Linux内核学习(八)之定时器和时间管理
- STM32 通用定时器的定时功能 学习笔记
- linux学习笔记-定时器的设计与实现(shell)
- node.js学习笔记之定时器的第三个参数
- 《嵌入式linux应用程序开发完全手册》系统时钟和定时器学习笔记系统时钟和定时器
- 西门子PLC学习笔记八-(定时器)
- Cocos2d-x 3.2 学习笔记(十六)保卫萝卜 游戏主循环与定时器
- STM32学习笔记之定时器的配置
- TCP/IP详解--学习笔记(13)-TCP坚持定时器,TCP保活定时器
- (转)【D3D11游戏编程】学习笔记六:定时器的实现
- MFC 线程学习笔记之定时器
- JMeter学习笔记--详解JMeter定时器
- Linux内核学习笔记八——定时器和时间管理
- skynet 学习笔记 - 定时器
- Linux内核学习笔记八——定时器和时间管理
- cocos2dx学习笔记之回调函数:定时器schedule,普通回调callfunc,菜单回调menu_selector
- linux高精度定时器学习笔记
- STM32学习笔记6-定时器中断
- Linux驱动学习笔记之一——高精度定时器(1)