?? spwm.asm
字號(hào):
;本程序通過測(cè)試.
;采用PWM技術(shù)形成50HZ波形.在
;每半周波形上建立128個(gè)采樣點(diǎn),
;每個(gè)采樣點(diǎn)產(chǎn)生一個(gè)脈沖.每
;個(gè)脈沖寬度可變范圍分為128級(jí).
;數(shù)值變化范圍:00H-0fEH.
;采用STC12C2052AD芯片
;模塊0輸出時(shí)標(biāo)(P3.7)
;模塊1輸出PWM(P3.5)
;P0.0、P0.1控制脈沖輸出流向
;---------------------------------------------------------
;定義寄存器
ccon equ 0d8h
cmod equ 0d9h
ccapm0 equ 0dah
ccapm1 equ 0dbh
cl equ 0e9h
ccap0l equ 0eah
ccap1l equ 0ebh
ch equ 0f9h
pca_pwm0 equ 0f2h
pca_pwm1 equ 0f3h
ccap0h equ 0fah
ccap1h equ 0fbh
ccf0 equ 0d8h
ccf1 equ 0d9h
ea equ 0afh
cr equ 0deh
cf equ 0dfh
CPU 8031
ORG 0H
AJMP maim
;------------------------------------------------
org 30h
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ORG 202H
;初始化
;調(diào)用延時(shí)
;設(shè)堆棧指針
maim:
ACALL delay
mov sp,#0e0h
;------------------------------------------------
;PCA在空閑模式下停止PCA計(jì)數(shù)器工作
;PCA時(shí)鐘模式為fosc/2
;開放PCA計(jì)數(shù)器溢出標(biāo)志
;禁止PCA計(jì)數(shù)器工作,清除中斷標(biāo)志、計(jì)數(shù)器益出標(biāo)志
;清零計(jì)數(shù)器
mov cmod,#88h
mov ccon,#00h
mov cl,#00h
mov ch,#00h
;-----------------------------------------------
;設(shè)置模塊計(jì)數(shù)長(zhǎng)度為8位
mov pca_pwm0,#00h
mov pca_pwm1,#00h
;-----------------------------------------------
setb p3.4
setb 00h;標(biāo)志位為1
mov p1,#01h
mov ccapm0,#42h
mov ccapm1,#42h
setb ie.6;開PCA中斷(IE.6)
setb ea;開總中斷
setb cr;允許計(jì)數(shù)
;-----------------------------------------------
;查表,輸出PWM正弦脈沖
sin1:
mov r5,#80h
sin2:
jnb p3.4,$;判溢出標(biāo)志
setb p3.3
mov a,r5
mov dptr,#ctab
movc a,@a+dptr
mov ccap0h,#0f0h
mov ccap1h,a
ACALL delay
clr p3.3
djnz r5,sin2
cpl 00h
jb 00h,sin3
mov p1,#02h
ajmp sin1
sin3:
mov p1,#01h
ajmp sin1
;--------------------------------------------------------
ctab:DB 00H,0FFH,0F9H,0F3H,0EDH,0E5H,0DFH,0D9H,0D3H
DB 0CDH,0C7H,0C1H,0BBH,0B5H,0AFH,0A9H,0A3H
DB 9DH,97H,91H,8BH,87H,81H,7BH,75H
DB 71H,6BH,67H,61H,5FH,57H,53H,4FH
DB 4BH,45H,41H,3DH,39H,35H,31H,2DH
DB 2BH,27H,23H,21H,1DH,1BH,17H,15H
DB 13H,11H,0FH,0DH,0BH,09H,07H,05H
DB 05H,03H,01H,01H,01H,01H,01H,01H
DB 01H,01H,01H,01H,01H,01H,03H,05H
DB 05H,07H,09H,0BH,0DH,0FH,11H,13H
DB 15H,17H,1BH,1DH,21H,23H,27H,2BH
DB 2DH,31H,35H,39H,3DH,41H,45H,4BH
DB 4FH,53H,57H,5FH,61H,67H,6BH,71H
DB 75H,7BH,81H,87H,8BH,91H,97H,9DH
DB 0A3H,0A9H,0AFH,0B5H,0BBH,0C1H,0C7H,0CDH
DB 0D3H,0D9H,0DFH,0E5H,0EDH,0F3H,0F9H,0FFH
;延時(shí)
delay:
mov r1,#10h
delay_loop:
nop
nop
nop
djnz r1,delay_loop
ret
;--------------------------------------------------------
;陷阱
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
ljmp maim
end
jb p3.4,$
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -