CPU控制锁相环频率合成分频比N程序.docx

上传人:b****5 文档编号:28195642 上传时间:2023-07-09 格式:DOCX 页数:45 大小:20.26KB
下载 相关 举报
CPU控制锁相环频率合成分频比N程序.docx_第1页
第1页 / 共45页
CPU控制锁相环频率合成分频比N程序.docx_第2页
第2页 / 共45页
CPU控制锁相环频率合成分频比N程序.docx_第3页
第3页 / 共45页
CPU控制锁相环频率合成分频比N程序.docx_第4页
第4页 / 共45页
CPU控制锁相环频率合成分频比N程序.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

CPU控制锁相环频率合成分频比N程序.docx

《CPU控制锁相环频率合成分频比N程序.docx》由会员分享,可在线阅读,更多相关《CPU控制锁相环频率合成分频比N程序.docx(45页珍藏版)》请在冰豆网上搜索。

CPU控制锁相环频率合成分频比N程序.docx

CPU控制锁相环频率合成分频比N程序

;**************************************************

;CPU控制锁相环频率合成分频比N

;**************************************************

;程序执行如下

;**************************************************

NSEQU30H;数据存储缓冲区8位

NEW_NUMEQU38H

FPBDEQU40H

FPBGEQU41H

FPBD1EQU48H

FPBG1EQU49H

FKEYEQU20H.0;按键标志,若有按键为1

KEY_NOEQU44H;按键标号

ORG00H

AJMPBEGIN

BEGIN:

MOVSP,#70H

ACALLHELLO

SCAN:

CLRFKEY

SCAN0:

ACALLKEY_SCAN;调用扫描键盘子程序

SCAN1:

JBFKEY,WAIT_OFF;若有按键就等待按键放开

AJMPSCAN;无则继续扫描和键盘

WAIT_OFF:

ACALLKEY_SCAN

JBFKEY,WAIT_OFF

;++++++++++++++++++++++++键值判断++++++++++++++++++

SWPD:

MOVA,KEY_NO

SW_A:

CJNEA,#0AH,SW_B;OK键,确认数据输入完毕

ACALLPL_FPB;把输入的接收频率转化位分频比N送出

AJMPSCAN

SW_B:

CJNEA,#0BH,SW_C

ACALLXIAOYIN;消隐等待输入新数据

AJMPSCAN

SW_C:

CJNEA,#0CH,SW_D

;ACALLQPSS;全频搜索

ACALLSW_UP1

AJMPSCAN

SW_D:

CJNEA,#0DH,SW_E

;ACALLUPDW;手动加减5KHZ—1加,2减

ACALLSW_DOWN1

AJMPSCAN

SW_E:

CJNEA,#0EH,SW_F;HIBABY存台

ACALLHIBABY

MOVR5,#10

ACALLDELAY

ACALLCUNTAI

AJMPSCAN

SW_F:

CJNEA,#0FH,YES;HELLO读台

ACALLHELLO

MOVR5,#10

ACALLDELAY

ACALLDUTAI

AJMPSCAN

YES:

;显示出输入数据并存起来

ACALLXSQ

ACALLNUM_STORE

AJMPSCAN

;OKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOK

;主程序结束,以下为子程序

;OKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOK

;**************************************************

;键盘(矩阵式)扫描,子程序1

;**************************************************

KEY_SCAN:

MOVR3,#0EFH;加载扫描输出初始信号11101111B

MOVR4,#0

MOVR1,#4

CLRPSW.5

S1:

MOVA,R3;循环扫描16个按键

MOVP1,A

MOVR5,#1

ACALLDELAY

MOVA,P1;读取P1口数据判断按键是否有效

ANLA,#0FH

MOVR2,#4

S2:

JBACC.0,N1;判断有无按键,若为1则表示没按键按下

MOVKEY_NO,R4

SETBPSW.5

N1:

INCR4

RRA

DJNZR2,S2;对一行进行扫描

MOVA,R3

RLA;移至下一行扫描

MOVR3,A

DJNZR1,S1

BACK:

JNBPSW.5,NO_KEY

SETBFKEY

RET

NO_KEY:

CLRFKEY

RET

;!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

;消隐子程序,2

