MOV TH0, #3CH CPL P2.0 RETI 2.采用c51语言
定时为50ms,采用方式1,X=216 -50000*(12/12) #include
TMOD = 0x01; P2_0 = 0;
TH0 = (65536 – 500000)/256 ; TL0 = (65536 – 500000)%6 ; EA=1 ; ET0 =1; TR0 =1;
Do{} while (1); }
Void timer0(void) interrupt 1 {
TL0 = (65536 – 500000)%6 ; TH0 = (65536 – 500000)/256 ; P2_0 = !P2_0; }
解: 1.采用汇编语言
定时为100ms,采用方式1,X=216 -100000*(6/12)=3CB0H,当 中断3次时清0,满10次重新置1。 ORG 000BH
LJMP T0_INT MAIN: MOV TMOD, #01H MOV TH0, #3CH MOV TL0, #0B0H MOV R2,#0 SETB ET0 SETB IE SETB TR0 SETB P1.0 SJMP $
T0_INT: MOV TL0, #0B0H MOV TH0, #3CH INC R2
CJNE R2,#3,T0_INT1 CLR P1.0 RETI
T0_INT1:CJNE R2,#10, T0_INT2 SETB P1.0 MOV R2,#0 T0_INT2: RETI
2.采用c51语言
定时为100ms,采用方式1,X=216 -100000*(6/12) #include
TMOD = 0x01; P1_0 = 1;
TH0 = (65536 – 500000)/256 ; TL0 = (65536 – 500000)%6 ; EA=1 ; ET0 =1; TR0 =1;
Do{} while (1); }
Void timer0(void) interrupt 1 {
TL0 = (65536 – 500000)%6 ; TH0 = (65536 – 500000)/256 ; NUM++;
If (NUM ==3) P1_0 = 0; Else if (NUM ==10) {
NUM =0; P1_0 =1; } }
解: 1.采用汇编语言
定时为100ms,采用方式1,X=216 -100000*(6/12)=3CB0H,当 中断10次时清0,满20次重新置1。 ORG 000BH
LJMP T0_INT MAIN: MOV TMOD, #01H MOV TH0, #3CH MOV TL0, #0B0H MOV R2,#0 SETB ET0 SETB IE SETB TR0 SETB P1.7 SJMP $
T0_INT: MOV TL0, #0B0H MOV TH0, #3CH INC R2
CJNE R2,#10,T0_INT1 CLR P1.7 RETI
T0_INT1:CJNE R2,#20, T0_INT2 SETB P1.7 MOV R2,#0 T0_INT2: RETI
2.采用c51语言
定时为100ms,采用方式1,X=216 -100000*(6/12) #include
TMOD = 0x01; P1_7 = 1;
TH0 = (65536 – 500000)/256 ; TL0 = (65536 – 500000)%6 ; EA=1 ; ET0 =1; TR0 =1;
Do{} while (1); }
Void timer0(void) interrupt 1
{
TL0 = (65536 – 500000)%6 ; TH0 = (65536 – 500000)/256 ; NUM++;
If (NUM ==10) P1_7 = 0; Else if (NUM ==20) {
NUM =0; P1_7 =1; } }
解: 1.采用汇编语言
定时为100ms,采用方式1,X=216 -100000*(6/12)=3CB0H,当中断10次时p1.0=0,外部INT0中断时 p1.0=1,启动定时器。 ORG 0000H
LJMP MAIN ORG 0003H
LJMP INT0_INT ORG 000BH
LJMP T0_INT
MAIN: MOV TMOD, #01H MOV TH0, #3CH MOV TL0, #0B0H MOV R2,#0 SETB ET0 SETB IE
SETB EX0 SETB IT0 SETB P1.0 CLR P1.1 SJMP $
T0_INT: MOV TL0, #0B0H MOV TH0, #3CH INC R2
CJNE R2,#10, T0_INT2
SETB P1.0 CLR P1.1 CLR TR0 T0_INT2: RETI
INT0_INT: SETB TR0 MOV R2,#0 CLR P1.0 SETB P1.1 RETI
2.采用c51语言
定时为100ms,采用方式1,X=216 -100000*(6/12) #include
TMOD = 0x01; P1_0 = 1; P1_1 = 0;
TH0 = (65536 – 500000)/256 ; TL0 = (65536 – 500000)%6 ; EA=1 ; ET0 =1; EX0 =1; IT0 =1;
Do{} while (1); }
Void timer0(void) interrupt 1 {
TL0 = (65536 – 500000)%6 ;