我是初學感應加熱,看了一些資料,按照我的理解,我想用單片機輸出兩路信號,一路做為死區,一路作為開關信號,連接74LS10與非門,實現對稱信號的輸出,同時用單片機的外部中斷腳檢測電流過零信號,當過零時觸發中斷,進行換流。不知道這個思路可行嗎,我已經進行了實驗,輸出不盡人意,不知道是什么原因,是不是速度不夠啊。我用S52,24M,應該來說夠快了啊,請前輩指教。
;*************************
POWER BIT P0.4 ; 開關信號
SQ BIT P0.5 ;死區
;**********************************************
ORG 0000H ;程序首址
AJMP START ;跳初始化開始
ORG 0003H ;中斷0入口
AJMP GUOLIU ; 跳轉到過零服務程序
;
ORG 0013H ; 中斷1入口
AJMP GL ;跳轉到過流處理程序
ORG 0100H ;初始化地址
START:MOV SP,#27H ;設置堆棧
ST2:MOV P0,#0FFH ;P0置位,所顯示器,LED滅
MOV P1,#0FFH ;P2置位
MOV P2,#0FFH ;P2置位
MOV P3,#0FFH ;P3置位
CLR SQ
SETB EX0 ;允許外部中斷0 ;
SETB EX1 ;允許外部中斷1
MOV IP,#00000001B;中斷1中斷優先控制位,外部中斷為過流中斷
SETB IT0 ; 脈沖觸發控制位
SETB IT1 ; 脈沖觸發控制位
LCALL DELAY2
LCALL DELAY2
LCALL DELAY2
SETB EA ; 開中斷總允許位
SETB SQ ;打開功率管
;***********************************************************
LOOP: NOP ;等待
NOP
NOP
NOP
AJMP LOOP
;***********************************************************
; 震蕩信號程序,過零中斷程序
;********************************************************
GL:CLR SQ; 關閉所有信號,進入死區
CPL POWER ;0.5US 信號取反
NOP ;0.5US 死區時間
NOP ;0.5US
NOP ;0.5US
NOP ;0.5US
NOP ;0.5US ;
SETB SQ ; 打開開關信號,此時換流
;
CPL P1.4 ; 正負開關信號指示燈
FH:RETI ;退出中斷
;************************************************************
; 過流處理程序
;**********************************************************
GUOLIU:MOV P0,#00H ;關閉所有輸出
CLR P1.3 ;打開過流指示燈
AJMP GUOLIU ;自鎖
RETI
;***************************************************************************
;延時程序
;*****************************************************************************
DELAY:MOV R7,#010H
D11: MOV R6,#010H
DJNZ R6,$
DJNZ R7,D11
RET
DELAY2:MOV R7,#0FFH
D111: MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,D111
RET