已知单片机时钟频率6MHz,采用定时器/计数器T1控制从P1.0输出高电平10ms,低电平25ms的矩形波信号。

用汇编语言

#include <reg51.h>

sbit out=P1^0;

void InitTimer0(void)//定义1ms的定时器中断
{
TMOD = 0x01;
TH0 = 0x0FE;
TL0 = 0x0C;
EA = 1;
ET0 = 1;
TR0 = 1;
}

void main(void)
{
InitTimer0();//初始化定时器中断
while(1);

}

void Timer0Interrupt(void) interrupt 1
{
static unsigned char cont;

TH0 = 0x0FE;
TL0 = 0x0C;
cont++;
if(cont<=10)//当cont小于或等于10ms时输出1

{

out=1;

}
else

{

out=0;

if(cont==35)//当cont等于35时复位
cont=0;

}
}追问

能不能用汇编语言?

追答

CONT EQU 0AH
OUT EQU P1.0
ORG 0000H
LJMP START
ORG 000BH
LJMP Timer0Interrupt

START:
MOV SP,#60H
LCALL InitTimer0

LOOP:

LJMP LOOP

InitTimer0:
MOV TMOD,#01H
MOV TH0,#0FEH
MOV TL0,#0CH
SETB EA
SETB ET0
SETB TR0
RET

Timer0Interrupt: ;定时器初始化
PUSH DPH
PUSH DPL
PUSH ACC
MOV TH0,#0FEH
MOV TL0,#0CH
INC CONT
MOV A,CONT
SETB C
SUBB A,CONT
JNC SET0
SET1:
SETB OUT
JMP EN
SET0:
CLR OUT
MOV A,CONT
CJNE A,#23H,EN
MOV CONT,#0
EN:
POP ACC
POP DPL
POP DPH
RETI

END

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-17
ORG 00H
JMP MAIN
ORG 1BH
T1_ISR:
DJNZ R7,T1_ISR_2
CPL P1.0
JB P1.0,T1_ISR_1
MOV R7,#50 ;50 * 500us = 25MS
JMP T1_ISR_2
T1_ISR_1:
MOV R7,#20 ;20 * 500us = 10MS
T1_ISR_2:
RETI
MAIN:
MOV SP,#30H
MOV TMOD,#20H ;模式2比较准确
MOV TH1,#250
MOV TL1,#250 ;6M晶振,一个机器周期2us,250 * 2 = 500us中断
SETB P1.0
MOV R7,#20 ;20 * 500us = 10MS
SETB TR1
MOV IE,#88H
JMP $

END
第2个回答  2014-07-17
;正确程序如下:

ORG 0000H
JMP START
ORG 001BH
MOV TH1, #HIGH(65536-10000)
MOV TL1, #LOW(65536-10000)
DJNZ R2, EXIT_T1
CPL P1.0
CPL F0
JB F0, R2_5
MOV R2, #2
JMP EXIT_T1
R2_5:
MOV R2, #5
EXIT_T1:
RETI

START:
MOV TMOD, #10H
MOV TH1, #HIGH(65536-10000)
MOV TL1, #LOW(65536-10000)
SETB TR1
MOV IE, #88H
MOV R2, #2
SJMP $

END

其它答案,都是有错的。
第3个回答  推荐于2016-12-02
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
SETB TR0
SETB ET0
SETB EA
CLR A
SETB P1.0
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
SETB TR0
INC A
CJNE A,#2,T01
T01:
JNC T02
SETB P1.0
RETI
T02:
CJNE A,#7,T03
T03:
JNC T0E
CLR P1.0
RETI
T0E:
CLR A
RETI本回答被提问者和网友采纳