51單片機測變周期脈沖信號的簡便方法
定時器Tl中斷服務程序清單如下:
INT1:CLR TR1 ;關(guān)計數(shù)器1
PUSH ACC;ACC入棧
PUSH 00H;R0入棧
CLR C;清零進位標志
MOV A,TL1;計數(shù)值低8位→累加器
ADD A,#23H;計數(shù)器值+中斷執(zhí)行時間32us(12MHz晶振)+
;最小中斷響應時間3-脈沖周期
MOV R0,A ;低8位暫存R0
MOV A,TH1
ADDC A,#00H
MOVX @DPTR,A;脈沖周期高8位→@DPTR指向的RAM單元
INC DPTR;指向下一RAM單元
MOV A,R0
MOVX @DPTR,A;脈沖周期低8位→DPTR指向的RAM單元
INC DPTR
INC R1;脈沖周期個數(shù)加一
MOV TH1,#00H;清零計數(shù)器1
MOV TL1,#00H
POP 00H
POP ACC
SETB TR1;重新啟動計數(shù)
RETI;中斷返回
該中斷服務程序能采樣的最小脈沖周期為32us,若去掉該程序中的現(xiàn)場保護和將計數(shù)值變?yōu)槊}沖周期放在采樣后進行,則可進一步減小能采樣的脈沖周期。能采樣的最大脈沖周期為65535us(12MHz晶振時),若大于該值,則用戶對程序稍加修改即可,因此,實際上對最大周期可不加限制。設對脈沖信號采樣100個周期,采樣值存于50H開始的外部RAM中,則主程序如下:
MAIN:
PUSH TMOD ;專用寄存器TMOD TCON IE入棧
PUSH TCON
PUSH IE
MOV THI,#00H ;清零計數(shù)器
MOV TL1,#00H
MOV TMOD.10H;計數(shù)器1工作方式1
SETB EA ;允許中斷
SETB EX1 ;外部中斷1
SETB IT1 ;INT1負跳變觸發(fā)中斷
MOV DPTR,#50H;存脈沖周期的RAM首地址
MOV R1,#00H ;R1一控制采樣周期個散
SETB TR1 ;計數(shù)器1開始計時
CJNE R1,#64H,$;等待100個周期采樣結(jié)束
CLR TR1 ;關(guān)計數(shù)器
POP IE
POP TCON
POP TMOD
以上采樣的第一脈沖周期不準,應在數(shù)據(jù)處理時丟掉,也可在中斷服務程序中加判斷語句自動丟掉。由以上可以看出,該方法無額外硬件,軟件簡明,能測量的脈沖周期范圍大,但不能測得脈沖信號的第一個周期。
51單片機相關(guān)文章:51單片機教程
塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理 晶振相關(guān)文章:晶振原理 脈沖點火器相關(guān)文章:脈沖點火器原理
評論