;!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

XIAOYIN:

MOVSCON,#00H

SETBEA

MOVR3,#08H

MOVR0,#00H

MOVDPTR,#TAB5

LOOP13:

MOVA,R0

MOVCA,@A+DPTR

MOVSBUF,A

WAIT13:

JNBTI,WAIT13

CLRTI

MOVR5,#1

ACALLDELAY

INCR0

DJNZR3,LOOP13

RET

;!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

;HELLO!

程序,3

;!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

HELLO:

MOVSCON,#00H

SETBEA

MOVR0,#08H

MOVR1,#00H

MOVDPTR,#TAB3

LOOP1:

MOVA,R1

MOVCA,@A+DPTR

MOVSBUF,A

WAIT:

JNBTI,WAIT

CLRTI

MOVR5,#1

ACALLDELAY

INCR1

DJNZR0,LOOP1

RET

;!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

;HIBABY!

子程序,4

;!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

HIBABY:

MOVSCON,#00H

SETBEA

MOVR0,#08H

MOVR1,#00H

MOVDPTR,#TAB4

LOOP11:

MOVA,R1

MOVCA,@A+DPTR

MOVSBUF,A

WAIT11:

JNBTI,WAIT11

CLRTI

MOVR5,#1

ACALLDELAY

INCR1

DJNZR0,LOOP11

RET

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

;串行显示子程序,5

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

XSQ:

MOVSCON,#00H

SETBEA

LOOP2:

MOVA,KEY_NO

MOVDPTR,#TAB1

MOVCA,@A+DPTR

MOVSBUF,A

XSQ1:

JNBTI,XSQ1

CLRTI

RET

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

;数据存储子程序,6

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

NUM_STORE:

MOVA,KEY_NO

MOVDPTR,#TAB2

MOVCA,@A+DPTR

MOVNEW_NUM,A

MOVNS+7,NS+6

MOVNS+6,NS+5

MOVNS+5,NS+4

MOVNS+4,NS+3

MOVNS+3,NS+2

MOVNS+2,NS+1

MOVNS+1,NS

MOVNS,NEW_NUM

RET

;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

;数据处理子程序,7(送出分频比N)

;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

PL_FPB:

MOVR1,#00H;R1存N的低位,先赋值0

MOVR2,#00H;R2存N的高位,先赋值0

MOVR0,#33H;数据缓冲区所存频率的值调出来

MOVR3,#1;个十百...转换

MOVR4,#3;三位,所以循环3次

SHU_N1:

;把输入(接收)的频率值存入R1,R2中

MOVA,@R0

MOVB,R3

MULAB;把每一个的数依次和所对应的进位值相乘*1,*10,*100

ADDA,R1;将所得数低位与低位相加

MOVR1,A;把相加后的低位数存入R1中

MOVA,B

ADDCA,R2;将所得的数高位与高位相加(*带进位相加*)

MOVR2,A;把相加后的高位数存入R2中

INCR0

MOVA,#10

MOVB,R3

MULAB

MOVR3,A;每次循环R3都乘以10

DJNZR4,SHU_N1;判断是否继续执行循环

SHU_N2:

MOVA,@R0

MOVR3,A

MOVR6,#00H

MOVR7,#00H

LOOP3:

MOVA,#0E8H

ADDA,R6

MOVR6,A

MOVA,#03H

ADDCA,R7

MOVR7,A

DJNZR3,LOOP3

SHU_N3:

MOVA,R1

ADDA,R6

MOVR1,A

MOVA,R2

ADDCA,R7

MOVR2,A

SHU_N4:

INCR0

MOVA,@R0

MOVR3,A

MOVR6,#00H

MOVR7,#00H

LOOP4:

MOVA,#10H

ADDA,R6

MOVR6,A

MOVA,#27H

ADDCA,R7

MOVR7,A

DJNZR3,LOOP4

SHU_N5:

MOVA,R1

ADDA,R6

MOVR1,A

MOVA,R2

ADDCA,R7

MOVR2,A

SHU_N6:

;把接收的频率减去10.7M(10700即29CCH)得到本振的频率值

MOVA,R1

SUBBA,#0D1H;把低位减去0CCH,带借位相减

