51单片机定时器中断程序(C语言)

程序:延时1s

方法:1.汇编实现 影响程序运行速度 2.中断 比较快

用C语言实现的,先要定义好定时器的初值

不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期

机器周期=12/n(n指晶振频率),假设你要定时的时间为M

那么定时的初值为:

M/机器周期=初值;

TH0=(65536-初值)%256;

TL0=(65536-初值)/256;

将(65536-初值)所得的值化成16进制,其高位就是TH0的值,低位为TL0的值

例如用12M晶振做1ms定时计算如下:

机器周期=12/12*10^6=1us(微秒)

定时初值=(1*10^-3)/(1*10^-6)=1000;

所以:TH0=(65536-1000)%256;

TL0=(65536-1000)/256;

将65536-1000=64536化为16进制为:0xFC18

TH0=0xFC;

TL0=0X18;

定好初值后要延迟一秒就定一个延时参数,这里使用1000就行了(定时为1ms)中断程序为:

timer0() interrupt 1 // 1ms延时(12.0MHz)

{

TR0=0;

ET0=0;

TH0=0xfc;

TL0=0x18;

if(delayTimes1!=0) delayTimes1--;

TR0=1;

ET0=1;

}

调用程序大致为:

if(delay_flag==0)

{

delay_flag=1;

delayTimes1=1000;

}

if(delayTimes1==0)

{

delay_flag=0;

这里写定时到的操作就行了;

}

(在主程序中使用delay_ms()这样的程序会影响程序运行速度的,使用中断就不会)

定时器初值计算小工具下载http://doc.xuehai.net/soft/cun/2009/2009032018855.html

定时器计数00-59(P0接8为数码管位选端ds1-ds8,P2接8位数码管的段码A-H)

*******************************************************************************************

#include

sbit P0_0=P0^0; //个位数字

sbit P0_1=P0^1; //十位数字

void delay(int k); //Tab为数码管显示值,存入一个数组内

unsigned char ge,shi,num,count;

unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

void main()

