MCS51单片机课后作业解答

loading 分享 2026-8-21 下载文档

MOV TH0, #3CH CPL P2.0 RETI 2.采用c51语言

定时为50ms,采用方式1,X=216 -50000*(12/12) #include sbit P2_0 = P2^0; void main(void) {

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 sbit P1_0 = P1^0; uchar NUM =0; void main(void) {

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 sbit P1_7 = P1^7; uchar NUM =0; void main(void) {

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 sbit P1_0 = P1^0; sbit P1_1 = P1^1; uchar NUM =0; void main(void) {

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 ;


MCS51单片机课后作业解答.doc 将本文的Word文档下载到电脑
搜索更多关于: MCS51单片机课后作业解答 的文档
相关推荐
相关阅读