
用單片機(jī)控制的12V鎮(zhèn)流器,源碼公開
采用HT MCU控制的PL13W鎮(zhèn)流器,源碼稍后公開.

全部回復(fù)(13)
正序查看
倒序查看
@miky1188
工作原理:上電復(fù)位---預(yù)熱---22KHz工作.MCUPIN11(PB5)為控制信號輸入腳,低電平有效;可接CDS光敏電阻或其它設(shè)備的輸出信號達(dá)到自動(dòng)控制的目的.
INCLUDE HT48RA0A.INC
DATA .SECTION AT 20H 'DATA'
;------------------------------------------------
counter0 db ?
counter1 db ?
keycount db ?
keystatus db ?
;------------------------------------------------
CODE .SECTION
ORG 00H
Jmp initial
;------------------------------------------------
ORG 010H
Initial: ;淸除所有的資料記憶體從20H至3FH
mov A,20H
mov MP,A
jmp clramloop
clramloop:
clr R0
inc MP
mov A,0BFH
sub A,MP
sz STATUS.0
jmp clramloop ;MP0<3FH 跳轉(zhuǎn)至clramloop
;------------------------------------------------
;------------------------------------------------
; -- 主程式 --
;------------------------------------------------
initial_mode:
clr keycount
mov A,00000011B ;設(shè)置PA0 和PA1 輸出為″1″
mov PA,A
mov A,00000000B ;
mov PC,A
;------------------------------------------------
mov A,0E0H;
mov counter1,A ;100×256×32=第一次點(diǎn)火時(shí)間
;(4MHz=E0H=0.8 秒)
;................................................
;................................................
sign_test:
sz keystatus.0 ;檢測PB5引腳準(zhǔn)位
jmp ignite ;如果PB5準(zhǔn)位爲(wèi)低,點(diǎn)亮燈管
call delay_46
call delay_46
sz PB5
jmp clr_sign
inc keycount
mov A,0FAH
sub A,keycount
sz status.0
jmp sign_test
set keystatus.0 ;
jmp sign_test
clr_sign:
clr keycount
mov A,00000011B ;設(shè)置PA0 和PA1 輸出為″1″
jmp sign_test
;................................................
ignite:
clr keycount
call ignite_sub ;點(diǎn)火模式:第一次子程式
;
mov A,0FCH ;4MHz=FCH=0.1秒
mov counter1,A ;110×256×4=第二次點(diǎn)火時(shí)間
ignite_se: ;點(diǎn)火模式:第二次
mov A,00000001b
clr pa
mov PA,A
call delay_46
nop
nop
nop
nop
;..
mov A,00000010b
clr pa
mov PA,A
call delay_46
nop
siz counter0
jmp ignite_se
siz counter1
jmp ignite_se
;................................................
run_mode: ;運(yùn)作模式:固定頻率在22kHz
mov A,00000001b
clr pa
mov PA,A
call delay_run
snz keystatus.0 ;
jmp initial_mode ;PB5爲(wèi)高準(zhǔn)位,熄滅燈管
;.......
mov A,00000010b
clr pa
mov PA,A
call delay_run
jmp run_mode
;--------------------------------------------------
; -- 子程式 --
;--------------------------------------------------
;delay_run:
clr wdt
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
ret
;
delay_run:
clr wdt
snz PB5 ;檢測PB5引腳準(zhǔn)位
jmp delay_run1 ;如果PB5準(zhǔn)位爲(wèi)高,熄滅燈管
inc keycount
mov A,0FAH
sub A,keycount
sz status.0
jmp delay_run2
clr keystatus.0
jmp delay_run3
delay_run1:
nop
jmp $+1
jmp $+1
delay_run2:
jmp $+1
delay_run3:
jmp $+1
ret
delay_46:
clr wdt
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
nop
ret
;--------------------------------------------------
; -- 子程式 --
;--------------------------------------------------
ignite_sub:
mov A,00000001b
mov PA,A
;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;
mov A,00000010b
mov PA,A
;.......
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;.......
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;.....
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;.....
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
clr wdt
siz counter0
jmp ignite_sub
siz counter1
jmp ignite_sub
clr pa
;..................................
ret
end
DATA .SECTION AT 20H 'DATA'
;------------------------------------------------
counter0 db ?
counter1 db ?
keycount db ?
keystatus db ?
;------------------------------------------------
CODE .SECTION
ORG 00H
Jmp initial
;------------------------------------------------
ORG 010H
Initial: ;淸除所有的資料記憶體從20H至3FH
mov A,20H
mov MP,A
jmp clramloop
clramloop:
clr R0
inc MP
mov A,0BFH
sub A,MP
sz STATUS.0
jmp clramloop ;MP0<3FH 跳轉(zhuǎn)至clramloop
;------------------------------------------------
;------------------------------------------------
; -- 主程式 --
;------------------------------------------------
initial_mode:
clr keycount
mov A,00000011B ;設(shè)置PA0 和PA1 輸出為″1″
mov PA,A
mov A,00000000B ;
mov PC,A
;------------------------------------------------
mov A,0E0H;
mov counter1,A ;100×256×32=第一次點(diǎn)火時(shí)間
;(4MHz=E0H=0.8 秒)
;................................................
;................................................
sign_test:
sz keystatus.0 ;檢測PB5引腳準(zhǔn)位
jmp ignite ;如果PB5準(zhǔn)位爲(wèi)低,點(diǎn)亮燈管
call delay_46
call delay_46
sz PB5
jmp clr_sign
inc keycount
mov A,0FAH
sub A,keycount
sz status.0
jmp sign_test
set keystatus.0 ;
jmp sign_test
clr_sign:
clr keycount
mov A,00000011B ;設(shè)置PA0 和PA1 輸出為″1″
jmp sign_test
;................................................
ignite:
clr keycount
call ignite_sub ;點(diǎn)火模式:第一次子程式
;
mov A,0FCH ;4MHz=FCH=0.1秒
mov counter1,A ;110×256×4=第二次點(diǎn)火時(shí)間
ignite_se: ;點(diǎn)火模式:第二次
mov A,00000001b
clr pa
mov PA,A
call delay_46
nop
nop
nop
nop
;..
mov A,00000010b
clr pa
mov PA,A
call delay_46
nop
siz counter0
jmp ignite_se
siz counter1
jmp ignite_se
;................................................
run_mode: ;運(yùn)作模式:固定頻率在22kHz
mov A,00000001b
clr pa
mov PA,A
call delay_run
snz keystatus.0 ;
jmp initial_mode ;PB5爲(wèi)高準(zhǔn)位,熄滅燈管
;.......
mov A,00000010b
clr pa
mov PA,A
call delay_run
jmp run_mode
;--------------------------------------------------
; -- 子程式 --
;--------------------------------------------------
;delay_run:
clr wdt
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
ret
;
delay_run:
clr wdt
snz PB5 ;檢測PB5引腳準(zhǔn)位
jmp delay_run1 ;如果PB5準(zhǔn)位爲(wèi)高,熄滅燈管
inc keycount
mov A,0FAH
sub A,keycount
sz status.0
jmp delay_run2
clr keystatus.0
jmp delay_run3
delay_run1:
nop
jmp $+1
jmp $+1
delay_run2:
jmp $+1
delay_run3:
jmp $+1
ret
delay_46:
clr wdt
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
nop
ret
;--------------------------------------------------
; -- 子程式 --
;--------------------------------------------------
ignite_sub:
mov A,00000001b
mov PA,A
;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;
mov A,00000010b
mov PA,A
;.......
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;.......
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;.....
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;.....
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
clr wdt
siz counter0
jmp ignite_sub
siz counter1
jmp ignite_sub
clr pa
;..................................
ret
end
0
回復(fù)

0
回復(fù)
@miky1188
[圖片]500){this.resized=true;this.width=500;this.alt='這是一張縮略圖,點(diǎn)擊可放大。\n按住CTRL,滾動(dòng)鼠標(biāo)滾輪可自由縮放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/48/1166679750.jpg');}"onmousewheel="returnimgzoom(this);">
好!非常好!如果把異常保護(hù)加上去,產(chǎn)品的可行性更高;我正想用PIC12系列產(chǎn)品DIP-8的單片機(jī)來控制,希望大家提建議.
0
回復(fù)
@miky1188
INCLUDEHT48RA0A.INCDATA .SECTION AT20H 'DATA';------------------------------------------------counter0db?counter1db?keycountdb?keystatusdb ?;------------------------------------------------CODE .SECTION ORG00H Jmpinitial;------------------------------------------------ ORG010HInitial: ;淸除所有的資料記憶體從20H至3FH movA,20H movMP,A jmpclramloopclramloop: clrR0 incMP movA,0BFH subA,MP szSTATUS.0 jmpclramloop;MP0
循環(huán)的語句為什么寫那么長?幾句就可以代替你的幾十句啊!
0
回復(fù)