{

TMOD=0x1; //T0,工作方式1

TH0=0xb1; //20ms定时

TL0=0xe0;

TR0=1; //开启T0定时器

ET0=1; //允许T0定时器中断

EA=1; //开启总中断允许

P2=Tab[0];P0_0=0;P0_1=0;//显示00

num=0; //被显示的数置0

while(1) //一直调用显示,等待T0中断修改显示数据

{

shi=num/10; //取出十位数

ge=num%10; //取出个位数

P0_0=1;P0_1=1; //关闭显示

P2=Tab[shi]; //P2口送出十位数据显示代码

P0_0=0; //打开十位显示

delay(1000); //延时

P0_0=1; //关闭显示

P2=Tab[ge]; //P2口送出个位数据显示代码

P0_1=0;

单片机定时器程序c语言,单片机定时器程序相关推荐

  1. C语言应用到SSD,SSD1963的样例程序 c语言驱动读写程序.doc

    SSD1963的样例程序 c语言驱动读写程序 /* STC89C54RD+的flash空间从0x4000~0xf3ff 共90个扇区,每扇区512字节*/ //#define BaseAddr0x10 ...

  2. 单片机按键检测程序c语言,单片机检测按键短击,连击c程序

    /****************************************************************************/ //文 件 名:key.c //功 能:短 ...

  3. c语言使用求余方式的转化为二进制程序,C语言第三讲 程序结构 (下).ppt

    <C语言第三讲 程序结构 (下).ppt>由会员分享,可在线阅读,更多相关<C语言第三讲 程序结构 (下).ppt(24页珍藏版)>请在人人文库网上搜索. 1.1,第三讲 程序 ...

  4. 常用c语言小程序,c语言经典小程序汇总大全

    网上有很多的人说编程有多么多么无聊,其实:不要管别人怎么说,别人说什么,做你自己喜欢做的事就好.坚持下来,你会发现编程的乐趣的.当然,如果你觉得学习编程语言很痛苦,坚持了一段时间后无果,南无果断放弃未 ...

  5. c语言的一段程序,C语言第一个程序(入门)

    1.文件类型(基本) c语言源文件  为.c 文件扩展名,例如 main.c    编译后将得到 a.out 文件   运行会得到 我们程序执行的结果 2.hello world (第一个程序) #i ...

  6. c语言有啥简单的小程序,c语言-简单小程序-简单算法

    <c语言-简单小程序-简单算法>由会员分享,可在线阅读,更多相关<c语言-简单小程序-简单算法(19页珍藏版)>请在人人文库网上搜索. 1.以下小程序都在 TC2.0 中运行通 ...

  7. c语言50个小程序,C语言50小程序.doc

    C语言50小程序 一 基础部分: 输入1~10之间的一个数字,输出它对应的英文单词. /* Note:Your choice is C IDE */ #include "stdio.h&qu ...

  8. c语言循环读文件程序,c语言读文件程序报告.docx

    ----------专业最好文档,专业为你服务,急你所急,供你所需-------------文档下载最佳的地方 ----------专业最好文档,专业为你服务,急你所急,供你所需----------- ...

  9. c语言算术程序,(C语言)简单算术程序.ppt

    (C语言)简单算术程序 开始做算术 算术式子C语言如何表示 算术式怎么写 算术运算符:(+ - * / % ++ --) 求一年有多少个星期?余多少天 求平均值 求10,20,30或者a,b,c的平均 ...

  10. c 程序多语言,怎样在程序中利用C支持多国语言

    怎样在程序中利用C支持多国语言 本文以emule为例,探讨一下多国语言支持的实现.选择emule,因为它的多国语言支持实现的相当好,可以支持动态切换.而且最关键,它是开源的,可以直接通过源码来研究它的 ...

最新文章

  1. SSH-publickey
  2. 概率论-3.1 多位随机变量及其联合分布
  3. android byte的使用
  4. python eel 多线程_Python 基础
  5. redis学习笔记——应用场景
  6. 算法63----丑数【动态规划】
  7. 使用正则表达式从字符串中提取email
  8. CSP202009-1 称检测点查询(100分)【数学】
  9. 【强烈推荐】蒋勋细说《红楼梦》
  10. 华三服务器升级文档,H3C交换机升级步骤
  11. dht11传感器c语言程序,树莓派 DHT11 温湿度传感器读取 C 语言版
  12. MySQL 怎么插入10天前的日期_Mysql笔记
  13. uts大学计算机排名,uts是什么大学
  14. spring mongodb内嵌文档查询
  15. win10计算机网络共享打不开,windows10系统打不开WiFi热点如何修复
  16. 两台电脑不在一个城市,如何使这两台电脑构成一个局域网?
  17. MySQL 中 不等于 会过滤掉 Null 的问题
  18. HTML+CSS登录注册界面
  19. 抖音3d照片怎么制作html,抖音制作3D卡通小人怎么制作用什么软件 操作步骤介绍...
  20. 学习pandas库笔记(pd.read_excel)

热门文章

  1. 转录组测序分析项目及方法汇总(更新中)
  2. 舵机的基本了解以及数字舵机和模拟舵机的区别
  3. 镇楼篇--转行初入IT的心路历程
  4. 计算机表格数字怎么,电脑表格数字打不出来
  5. 分享8个免费的超清背景图片下载网站
  6. 免驱 usb有线网卡_2020年末台式机amp;笔记本无线网卡最全选购指南amp;攻略,打造极致WIFI体验!...
  7. winrm java客户端_Ansible for Windows:WinRM HTTPS设置
  8. QQ登录界面测试用例设计:
  9. python 热度图_python可视化(七)绘制詹姆斯、杜兰特、伦纳德生涯数据热度图...
  10. 复旦教授疯狂打车800次,发现大数据杀熟的秘密!附完整调研报告