51单片机定时器中断程序

51单片机定时器中断程序,第1张

再次重新启动。

用C语言实现的,先要定义好定时器初值,不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期,机器周期=12/n(n指晶振频率),假设你要定时的时间为M,那么定时的初值为:M/机器周期=初值;

TH0=(65536-初值)%256;

TL0=(65536-初值)/256;

将(65536-初值)所得的值化成16进制,其高位就是TH0的值,低位为TL0的值,例如用12M晶振做1ms定时计算如下:

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

定时初值=(110^-3)/(110^-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延时(120MHz)

试试看:

ORG 0000H

JMP MAIN

ORG 0013H

AJMP INT

JMP MAIN

TAB:

DB 0X01, 0X02, 0X04, 0X08

DB 0X10, 0X20, 0X40, 0X80

MAIN:

SETB EA

SETB EX1

MOV DPTR, #TAB

LOOP:

MOV R1, #8

MOV B, #0

AGAIN:

MOV A, B

MOVC A, @A+DPTR

MOV P1, A

INC B ;下一个状态

CALL DELAY

DJNZ R1, AGAIN

JMP LOOP

DELAY:

MOV R6, #2

LOOP3: MOV R5, #255 ;延迟0。5秒

LOOP2: MOV R4, #255

LOOP1: NOP

NOP

DJNZ R4, LOOP1

DJNZ R5, LOOP2

DJNZ R6, LOOP3

RET

INT:

MOV P2, #0XAA

CALL DELAY

CALL DELAY

CALL DELAY

CALL DELAY

CALL DELAY

MOV P2, #0XFF

MOV A, B ;显示下一个状态

MOVC A, @A+DPTR

MOV P1, A

INC B

RETI

END

按键一头接在外部中断口,一头接地。按一次触发一次。

void main()

{

EA=1; //开总中断开关

EX0=1; //打开外部中断0开关

IT0=1; //触发方式设置

while(1)

{

省略

}

}

void int0 () interrupt 0//外部中断函数

{

led0=0;

delay_ms(1000);//延时1s

led0=1;

}

解释2个if

num2++;//定时器中断一次加一

if(num2==20)//如果num2加了20次了那么

{num2=0;num++;//把num2加的数清0,num进这个if一次加一次

if(num==60)num=0; 如果num2加了20次了那么,把num加的数清0

shi=num/10;//求模

ge=num%10;//求余

}

主程序和中断没关系的,主程序是个死循环,一直执行。中断是打断主程序进入中断子程序,中断完成后继续执行主程序。中断标志要在进入中断后清除,如果不清除,下次不会再触发。主程序继续执行无影响。

TR0是启动定时器,启动以后不要再改写就好每到定时时间进入中断。进入中断后要清除中断使能标志,不是叫你关闭定时器。这两种不是一个概念。定时器控制寄存器里面有一个中断标志A,为1的时候代表进入中断,进入中断后A要清零,之后才会继续查看A是否再次为1,为1即进中断,在中断写零,如此循环进行。

关闭或者重新开启TR0,标志A都是硬件自动重新装载(初始化)0,以使中断执行。所以也能达到效果,但是每次执行都重新设置定时器会比较耗费资源,其实只需要清零标志位就ok了。

以上就是关于51单片机定时器中断程序全部的内容,包括:51单片机定时器中断程序、关于51单片机一个简单的外部中断程序,求教~、51单片机中断系统外部中断设计程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9342618.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存