52单片机定时器2使用(C语言程序).doc_第1页
52单片机定时器2使用(C语言程序).doc_第2页
52单片机定时器2使用(C语言程序).doc_第3页
52单片机定时器2使用(C语言程序).doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

52单片机定时器2使用(C语言程序)水寒 8051 1,128 views 0 Comments 发表评论 本文是关于52单片机定时器计数器2做为普通的16位自动重装定时器使用,类似于定时器计数器0和定时器计数器1工作在方式1下。以下程序在Keil 2和Keil 3下调时通过,下载在本校的实验板上达到预期效果。AT89C52及其以上、AT89S52及其以上、STC89C52及其以上测试正常运行。源代码:view source print?001/* 002程序功能:52系列单片机定时器计数器2使用 003程序设计:燕山大学 鲁信琼 004晶振选择:24MHz, 如果晶振不匹配,请修改延时函数参数;P26口接数码管段选控制位; P27口接数码管位选控制位; P17口作为测试指示灯 005本实验注意事项: 0061. 定时器2的中断使能为IE6位,也就是ET2; 中断服务程序标号为5。 0072. 定时器2工作在16为自动重装模式下,不需要在中断服务程序中重新赋初值,在程序初始化的时候我们应该给RCAP2L和RCAP2H赋值,TH2和TL2将会在中断产生时自动使TH2=RCAP2H,TL2=RCAP2L。 0083. 定时器2的中断标志位TF2不能够由硬件清零,所以要在中断服务程序中将其清零,为了使定时尽量准确,我们常在终端服务程序中第一步就使TF2=0。 0094. 使定时器2产生中断的有两个中断源,如果EXEN2(定时器2外部使能标志)置1的话,使定时器2进入中断的有可能是定时器2计数溢出,也可能是捕获到T2EX(单片机P11口)有负跳变,所以需要在中断服务程序中判断EXF2是否为1。 010011承接51单片机、PIC单片机程序、VB/VC+上位机程序、电子产品软硬件设计开发工作 012013EMail: xqlu(at) QQ: 9790335 014*/015016#include 017#include 018#define uchar unsigned char 019#define uint unsigned int 020#define LED_DATA P0 021sbit DULA=P26; 022sbit WELA=P27; 023sbit LED=P17; 024uchar timer2_ctr,num; 025uchar code table=0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x40, 0; 026027/24MHz晶振延时x毫秒函数 028void delay_ms(uint xms) 029 030uint x,y; 031for(x=xms; x0; x-) 032for(y=248; y0; y-); 033 034035/初始化主函数 036void init_main() 037 038DULA=0; /关闭数码管显示 039WELA=0; 040041RCAP2H=(0xFFFF-50000)/256; 042RCAP2L=(0xFFFF-50000)%256; /24MHz晶振下定时25ms,自动重装 043TH2=RCAP2H; 044TL2=RCAP2L; /定时器2赋初值 045T2CON=0; /配置定时器2控制寄存器,这里其实不用配置,T2CON上电默认就是0,这里赋值只是为了演示这个寄存器的配置 046T2MOD=0; /配置定时器2工作模式寄存器,这里其实不用配置,T2MOD上电默认就是0,这里赋值只是为了演示这个寄存器的配置 047IE=0xA0; /1010 0000开总中断,开外定时器2中断,可按位操作:EA=1; ET2=1; 048TR2=1; /启动定时器2 049 050051/数码管显示3位数:0-255 052void display(uchar num) 053 054uchar gw,sw,bw; 055bw=num/100; 056sw=num%100/10; 057gw=num%10; 058059LED_DATA=0XFE; /1111 1110 060WELA=1; 061_nop_();_nop_(); 062WELA=0; 063LED_DATA=tablebw; 064DULA=1; 065_nop_();_nop_(); 066DULA=0; 067delay_ms(3); 068069LED_DATA=0XFD; /1111 1101 070WELA=1; 071_nop_();_nop_(); 072WELA=0; 073LED_DATA=tablesw; 074DULA=1; 075_nop_();_nop_(); 076DULA=0; 077delay_ms(3); 078079LED_DATA=0XFB; /1111 1011 080WELA=1; 081_nop_();_nop_(); 082WELA=0; 083LED_DATA=tablegw; 084DULA=1; 085_nop_();_nop_(); 086DULA=0; 087delay_ms(3); 088 089090void main() 091 092init_main(); 093while(1) 094 095display(num); 096 097 098099void timer2() interrupt 5 100 101/!注意! 定时器2必须由软件对溢出标志位清零,硬件不能清零,这里与定时器0和定时器1不同! 102103TF2=0; 104timer2_ctr+; 105106/定时25ms4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论