MOVR1,A;所得的数存入R1

MOVA,R2

SUBBA,#29H;把高位减去借位C和29H

MOVR2,A;所得的数存入R2

CHUFA:

MOVR4,#00H

MOVR5,#00H

MOVA,R2

MOVR6,A

MOVA,R1

MOVR7,A

MOVR2,#00H

MOVR3,#05H

NDIV:

MOVA,R5

CLRC

SUBBA,R3

MOVA,R4

SUBBA,R2

JNCNDIV1

MOVB,#16

NDIV2:

CLRC

MOVA,R7

RLCA

MOVR7,A

MOVA,R6

RLCA

MOVR6,A

MOVA,R5

RLCA;R4R5R6R7/R2R3=R6R7......R4R5

MOVR5,A

XCHA,R4

RLCA

XCHA,R4

MOVF0,C

CLRC

SUBBA,R3

MOVR1,A

MOVA,R4

SUBBA,R2

JBF0,NDIV3

JCNDIV4

NDIV3:

MOVR4,A

MOVA,R1

MOVR5,A

INCR7

NDIV4:

DJNZB,NDIV2

CLRF0

NDIV1:

SETBF0

SHU_N7:

MOVA,R7

MOVP0,A;低位送给P0口

MOV40H,A

MOVA,R6

MOVP2,A;高位送给P2口

MOV41H,A

RET

;--------------------------------------------------

;延迟子程序,8*10ms

;--------------------------------------------------

DELAY:

MOVR6,#100

D1:

MOVR7,#100

DJNZR7,$

DJNZR6,D1

DJNZR5,DELAY

RET

;++++++++++++++++++++++++++++++++++++++++++++++++++

;全频搜索子程序,9

;++++++++++++++++++++++++++++++++++++++++++++++++++

QPSS:

MOVA,FPBD

MOVR1,A

MOVA,FPBG

MOVR2,A

CLRC

ACALLUP

;*************判断是否有锁台信号*******************

YTM:

JBP3.6,STOP

;*******判断是否上升到最高频点*********************

;搜索范围N为3860——5860

DDM:

MOVA,FPBD1

SUBBA,#0E4H

MOVR1,A

MOVA,FPBG1

SUBBA,#16H

MOVR2,A

CJNER2,#00H,JIXV

CJNER1,#00H,JIXV

MOVA,#14H

MOVR1,A

MOVA,#0FH

MOVR2,A

JIXV:

MOVR5,#50

LCALLUP

RET

;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

;有台则停止搜索,10

;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

STOP:

AJMPSCAN

;**************************************************

;UP与DOWN,子程序11

;**************************************************

UPDW:

ACALLXSQ2

CLRFKEY

ACALLKEY_SCAN

SCAN4:

JBFKEY,WAIT_OFF3;若有按键就等待按键放开

AJMPUPDW;无则继续扫描键盘

WAIT_OFF3:

ACALLKEY_SCAN

JBFKEY,WAIT_OFF3

;*********************键值判断*********************

MOVA,KEY_NO

SW_UP:

CJNEA,#01H,SW_DOWN

ACALLSW_UP1

AJMPUPDW

SW_DOWN:

CJNEA,#02H,YES2

ACALLSW_DOWN1

AJMPUPDW

YES2:

ACALLXSQ2

AJMPSCAN

RET

;**************************************************

;手动搜索加5KHZ子程序,12

;**************************************************

SW_UP1:

MOVR1,FPBD

MOVR2,FPBG

CLRC

UP:

MOVA,R1

ADDA,#01H

MOVR1,A;分频比N加1,相当于加5KHZ

MOVB,#00H

MOVA,R2

ADDCA,B

MOVR2,A

MOVA,R1

MOVP0,A;加1后的N再送给MC145151

MOVFPBD,A;把N存起来

MOVFPBD1,A

MOVA,R2

MOVP2,A

MOVFPBG,A

MOVFPBG1,A

ACALLCHENG

;AJMPUPDW

AJMPSCAN

RET

;**************************************************

;手动搜索减5KHZ子程序,13

;**************************************************

SW_DOWN1:

MOVR1,FPBD

MOVR2,FPBG

CLRC

;**************************************************

;开始减5KHZ子程序,14

