首先我不懂怎么計算 我是學(xué)生初學(xué)者 用示波器觀察的時候就是看到占空比不斷變化 那個表我是在網(wǎng)上隨便找一個的現(xiàn)在就是要了解原理 懇求各位大俠教教哦 我還是學(xué)生 哦
/*PCA外部中斷*/
iph equ 0b7h
epca_lvd equ ie.6
cl equ 0e9h ;pca低8位
ch equ 0f9h ;pca高8位
ccon equ 0d8h ;pca控制寄存器
/*各模塊中斷標(biāo)志 */
ccf0 bit ccon.0
ccf1 bit ccon.1
ccf2 bit ccon.2
ccf3 bit ccon.3
ccf4 bit ccon.4
ccf5 bit ccon.5
cr bit ccon.6;允許pca計數(shù)必須軟件清0
cf bit ccon.7;pca計數(shù)溢出
cmod equ 0d9h ;pca工作寄存器
/*pca模塊的捕捉高8位 */
ccap0h equ 0fah
ccap1h equ 0fbh
ccap2h equ 0fch
ccap3h equ 0fdh
ccap4h equ 0feh
ccap5h equ 0ffh
/*pca模塊的捕捉低8位 */
ccap0L equ 0Eah
ccap1L equ 0Ebh
ccap2L equ 0Ech
ccap3L equ 0Edh
ccap4L equ 0Eeh
ccap5L equ 0Efh
/*pca模塊pwm寄存器*/
pca_pwm0 equ 0f2h
pca_pwm1 equ 0f3h
pca_pwm2 equ 0f4h
pca_pwm3 equ 0f5h
pca_pwm4 equ 0f6h
pca_pwm5 equ 0f7h
/*pca工作模式寄存器*/
ccapm0 equ 0dah
ccapm1 equ 0dbh
ccapm2 equ 0dch
ccapm3 equ 0ddh
ccapm4 equ 0deh
ccapm5 equ 0dfh
/*定義mcu管腳*/
led_mcu_start equ p1.7
led_5ms_flash equ p1.6
led_1s_flash equ p1.5
/*給計數(shù)器初值18.432mjz*/
channe0_5ms_h equ 1eh
channe0_5ms_l equ 00h; 初值0.05s中斷一次
counter equ 30h ;
org 0000h
ajmp main
org 0033h
ljmp pca_interrupt
org 0100h
main: clr p1.7
mov sp,#7fh
mov counter,#0
lcall pca_init
ajmp $
/*初始化pca定時器*/
pca_init:mov cmod,#10000000b;模式寄存器分配
mov ccon,#00h;控制寄存器分配CF CR CCF3~CCF0
mov cl ,#00h ;清pca計數(shù)器
mov ch ,#00h
mov ccap1L,#channe0_5ms_l
mov ccap1h,#channe0_5ms_h ;給初值
mov ccapm1,#49h;設(shè)置pca0為16位軟定時器
mov pca_pwm0,#00h
mov a,#00h
mov ccap0h,a
mov ccap0L,a
mov ccapm0,#42h ;p3.7
setb epca_lvd ;開pca中斷標(biāo)志位
setb ea
setb cr
ret
pca_interrupt:
push acc
push psw
/*5ms中斷一次*/
mov a,#channe0_5ms_L
add a,ccap1L
mov ccap1l,a
mov a,#channe0_5ms_h
add a,ccap1h
mov ccap1h,a ;增加計數(shù)給ccap0h/L
clr ccf1 ;清標(biāo)志位
CPL P1.6
mov cl ,#00h ;清pca計數(shù)器
mov ch ,#00h
inc counter
mov a,counter
cjne a,#188,siyuan
mov counter,#0
siyuan: MOV DPTR, #table ;查表
MOVC A ,@A+DPTR ;數(shù)組送給a
mov ccap0h,a
mov ccap0L,a
mov ccapm0,#42h ;p3.7 /*200*5ms=1000ms=1s*/
pca_exti:
pop psw
pop acc
reti
table:DB 80H,83H,86H,89H,8DH,90H,93H,96H
DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH
DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H
DB 0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8H
DB 0DAH,0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9H
DB 0EAH,0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5H
DB 0F6H,0F7H,0F8H,0F9H,0FAH, 0FBH,0FCH,0FDH
DB 0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FEH,0FDH
DB 0FDH,0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6H
DB 0F5H,0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAH
DB 0E9H,0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAH
DB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7H
DB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1H
DB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99H
DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80H
DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H
DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H
DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH
DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H
DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H
DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH
DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H
DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H
DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H
DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H
DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H
DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H
DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH
DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H
DB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80H
end