但不知,你这提问是想帮你写程序昵,还是帮你分析中断程序的写法。
哥实在不知道你说的是什么意思。我就按我想的写吧
好久都没有写51了,原谅里面的一些小错误,你自己再动动脑就行了!希望能帮到你,以后互相交流
#include<reg52.h>
void init()
{
TMOD=0x01
TH0=(65536-50000)/256
TL0=(65536-50000)%256
EA=1
ET0=1
TR0=1
}
void main()
{
Init()
while(1)
{
if(aa==20)//当延时一秒时,进入程序
{
P1^1=1 //自己随便接个灯,灯亮
aa=0 //清0
TR0=1 //重新打开定时器
}
}
}
void timer0() interrupt 1//这是中断程序,延时50毫秒,
{
TH0=(65536-50000)/256
TL0=(65536-50000)%256
aa++
}
当然要算上执行过的指令消耗的指令周期都要考虑的,包括int也应该算上
不过如果循环的次数很多的话,由于int和reti只执行一次,这样相对于循环过程的话,这两条指令消耗的指令周期就可以忽略不计了(如果把1000000加上1的话,其实根本没有什么变化)但如果是短时间的延时的话,还是应该考虑的(1加上1的话,变化是很大的,是原来的2倍!)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)