×
单片机 > 单片机程序设计 > 详情

PWM方波产生51程序

发布时间:2020-05-16 发布时间:
|
 PWMH DATA 30H    ;高电平脉冲的个数

PWM DATA 31H    ;PWM周期
COUNTER DATA 32H
pwmhmin DATA 33H

 ORG 0000H
 AJMP MAIN
 ;ORG 0003H
 ;AJMP INT_X0
 ;ORG 0013H
 ;AJMP INT_X1
 ORG 000BH
 AJMP INT_T0
 ORG 0100H
MAIN: 
 MOV SP,#60H    ;给堆栈指针赋初值
       mov ie,#87h
                 
 MOV PWMH,#02H   ;
 MOV COUNTER,#01H
 MOV PWM,#14H
 MOV TMOD,#02H   ;定时器0在模式2下工作
 MOV TL0,#38H   ;定时器每200us产生一次溢出
 MOV TH0,#38H   ;自动重装的值
 SETB ET0    ;使能定时器0中断
 SETB EA    ;使能总中断
 SETB TR0
 SETB IT0
 SETB IT1
sjmp $

INT_X0:


       MOV A,PWMH
       CJNE A,PWM,INC1
       SJMP EXIT1
       INC1:
      clr TR0
       MOV A,PWMH
          INC A
   MOV PWMH,A
       EXIT1:
      setb TR0
           RETI
INT_X1:

      MOV A,PWMH
      CJNE A,#01h,DEC1
      SJMP EXIT2
    DEC1:
clr TR0
     MOV A,PWMH
        DEC A
  MOV PWMH,A
    EXIT2:
     setb TR0
      RETI
INT_T0:
 
 INC COUNTER    ;计数值加1
 MOV A,COUNTER
 CJNE A,PWMH,INTT01   ;如果等于高电平脉冲数
 CLR P1.0    ;P1.0变为低电平
INTT01: CJNE A,PWM,INTT02   ;如果等于周期数
 MOV COUNTER,#01H   ;计数器复位
 SETB P1.0    ;P1.0为高电平
INTT02: 
 RETI
 
 END



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会