當前位置:編程學習大全網 - 編程語言 - 求單片機用定時器產生PWM的匯編語言,單片機型號STC90C516RD+,謝謝~

求單片機用定時器產生PWM的匯編語言,單片機型號STC90C516RD+,謝謝~

; 這是壹個 可以輸出 三路 不同占空比的 程序

PWMH1 DATA 30H ;高電平脈沖的個數

PWMH2 DATA 31H

PWMH3 DATA 32H

PWM DATA 33H ;PWM周期

COUNTER DATA 35H

TEMP DATA 36H

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP INTT0

ORG 0100H

MAIN:

MOV SP,#60H ;給堆棧指針賦初值

MOV TMOD,#02H ;定時器0在模式2下工作

MOV TL0,#38H ;定時器每200us產生壹次溢出

MOV TH0,#38H ;自動重裝的值

SETB ET0 ;使能定時器0中斷

SETB EA ;使能總中斷

SETB TR0 ;開始計時

MOV PWMH1,#2 ; PWM 1 占空比 可以修改

MOV PWMH2,#5 ; PWM 2 占空比 可以修改

MOV PWMH3,#8 ; PWM 3 占空比 可以修改

MOV COUNTER,#0

MOV PWM,#16 ; 占空比 為 16 級 可以修改

JMP $

INTT0: ; 幾個參數需要 定義 三路 PWM 占空比 可以不同

PUSH PSW ; 現場保護

PUSH ACC

INC COUNTER ; 計數值加1

MOV A,COUNTER

CJNE A,PWMH1,INTT01 ; 如果等於高電平脈沖數

CLR P1.0 ; P1.0變為低電平 PWM1

INTT01:

CJNE A,PWMH2,INTT02 ; 如果等於高電平脈沖數

CLR P1.1 ; P1.1變為低電平 PWM2

INTT02:

CJNE A,PWMH3,INTT03 ; 如果等於高電平脈沖數

CLR P1.2 ; P1.2變為低電平 PWM3

INTT03:

CJNE A,PWM,INTT05 ;如果等於周期數

MOV COUNTER,#0 ;計數器復位

SETB P1.0 ;P1.0為高電平

SETB P1.1 ;P1.1為高電平

SETB P1.2 ;P1.2為高電平

INTT05:

POP ACC ;出棧

POP PSW

RETI

END

  • 上一篇:程序的讀音程序的讀音是什麽
  • 下一篇:C語言和JAVA有什麽***同點?
  • copyright 2024編程學習大全網