频率计51汇编(全)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档