/*T/C0工作在定时器方式1,T/C1工作在计数器方式2 将P1.7口与定时/计数器1外部脉冲输入端(P3.5)相连 fosc=12Mhz T/C0工作在定时器方式1,定时50ms,定时时间到后P1.7反相, 即P1.7端输出周期为100ms的方波 T/C1工作在计数器方式2,对T1输入的脉冲计数,当计数满10次时, 定时1S时间到,将P1.0端反相,改变灯的状态*/ #include sbit P1_0=P1^0; sbit P1_7=P1^7; timer0() interrupt 1 using 1 { //T/C0中断服务程序 P1_7=!P1_7; //50ms到,P1.7反相 TH0=(65536-50000)/256; //计数初值重装载 TL0=(65536-50000)%256; } timer1() interrupt 3 using 2 { //T/C1中断服务程序 P1_0=!P1_0; //1s到,灯改变状态 } main() { P1_0=0; //置灯初始灭 P1_7=1; //保证第一次反相便开始计数 TMOD=0x61; //T/C0方式1定时,T/C1方式2计数 TH0=(65536-50000)/256; //预置计数初值 TL0=(65536-50000)%256; TH1=256-10; TL1=256-10; IP=0x08; //置优先级寄存器 EA=1; //开总中断 ET0=1; //开T/C0中断 ET1=1; //开T/C1中断 TR0=1; //启动T/C0 TR1=1; //启动T/C1 for (;;) { } }