重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
中断大概是这样的。。。如果有点错误不要怪我。。。我以前作过鼠标中断的东西。。现在有些想不起来了。。。所以。。。呵呵呵。。。
红安网站建设公司成都创新互联,红安网站设计制作,有大型网站制作公司丰富经验。已为红安1000+提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的红安做网站的公司定做!
当程序运行到中断条件的时候,会向CPU发信号改变优先级(原先运行的东西会放进哪个特定的地方的,作保存),以发出中断的那段程序作为最高优先,执行完成后再由执行另外的。。。建议你去看看汇编。。。哈哈哈。。。我没学过的。。。
C中实现中断是用了一个函数:geninterrupt(...)
这个“...”是个16进制的数字,是中断号,像鼠标中断号就是0x33
还要用到类似汇编里寄存器模样的变量:如_AX,_BX,_CX,_DX...不同的值功能不同。。。哎呀,我都忘完了。。。建议去查下geninterrupt()的用法就OK了。。。
中断函数是不需要额外通过代码调用的
当中断条件满足,单片机会打断当前执行的语句,跳转到中断函数,然后执行完中断函数后,再次返回之前被打断的语句继续执行
中断函数中,每次都会对定时器重新初始化,即头两句对TH1和TL1的赋值,这样每50ms会再次进入一次中断函数.每20次进入中断,即经过了1秒,然后对全局变量miao自增1
而main函数则是不断对变量miao进行输出
首先你要写中断函数
然后在主程序中像调用子函数一样调用就可以了
举个例子吧
#define uchar unsigned char
#define uchar unsigned char
sbit D1=P1^0;
uchar aa;
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)
{
D1=~D1;
aa=0;
}
}
}
void T0time()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}