首页 > 编程知识 正文

c语言定时器怎么设置时间,嵌入式定时器中断实验报告

时间:2023-05-06 10:10:07 阅读:112213 作者:2123

c语言的计时器中断程序

#包含

#定义uint unsigned int

#define uchar unsigned char

uchar代码表[ ]=

{0x3f,0x 06,0x5b,0x4f,0x66,

0x6d、0x7d、0x 07、0x7d、0x6f};

uchar aa、num;

Void主() )

{

a=0;

num=0;

TMOD=0x01;

th0=(65536-50000 )/256;

TL0=(65536-50000 ) 6;

EA=1;

ET0=1;

TR0=1;

P2=0xf0;

P0=0x3f;

while(1)。

{

if(aa==10 ) ) )。

{

a=0;

num;

if(num==10 ) )。

{

num=0;

}

P2=0xf0;

P0=table[num];

}

}

}

void timer0(中断1 )

{

th0=(65536-50000 )/256;

TL0=(65536-50000 ) 6;

aa;

}

有关voidtimer0(void ) interrupt 1 using 3 //中断代码的部分,请参考以下说明。.

(注释) void timer0(interrupt1using1timer 0? 用函数名,随便取的interrupt? xx? 使用? y在interrupt上吗? 后面的xx? 值得中断号意味着此函数对应于第几个中断端口,通常为51,外部中断为0? 1? 计时器0 2? 外部中断1 3? 计时器1 4? 是否要在实际编译串行中断时将您的此函数的入口地址端设置为与此中断对应的跳转地址using? y? 该y是该中断函数使用的寄存器集,51通常有4集吗? r0? -? r7寄存器共有32个。 看看原始代码,补码就知道了。 正数的补数是对应的二进制数,已编码比特为零,负数的补数是对应于其绝对值的二进制数,每个比特反转后加上一个,以及已编码比特为1。 可以理解为,无符号数如果不考虑符号,该结果将中断,就像用FFFF减去其绝对值一样。 单片机主程序从0x0000开始运行,单片机服务程序从哪里运行? 51有多个中断服务程序的入口。 0号入口是外部中断0,地址是0x0003。 1号入口是计时器0,在0x000B处; 2号入口为集中暴发1; 地址是0 x 0013,3,3号入口是计时器2; 地址是0x001B,等等。 发生中断时,程序会记录当前运行的位置,跳转到对应的中断条目运行中断服务程序,运行完成后,跳转到原来的位置继续运行。 在C51中,你不需要关心中断服务程序放在哪里,如何跳。 我应该把某个函数识别为几号中断服务函数。 如果发生相应的中断,此函数将自动运行。 请查看相关的51部硬件书,详细了解定时器动作的寄存器设定。 也可以在完成实验后再理解。 因为例行程序已经设置好了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。