|
#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 ;
}
}
為什么這個程序中兩個中斷同時發(fā)生 麻煩大神詳解一下 順便問一下怎么設(shè)置兩個中斷分別運行 謝謝
|
|