数字频率计汇编程序.docx
《数字频率计汇编程序.docx》由会员分享,可在线阅读,更多相关《数字频率计汇编程序.docx(33页珍藏版)》请在冰点文库上搜索。
数字频率计汇编程序
ORG0000H
AJMPMAIN
ORG000BH
LJMPSEVER1
ORG0030H
MAIN:
A8279_1EQU0FF82H
A8279_2EQU0FF80H
MOVDPTR,#A8279_1;8279初始化
MOVA,#0D1H
MOVX@DPTR,A
WAIT1:
MOVXA,@DPTR
JBACC.7,WAIT1;
MOVA,#00H
MOVX@DPTR,A
MOVA,#2CH
MOVX@DPTR,A
CLR00H
CLR01H
CLR02H
CLR03H
CLR04H
CLR05H
CLR06H
CLR07H
CLR08H
CLR09H
START:
MOVDPTR,#A8279_1
MOVXA,@DPTR
ANLA,#07H
JZRETUN
ACALLKEY
JBC00H,MAIN
JBC01H,START1
JBC02H,START2
JBC03H,START3
JBC04H,START4
RETUN:
AJMPSTART
START1:
MOVP1,#0EFH
LCALLSEACH1
JBC00H,MAIN
JBC06H,PINYU61
JBC07H,PINYU71
JBC08H,PINYU81
JBC09H,PINYU91
AJMPSTART1
PINYU61:
LJMPPINYU6
PINYU71:
LJMPPINYU7
PINYU81:
LJMPPINYU8
PINYU91:
LJMPPINYU9
START2:
MOVP1,#2FH
LCALLSEACH1
JBC00H,MAIN
JBC06H,ZHOUQI11
JBC07H,ZHOUQI21
JBC08H,ZHOUQI31
JBC09H,RETUN4
RETUN4:
AJMPSTART2
ZHOUQI11:
AJMPZHOUQI1
ZHOUQI21:
AJMPZHOUQI2
ZHOUQI31:
AJMPZHOUQI3
START3:
LCALLSEACH1
JBC00H,RETUN16
LCALLCEMK
AJMPSTART3
RETUN16:
LJMPMAIN
START4:
LCALLSEACH1
JBC00H,RETUN15
LCALLCEZHANKB
AJMPSTART4
RETUN15:
LJMPMAIN
PINYU6:
LCALLSEACH1
JBC00H,RETUN11
MOVP1,#1EH
LCALLZHQI
LCALLPINYU1
LCALLTRANS
LCALLLED
AJMPPINYU6
RETUN11:
AJMPMAIN
PINYU7:
LCALLSEACH1
JBC00H,RETUN12
MOVP1,#1DH
LCALLCZS
LCALLPINYU2
LCALLTRANS
LCALLLED
AJMPPINYU7
RETUN12:
AJMPMAIN
PINYU8:
LCALLSEACH1
JBC00H,RETUN13
MOVP1,#1BH
LCALLCZS
MOV35H,#08H
LCALLPINYU
LCALLTRANS
LCALLLED
AJMPPINYU8
RETUN13:
AJMPMAIN
PINYU9:
LCALLSEACH1
JBC00H,RETUN14
MOVP1,#17H
LCALLCZS
MOV35H,#32
LCALLPINYU
LCALLTRANS
LCALLLED
AJMPPINYU9
RETUN14:
LJMPMAIN
ZHOUQI1:
MOVP1,#2EH
LCALLZHQI
LCALLMUL4
LCALLADD1
MOV60H,R2
MOV61H,R3
MOV62H,R4
MOV63H,R5
LCALLTRANS
LCALLLED
AJMPZHOUQI1
ZHOUQI2:
MOVP1,#2DH
LCALLSEACH1
JBC00H,RETUN9
LCALLZHOUQI2_2
MOV36H,R3
MOV37H,R4
MOV38H,R5
LCALLHB4;转换后的三字节BCD码整数在R2,R3、R4、R5中。
MOV60H,R2
MOV61H,R3
MOV62H,R4
MOV63H,R5
LCALLTRANS
LCALLLED
AJMPZHOUQI2
RETUN9:
LJMPMAIN
ZHOUQI3:
MOVP1,#2BH
LCALLSEACH1
JBC00H,RETUN10
LCALLZHOUQI2_2
MOV36H,R3
MOV37H,R4
MOV38H,R5
MOVR0,#36H
MOVR7,#08H;分频系数
LCALLMULD3_1
MOV60H,R2
MOV61H,R3
MOV62H,R4
MOV63H,R5
LCALLTRANS
LCALLLED
AJMPZHOUQI3
RETUN10:
AJMPMAIN
ZHOUQI2_2:
LCALLCZS
MOVA,76H
;CJNEA,#00H,NEXT12
;AJMPNEXT13
LCALLMUL4
LCALLADD1
MOV60H,R2
MOV61H,R3
MOV62H,R4
MOV63H,R5
CJNER3,#00H,NEXT14
MOV76H,#01H
MOV69H,76H
AJMPNEXT15
NEXT14:
JCNEXT15
MOV76H,#08H
MOV69H,76H
MOVR7,#08H
LCALLDV31;双字节商在R4、R5中
MOV62H,R4
MOV63H,R5
NEXT15:
MOVA,R4
MOVR6,A
MOVA,R5
MOVR7,A
MOVR2,#00H
MOVR3,#0FH
MOVR4,#42H
MOVR5,#40H
LCALLDIVD;双字节商在R2、R3中,OV=1时溢出
MOV62H,R2
MOV63H,R3
MOVR6,#00H
MOVR7,76H
JNBOV,NEXT16
MOVR6,62H
MOVR7,63H
MOVR2,#00H;存入10000
MOVR3,#00H
MOVR4,#27H
MOVR5,#10H
LCALLDIVD;双字节商在R2、R3中,OV=1时溢出
NEXT16:
MOVA,69H
CJNEA,#01H,NEXT32
AJMPNEXT33
NEXT32:
MOVR6,#00H
MOVR7,#69H
LCALLDIVD
NEXT33:
MOVR7,#64H
MOVR6,#00H
LCALLMULD;:
乘积在R2、R3、R4、R5中。
RET
CEMK:
MOVP1,#4DH
LCALLMAIKUAN
LCALLHB4;转换后的三字节BCD码整数在R2,R3、R4、R5中。
MOV60H,R2
MOV61H,R3
MOV62H,R4
MOV63H,R5
LCALLTRANS
LCALLLED
RET
CEZHANKB:
MOVP1,#8DH
LCALLZHQI
LCALLMUL4
LCALLADD1;;结果在R2.R3.R4.R5中
MOV70H,R2
MOV71H,R3
MOV72H,R4
MOV73H,R5
LCALLMAIKUAN;;结果在36,37,38H中
MOVR6,37H
MOVR7,38H
MOVR2,#03H
MOVR3,#0E8H
LCALLMULD;乘积在R2、R3、R4、R5中。
MOVR6,72H
MOVR7,73H
LCALLDIVD;双字节商在R2、R3中,OV=1时溢出。
MOVR2,72H
MOVR3,73H
MOVR6,72H
MOVR7,73H
LCALLHB2;转换后的三字节BCD码整数在R3、R4、R5中。
MOV60H,#00H
MOV61H,R3
MOV62H,R4
MOV63H,R5
LCALLTRANS
LCALLLED
RET
KEY:
MOVDPTR,#A8279_1
MOVA,#40H
MOVX@DPTR,A
MOVDPTR,#A8279_2
MOVXA,@DPTR
ANLA,#3FH
CJNEA,#00H,KEY1
SETB00H
LJMPRETUN1
KEY1:
CJNEA,#01H,KEY2
SETB01H
LJMPRETUN1
KEY2:
CJNEA,#02H,KEY3
SETB02H
AJMPRETUN1
KEY3:
CJNEA,#03H,KEY4
SETB03H
LJMPRETUN1
KEY4:
CJNEA,#04H,KEY5
SETB04H
LJMPRETUN1
KEY5:
CJNEA,#05H,RETUN1
SETB05H
RETUN1:
RET
KEY_1:
MOVDPTR,#A8279_1
MOVA,#40H
MOVX@DPTR,A
MOVDPTR,#A8279_2
MOVXA,@DPTR
ANLA,#3FH
CJNEA,#00H,KEY_11
SETB00H
LJMPRETUN2
KEY_11:
CJNEA,#06H,KEY_12
SETB06H
LJMPRETUN2
KEY_12:
CJNEA,#07H,KEY_13
SETB07H
AJMPRETUN2
KEY_13:
CJNEA,#08H,KEY_14
SETB08H
LJMPRETUN2
KEY_14:
CJNEA,#09H,RETUN2
SETB09H
RETUN2:
RET
ZHQI:
;0.1hz_1khz测量,测周期;16进制
MOVTMOD,#01H
MOVTL0,#00H
MOVTH0,#00H
SETBEA
SETBET0
MOV76H,#00H
SETBP3.5
GDP1:
MOVC,P3.5
JCGDP1
DDP1:
MOVC,P3.5
JNCDDP1
SETBTR0
GDP2:
MOVC,P3.5
JCGDP2
DDP2:
MOVC,P3.5
JNCDDP2
CLRTR0
CLRTR1
MOVA,TH0
MOVTH1,A
MOVA,TL0
MOVTL1,A
RET
PINYU1:
;0.1hz_1khz测量;结果在让,r4,r5中;16进制
LCALLMUL4
LCALLADD1
MOV30H,#00H
MOV31H,#00H
MOV32H,#0FFH
MOV33H,#0FFH
LCALLBIJIAO
JB20H,BIJIAO2
MOV34H,R4
MOV35H,R5
MOVR6,34H
MOVR7,35H
MOVR2,#00H
MOVR3,#0FH
MOVR4,#42H
MOVR5,#40H
LCALLDIVD;OV=0时,双字节商在R2、R3中,OV=1时溢出。
MOVA,R2
MOVR6,A
MOVA,R3
MOVR7,A
AJMPNEXT30
BIJIAO2:
MOV30H,#00H
MOV31H,#0FH
MOV32H,#42H
MOV33H,#40H
LCALLBIJIAO
JB20H,BIJIAO3
MOVR7,#100
LCALLDV31;OV=0时,双字节商在R4、R5中,OV=1时溢出。
MOV34H,R4
MOV35H,R5
MOVR6,34H
MOVR7,35H
MOVR2,#00H
MOVR3,#0FH
MOVR4,#42H
MOVR5,#40H
LCALLDIVD;OV=0时,双字节商在R2、R3中,OV=1时溢出。
MOV34H,R2
MOV35H,R3
MOVR6,34H
MOVR7,35H
MOVR3,#00H
MOVR4,34H
MOVR5,35H
MOVR7,#100
LCALLDV31;OV=0时,双字节商在R4、R5中,OV=1时溢出。
MOV34H,R4
MOV35H,R5
MOVR6,34H
MOVR7,35H
AJMPNEXT30
BIJIAO3:
MOVR7,#0E8H
MOVR6,#03H
LCALLDIVD;OV=0时,双字节商在R2、R3中,OV=1时溢出。
MOV34H,R2
MOV35H,R3
MOVR6,34H
MOVR7,35H
MOVR2,#00H
MOVR3,#98H
MOVR4,#96H
MOVR5,#80H
LCALLDIVD;OV=0时,双字节商在R2、R3中,OV=1时溢出。
MOV34H,R2
MOV35H,R3
MOVR6,34H
MOVR7,35H
MOVR2,#00H
MOVR3,#00H
MOVR4,34H
MOVR5,35H
MOVR7,#0E8H
MOVR6,#03H
LCALLDIVD;OV=0时,双字节商在R2、R3中,OV=1时溢出。
MOV34H,R2
MOV35H,R3
MOVR6,34H
MOVR7,35H
NEXT30:
LCALLHB2
MOV60H,#00H
MOV61H,R3
MOV62H,R4
MOV63H,R5
CLRET0
RET
SEVER1:
INC76H
RETI
CZS:
;测1秒钟的周期数
MOVTMOD,#51H
MOVTL0,#00H
MOVTH0,#4CH
MOV76H,#00H
MOVR7,#14H
MOVTL1,#00H
MOVTH1,#00H
SETBTR1
SETBTR0
HERE:
JBCTF0,NEXT1
JBCTF1,NEXT20
SJMPHERE
NEXT20:
INC76H
AJMPHERE
NEXT1:
MOVTL0,#00H
MOVTH0,#4CH
DJNZR7,HERE
CLRTR0
CLRTR1
RET
PINYU2:
;测频率1k_0.5mhz
MOVA,76H
CJNEA,#00H,NEXT2
MOV65H,#00H
MOV66H,#00H
MOV67H,#00H
AJMPNEXT3
NEXT2:
MOVR6,76H
MOVR0,#65H
MOVR7,#03H
MOVR1,#50H
MOV65H,#00H
MOV66H,#00H
MOV67H,#00H
NEXT4:
MOV50H,#06H
MOV51H,#55H
MOV52H,#36H
LCALLBCDA
DJNZR6,NEXT4
NEXT3:
MOVR6,TH1
MOVR7,TL1
LCALLHB2
MOVR7,#03H
MOV50H,R3
MOV51H,R4
MOV52H,R5
MOVR0,#65H
MOVR1,#50H
LCALLBCDA
MOV60H,#00H;结果在65,66,67h中BCD码
MOV61H,65H
MOV62H,66H
MOV63H,67H
RET
PINYU:
MOV30H,TH0
MOV31H,TL0
MOVA,76H
;CJNEA,#00H,NEXT5
;AJMPNEXT6
;CLRTF0
LCALLMUL4
LCALLADD1
MOV65H,R2
MOV66H,R3
MOV67H,R4
MOV68H,R5
MOVR0,#66H
MOVR7,35H;乘以分频系数
LCALLMULD3_1
MOV36H,R3
MOV37H,R4
MOV38H,R5
LCALLHB4;转换后的三字节BCD码整数在R2,R3、R4、R5中。
MOV60H,R2
MOV61H,R3
MOV62H,R4
MOV63H,R5
RET
MAIKUAN:
;测量,测脉宽
MOVTMOD,#01H
MOVTL0,#00H
MOVTH0,#00H
SETBEA
SETBET0
MOV76H,#00H
SETBP3.5
GDP5:
MOVC,P3.5
JCGDP5
DDP5:
MOVC,P3.5
JNCDDP5
SETBTR0
GDP6:
MOVC,P3.5
JCGDP6
CLRTR0
;MOVA,B
;CJNEA,#00H,NEXT6
;AJMPNEXT7
MOVA,TH0
MOVTH1,A
MOVA,TL0
MOVTL1,A
CLRET0
LCALLMUL4
LCALLADD1
MOV36H,R3
MOV37H,R4
MOV38H,R5
RET
MUL4:
MOVR2,#0FFH
MOVR3,#0FFH
MOVR6,#00H
MOVR7,76H
LCALLMULD
MOVA,76H
ADDA,R5
MOVR5,A
MOVA,#00H
ADDCA,R4
MOVR4,A
MOVA,#00H
ADDCA,R3
MOVR3,A
MOVA,#00H
ADDCA,R2;结果在R2.R3.R4.R5中
RET
ADD1:
MOVA,TL1
ADDA,R5
MOVR5,A
MOVA,TH1
ADDCA,R4
MOVR4,A
MOVA,#00H
ADDCA,R3
MOVR3,A
MOVA,#00H
ADDCA,R2
MOVR2,A;结果在R2.R3.R4.R5中
RET
BIJIAO:
MOVA,R2;比较30h,31h,32h,33h与r2,r3,r4,r5中数据的大小,大,20H=0,
CJNEA,30H,TEND
MOVA,R3
CJNEA,31H,TEND
MOVA,R4
CJNEA,32H,TEND
MOVA,R5
CJNEA,33H,TEND
TEND:
JCBJ1
SETB20H
AJMPTEND2
BJ1:
CLR20H
TEND2:
RET
;(5)标号:
MULD功能:
双字节二进制无符号数乘法
;入口条件:
被乘数在R2、R3中,乘数在R6、R7中。
;出口信息:
乘积在R2、R3、R4、R5中。
;影响资源:
PSW、A、B、R2~R7堆栈需求:
2字节
MULD:
MOVA,R3;;计算R3乘R7
MOVB,R7
MULAB
MOVR4,B;;暂存部分积
MOVR5,A
MOVA,R3;;计算R3乘R6
MOVB,R6
MULAB
ADDA,R4;;累加部分积
MOVR4,A
CLRA
ADDCA,B
MOVR3,A
MOVA,R2;;计算R2乘R7
MOVB,R7
MULAB
ADDA,R4;;累加部分积
MOVR4,A
MOVA,R3
ADDCA,B
MOVR3,A
CLRA
RLCA
XCHA,R2;;计算R2乘R6
MOVB,R6
MULAB
ADDA,R3;;累加部分积
MOVR3,A
MOVA,R2
ADDCA,B
MOVR2,A
RET
;(9)标号:
DV31功能:
三字节二进制无符号数除以单字节二进制数
;入口条件:
被除数在R3、R4、R5中,除数在R7中。
;出口信息:
OV=0时,双字节商在R4、R5中,OV=1时溢出。
;影响资源:
PSW、A、B、R2~R7堆栈需求:
2字节
DV31:
CLRC
MOVA,R3
SUBBA,R7
JCDV30
SETBOV;;商溢出
RET
DV30:
MOVR2,#10H;;;求R3R4R5/R7-→R4R5
DM23:
CLRC
MOVA,R5
RLCA
MOVR5,A
MOVA,R4
RLCA
MOVR4,A
MOVA,R3
RLCA
MOVR3,A
MOVF0,C
CLRC
SUBBA,R7
ANLC,/F0
JCDM24
MOVR3,A
INCR5
DM24:
DJNZR2,DM23
MOVA,R3;;;四舍五入
ADDA,R3
JCDM25
SUBBA,R7
JCDM26
DM25:
INCR5
MOVA,R5
JNZDM26
INCR4
DM26:
CLROV
RET;;商在R4R5中
;(7)标号:
DIVD功能:
双字节二进制无符号数除法
;入口条件:
被除数在R2、R3、R4、R5中,除数在R6、R7中。
;出口信息:
OV=0时,双字节商在R2、R3中,OV=1时溢出。
;影响资