?? 200-250hz變化頻率輸出.asm
字號:
;程序名稱 200-250Hz變化頻率輸出
;程序功能 利用定時/計數器T1設定時間的變化,由P1.0口產生200-250Hz變化的頻; 率。實際應用例如:傳感器、前級推動、頻率發生器。
F2H EQU 30H ;200Hz輸出頻率的計數初值的存放地址
F2L EQU 31H
F3H EQU 32H ;250Hz輸出頻率的計數初值的存放地址
F3L EQU 33H
ORG 0000H ;程序起始地址
AJMP MAIN ;跳轉至MAIN
ORG 001BH ;定時/計數器T1中斷服務子程序入口地址
AJMP TIMER1 ;跳轉至TIMER1
MAIN:MOV R1,#50 ;R1=50
MOV R2,#2 ;R2=2
MOV F2H,#0F6H ;F2H=0F6H,F2L=46H,即200Hz的計數初值
MOV F2L,#46H
MOV F3H,#0F8H ;F3H=0F8H,F3L=3BH,即250Hz的計數初值
MOV F3L,#3BH
CLR P1.0 ;P1.0復位
MOV TMOD,#00010000B ;定時/計數器T1工作在方式1,16位計數器
MOV TH1,F2H
MOV TL1,F2L ;200Hz輸出頻率
SETB EA ;CPU開總中斷
SETB TR1 ;啟動定時/計數器T1
SETB ET1 ;開定時/計數器T1溢出中斷
LOOP:AJMP LOOP ;無限循環
;定時/計數器T1中斷服務子程序
TIMER1:CPL P1.0 ;P1.0取反
DJNZ R1,RE ;R1不為0時,跳轉至RE
MOV R1,#50 ;R1=0時,初始化R1
DJNZ R2,RE ;R2不為0時,跳轉至RE
MOV R2,#2 ;R2=0時,初始化R2
MOV A,F2H ;F2H的值送A
CJNE A,F3H,XIA ;A的值不等于F3H的值,跳轉至XIA
AJMP JIA ;A=F3H時,跳轉至JIA
XIA:INC F2L ;F2L加1
MOV A,F2L ;F2L的值送A
CJNE A,#00H,RE ;A的值不為0時,跳轉至RE
INC F2H ;A=0時,F2H加1
MOV A,F2H ;F2H的值送A
CJNE A,F3H,RE ;A的值不等于F3H的值時,跳轉至RE
JIA:INC F2L ;到了將200Hz頻率的低位加1
MOV A,F2L
CJNE A,F3L,RE
MOV F2H,#0F6H;關閉定時/計數器T1
MOV F2L,#46H
RE:MOV TH1,F2H ;初始化計數器
MOV TL1,F2L
RETI
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -