c语言定时器中断程序

c语言定时器中断程序

ID:20325303

大小:31.00 KB

页数:4页

时间:2018-10-09

c语言定时器中断程序_第1页
c语言定时器中断程序_第2页
c语言定时器中断程序_第3页
c语言定时器中断程序_第4页
资源描述:

《c语言定时器中断程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C语言的定时器中断程序#include#defineuintunsignedint#defineucharunsignedcharucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};ucharaa,num;voidmain(){aa=0;num=0;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;P2=0xf0;P0=0x3f;while(1){if(aa==10){aa=0;nu

2、m++;if(num==10){num=0;}P2=0xf0;P0=table[num];}}}voidtimer0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa++;}voidtimer0(void)interrupt1using3//中断部分代码,见下文的释疑{ ……………}释疑:voidTimer0()interrupt1using1Timer0  是函数名,随便取的interrupt  xx  using  y跟在interrupt  后面的xx  值得是中断号,就是说这个函数对应第几个中断端口,

3、一般在51中0外部中断0  1  定时器02  外部中断13  定时器14  串行中断实际上编译的时候就是把你这个函数的入口地址方到这个对应中断的跳转地址using  y  这个y是说这个中断函数使用的那个寄存器组,51里面一般有4组  r0  --  r7寄存器,一共有32个,看看原码、补码就知道。正数的补码是对应的二进制数,符号位为零,负数的补码是它的绝对值对应的二进制数按位取反再加一,符号位为一。无符号数不考虑符号,那么这个结果就跟用FFFF减去它的绝对值一样中断的理解。单片机的主程序是从0x0000开始运行的,单片机服务程序从哪里开始运行呢?在51里,有多个中断服务程

4、序入口,0号入口是外中断0,地址在0x0003;1号入口是定时器0,在0x000B;2号入口是外中断1;地址在0x0013,3号入口是定时器2;地址在0x001B,等等。当中断发生时,程序就记下当前运行的位置,跳到对应的中断入口去运行中断服务程序,运行完之后,又跳回到原来的位置继续运行。在C51中,你不用理会中断服务程序放在哪里,会怎么跳转。你只要把某个函数标识为几号中断服务函数就可以了。在发生了对应的中断时,就会自动的运行这个函数。请看一下相关的51的硬件的书,对定时器工作的寄存器设置做进一步的了解。也可以做完试验再了解,因为例程中都已经为您设置好了。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。