设系统时钟频率为12mhz,用汇编语言编程实现从p1.1输出频率为1000hz,占空比为40%的

WM方波。
2024年12月01日 18:32
有2个网友回答
网友(1):

ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
    MOV TMOD,#02H
    MOV TH0,#156
    MOV TL0,#156
    SETB TR0
    SETB ET0
    SETB EA
    CLR A
    SJMP $
T0ISR:
    INC A
    CJNE A,#4,T01
T01:
    JNC T02
    SETB P1.1
    RETI
T02:
    CLR P1.1
    CJNE A,#10,T03
    CLR A
T03:
    RETI
    END

网友(2):

COUNT_INT EQU 30H
    ORG 0000H
    LJMP START
    ORG 000BH
    LJMP Timer0Interrupt

START:
    MOV SP,#60H
    LCALL InitTimer0
    SETB P1.1;拉高
LOOP:
    
    LJMP LOOP

InitTimer0:
    MOV TMOD,#02H;t0方式2 定时200us@12MHz
    MOV TH0,#00H
    MOV TL0,#38H
    SETB EA
    SETB ET0
    SETB TR0
    RET

Timer0Interrupt:
    PUSH DPH
    PUSH DPL
    PUSH ACC
    MOV TH0,#00H
    MOV TL0,#38H
    ;========================
    INC COUNT_INT ;200US加1
    MOV A,COUNT_INT
    CJNE A,#2,Timer0Interrupt2     
    CLR P1.1;开始拉低
    AJMP Timer0Interrupt_EXIT     
Timer0Interrupt2:
    CJNE A,#5,Timer0Interrupt_EXIT                
    MOV COUNT_INT,#0     
    SETB P1.1;开始拉高
    AJMP Timer0Interrupt_EXIT                
Timer0Interrupt_EXIT:     
    ;========================
    POP ACC
    POP DPL
    POP DPH
    RETI

END