频率计51汇编(全)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;频率计
;0.1HZ--500kHZ(P3.4输入) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; LCD液晶显示初始化子程序;
;P0=DB,;;RS,RW,E分别接于P2.0,P2.1,P2.2 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;LCD控制/数据口线定义
RS BIT P2.4 ;LCD寄存器选择信号
RW BIT P2.5 ;LCD读写选择信号
E BIT P2.6 ;LCD使能信号
D_1602 EQU P0
;LCD命令/数据暂存单元定义
COM EQU 30H ;指令寄存器
DAT EQU 31H ;数据寄存器DPBUFF EQU 20H ;显示缓冲器
T0_OVT EQU 30H ;计数器0溢出次数
T0_TIMES EQU 31H ;计数器0计数次数
T1_TIMES EQU 32H ;定时器1计数次数FREG_H EQU 33H ;频率高位
FREG_L EQU 34H ;频率低位
FREG_P EQU 35H ;频率小数点后第一位FREG_un EQU 36H ;频率单位
BCHU_1 EQU 40H ;多字节除法寄存器BCHU_2 EQU 41H
BCHU_3 EQU 42H
BCHU_4 EQU 43H
CHU_1 EQU 44H
CHU_2 EQU 45H
CHU_3 EQU 46H
M EQU 47H
N EQU 48H
F_D EQU 49H ;频率段提示字符寄存器;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
ORG 1BH
LJMP INT_T1
ORG 30H
START: MOV P0,#0FFH ;初始化IO口
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
MOV SP,#50H
LCALL INT16 ;液晶初始化
LCALL DISP_INT
MOV TMOD,#16H ;计数器0工作于方式2,定时器1工作于方式1
SETB EA ;开总中断开关IE=10H
CLR ET0
CLR ET1 ;关闭定时计数器开关
CLR TF0 ;清定时器0中断申请标志位
CLR TF1 ;清定时器1中断申请标志位
LOOP: LCALL F_TEST ;测试频率
LCALL DISP_F ;
LCALL DELAY
LCALL DELAY
AJMP LOOP
;-------------------------------------------
;计数器0中断入口
INT_T0: INC T0_OVT
RETI
;-------------------------------------------
;定时器1中断入口
INT_T1: INC R2
RETI ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;频率测试子程序
F_TEST: MOV T0_OVT,#00H ;初始化寄存器
MOV TH0,#0FFH
MOV TL0,#0FFH ;计数器0初值
MOV TH1,#0D8H
MOV TL1,#0EFH ;定时器1定时时间10MS
;估测判断待测频段
CLR ET0 ;关T0中断
SETB TR0 ;开计数器0开关
JNB TF0,$
CLR TF0 ;
MOV TH0,#0FFH
MOV TL0,#00H ;计数器0初值,每256次产生一次中断
SETB TR1 ;开定时器1
SETB ET0
CLR TF1
CLR ET1 ;关定时器中断开关
JNB TF1,$ ;判断10MS时间到否
CLR TF1
CLR TR0
CLR TR1 ;关闭定时计数器
MOV A,T0_OVT
CLR C
SUBB A,#01H
JC G1
LJMP HIGHT_F
G1: CLR C
MOV A,TL0
SUBB A,#200
JC G2
LJMP HIGHT_F ;大于20KHZ跳到高频
G2: CLR C
MOV A,TL0
SUBB A,#10 ;1K--20KHZ跳到中频
JNC MID_F
LJMP LOW_F ;低于1khz跳到低频;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;实测频率
;低频段处理
LOW_F: MOV T0_OVT,#00H
MOV R2,#00H
MOV TH1,#00H
MOV TL1,#00H
MOV TH0,#0FFH
MOV TL0,#0FFH
CLR TF0
SETB TR0 ;开计数器0开关
CLR ET0
JNB TF0,$
CLR TF0 ;
CLR TF1 ;清中断标志位
SETB TR1 ;开定时器1
SETB ET1 ;开定时计数器中断
JNB TF0,$ ;1个周期脉冲到否,到了关闭定时器
CLR TR1
CLR TR0 ;关闭定时计数器
CLR TF0
CLR TF1 ;清中断标志位
CLR ET0