;**************************************************

DOWN:

MOVA,R1;分频比N减1,相当于减5KHZ

CLRC

SUBBA,#01H

MOVR1,A

MOVB,#00H

MOVA,R2

SUBBA,B

MOVR2,A

MOVA,R1

MOVP0,A;加1后的N再送给MC145151

MOVFPBD,A;把N存起来

MOVFPBD1,A

MOVA,R2

MOVP2,A

MOVFPBG,A

MOVFPBG1,A

ACALLCHENG

AJMPSCAN

RET

;**************************************************

;分频比转化位数据并显示,15

;**************************************************

CHENG:

MOVR5,#4

LOOP5:

MOVA,FPBD1

ADDA,R1

MOVFPBD1,A

MOVA,FPBG1

ADDCA,R2

MOVFPBG1,A

DJNZR5,LOOP5

;******************本振频率加10.7MHZ***************

CLRC

MOVA,FPBD1

ADDA,#0D1H

MOVR1,A

MOVA,FPBG1

ADDCA,#29H

MOVR2,A

;***双字节二进制数(存于R2R1)转换为压缩的BCD码****

;转换结果放入R4R5R6中

;R1,R6为低位

;**************************************************

BINBCD2:

CLRA

MOVR4,A

MOVR5,A

MOVR6,A

MOVR7,#16

LOOP6:

CLRC

MOVA,R1

RLCA

MOVR1,A;R3左移1位

MOVA,R2

RLCA

MOVR2,A;R2左移1位

MOVA,R6

ADDCA,R6

DAA

MOVR6,A

MOVA,R5

ADDCA,R5

DAA

MOVR5,A

MOVA,R4

ADDCA,R4

DAA

MOVR4,A

DJNZR7,LOOP6

;************************解压缩********************

OUTBCD:

MOVA,R6

ANLA,#0FH

MOV33H,A

MOVA,R6

ANLA,#0F0H

SWAPA

MOV34H,A

MOVA,R5

ANLA,#0FH

MOV35H,A

MOVA,R5

ANLA,#0F0H

SWAPA

MOV36H,A

MOVA,R4

ANLA,#0FH

MOV37H,A

MOV30H,#00H

MOV31H,#00H

MOV32H,#00H

ACALLCX2

RET

;**********************送给显示器******************

CX2:

MOVSCON,#00H

SETBEA

MOVR4,#08H

MOVR0,#37H

MOVDPTR,#TAB1

LOOP8:

MOVA,@R0

MOVCA,@A+DPTR

MOVSBUF,A

WAIT1:

JNBTI,WAIT1

CLRTI

DECR0

DJNZR4,LOOP8

MOVA,FPBD

MOVR1,A

MOVA,FPBG

MOVR2,A

RET

;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

;存台子程序,16

;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

CUNTAI:

ACALLXIAOYIN

CLRFKEY

ACALLKEY_SCAN

SCAN2:

JBFKEY,WAIT_OFF1;若有按键就等待按键放开

AJMPCUNTAI;无则继续扫描键盘

WAIT_OFF1:

ACALLKEY_SCAN

JBFKEY,WAIT_OFF1

;*********************键值判断*********************

SWPD1:

MOVA,KEY_NO

SW_0:

CJNEA,#00H,SW_1

ACALLZERO

AJMPSCAN

SW_1:

CJNEA,#01H,SW_2

ACALLONE

AJMPSCAN

SW_2:

CJNEA,#02H,SW_3

ACALLTWO

AJMPSCAN

SW_3:

CJNEA,#03H,SW_4

ACALLTHREE

AJMPSCAN

SW_4:

CJNEA,#04H,SW_5

ACALLFOUR

AJMPSCAN

SW_5:

CJNEA,#05H,SW_6

ACALLFIVE

AJMPSCAN

SW_6:

CJNEA,#06H,SW_7

ACALLSIX

AJMPSCAN

SW_7:

CJNEA,#07H,SW_8

ACALLSEVEN

AJMPSCAN

SW_8:

CJNEA,#08H,SW_9

ACALLEIGHT

AJMPSCAN

SW_9:

CJNEA,#09H,SW_10

ACALLNINE

AJMPSCAN

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1