|
本帖最后由 taotie 于 2019-9-2 13:06 編輯
rem Main.bas file generated by New Project wizard
rem Created: 周五 8月 30 2019 TAOTIE
rem Processor: ATmega16
rem Compiler: BASCOM-AVR
rem BASCOM-AVR版調(diào)光程序由Proteus 8 .8 中 Arduino Dimming 230V AC例程修改而來
rem 示波器觀察220V交流波形與同步過零信號(hào)交叉位置。觸發(fā)可控硅信號(hào)時(shí)上升沿的位置
$regfile = "m16def.dat"
$crystal = 8000000
'**********************安排變量*******************************
DIM us_Zhi AS Word '微秒值變量
DIM i as Byte '循環(huán)計(jì)數(shù)變量
DIM beilv as Byte '調(diào)光倍率變量(0-128)0 = ON,128= OFF
beilv = 128
'*******************端口初始化*********************************************************************
DDrd.2 = 0 'pd2腳為輸入(I NT0過零同步信號(hào)輸入端)
Pind.2 = 1 ' pd2腳上拉電阻有效
DDrA.3 = 1 ' 將pa3引腳設(shè)置為輸出(觸發(fā)控制交流負(fù)載 端)
PortA.3=1 '將pa3引腳設(shè)置為高電平
'******************外部I NT0過零同步信號(hào)中斷設(shè)置*******************************************************************************
Config Int0 = rising '外部中斷 Low Level低 rising 上 falling下
On Int0 guo_0_zd ' 過零中斷服務(wù)入口
Enable Interrupts '使能全局中斷
Enable Int0 '使能外部I NT0過零中斷
'**********觸發(fā)角控制倍率循環(huán)計(jì)數(shù)***********************************
do
for i = 1 to 128 Step 1
i=i+1
beilv=i
Waitms 10
Next i
i = 1
loop
'***************外部中斷過零服務(wù)子程序******************
guo_0_zd:
us_Zhi = 75*beilv
Waitus us_Zhi '高版本2078就是好,延遲時(shí)間值可以是變量
PortA.3=1
Waitus 10
PortA.3=0
Return
'觸發(fā)角計(jì)算:1個(gè)完整的50Hz波= 1/50 = 20ms
'每次零交叉:(50Hz) - > 10ms(1/2周期)
'對(duì)于60Hz => 8.33ms(10.000 / 120)
'10ms = 10000us
'(10000us - 10us)/ 128 = 75(大約)60Hz => 65
|
評(píng)分
-
查看全部評(píng)分
|