#include <reg52.h>
void timer0(unsigned char ms);
void timer1(unsigned char ms);
sbit LED = P1^1;
sbit FM = P1^3;
unsigned char T0RH,T0RL ;
unsigned char T1RH,T1RL ;
void main ()
{
/*中断*/
EA = 1 ; //总中断
timer1(100);
timer0(100);
while(1)
{
}
}
//T0 1.1
void timer0(unsigned char ms)
{
unsigned long tmp ;
ET0 = 1 ;
TMOD &= 0xf0 ;
TMOD |= 0x01 ;
tmp = 11059200/12;
tmp = (65536*ms)/1000;
tmp = 65536-tmp ;
T0RH = tmp/256 ;
T0RL = tmp%256 ;
TH0 = T0RH ;
TL0 = T0RL ;
TR0 = 1 ;
}
//T1 1.3
void timer1(unsigned char ms)
{
unsigned long tmp ;
ET1 = 1 ;
TMOD &= 0x0f ;
TMOD |= 0x10 ;
tmp = 11059200/12;
tmp = (65536*ms)/1000;
tmp = 65536-tmp ;
T1RH = tmp/256 ;
T1RL = tmp%256 ;
TH1 = T1RH ;
TL1 = T1RL ;
TR1 = 1 ;
}
/*T0 1.1 */
void InterruptTimer0() interrupt 1
{
static unsigned char deng ;
TH0 = T0RH ;
TL0 = T0RL ;
deng++;
if(deng>=200)
{
deng = 0 ;
LED = !LED ;
}
}
/*T1 1.3*/
void InterruptTimer1() interrupt 3
{
static unsigned int feng ;
TH1 = T1RH ;
TL1 = T1RL ;
feng++;
if(feng>=200)
{
feng = 0 ;
FM = !FM ;
}
}
为什么这个程序中两个中断同时发生 麻烦大神详解一下 顺便问一下怎么设置两个中断分别运行 谢谢
|