历史上的今天
今天是:2025年01月07日(星期二)
2018年01月07日 | DDS技术的数控信号发生器51单片机控制程序
2018-01-07 来源:eefocus
;*****************************************************
; 基于DDS技术的数控信号发生器控制程序 ;
; 正弦波1Hz-10MHZ ;
; 单片机 STC12C5410AD ;
; AD9850 50MHZ晶振 ;
;*****************************************************
;*****************************************************
; 端口定义 ;
;*****************************************************
SCLK BIT P3.2;液晶串行操作时钟口
SID BIT P3.3;数据输入口
CS BIT P3.4;液晶使能 0禁
LB BIT P3.5;背光灯 0亮
KW1 BIT P1.2;功能、确认键
KW2 BIT P1.1;修改、返回键
KW3 BIT P1.0;加键
KW4 BIT P3.7;减键
LED1 BIT P1.7;跳频
LED2 BIT P1.6;扫频
LED3 BIT P3.0;点频
LED4 BIT P3.1;相移
DATAS BIT P1.3;AD9850 数据口
FQ_UD BIT P1.5;AD9850 使能
W_CLK BIT P1.4;AD9850 移位时钟
;*****************************************************
; 内存定义 ;
;*****************************************************
L0 DATA 21H;算法数据缓冲单元
L1 DATA 22H;
L2 DATA 23H;
L3 DATA 24H;
L4 DATA 25H;
L5 DATA 26H;
L6 DATA 27H;
L7 DATA 28H;
SSDIS DATA 39H;闪烁暂存单元
DIS7 DATA 37H;频率显示单元
DIS6 DATA 36H;DIS7-DIS0
DIS5 DATA 35H;高-低
DIS4 DATA 34H;
DIS3 DATA 33H;
DIS2 DATA 32H;
DIS1 DATA 31H;
DIS0 DATA 30H;
PHASE DATA 3CH;相移控制字
CON3 DATA 3BH;频率控制字
CON2 DATA 3AH;CON3-CON0
CON1 DATA 39H;高-低
CON0 DATA 38H;
IT03 DATA 3DH;0.3s定时中断
GNCDT DATA 3EH;功能菜单标志
MSXZT DATA 3FH;模式选择标志
FSXZT DATA 40H;方式选择标志
XWZLT DATA 41H;相位增量标志
PLSZT DATA 42H;频率设置标志
JDIS5 DATA 4FH;扫频
JDIS4 DATA 4EH;间隔
JDIS3 DATA 4DH;存储
JDIS2 DATA 4CH;单元
JDIS1 DATA 4BH;
JDIS0 DATA 4AH;
LCON3 DATA 53H;扫频
LCON2 DATA 52H;频率终值
LCON1 DATA 51H;
LCON0 DATA 50H;
ZCON3 DATA 57H;扫频
ZCON2 DATA 56H;频率增量
ZCON1 DATA 55H;
ZCON0 DATA 54H;
FCON3 DATA 5BH;扫频
FCON2 DATA 5AH;频率初值
FCON1 DATA 59H;
FCON0 DATA 58H;
RCON3 DATA 5FH;频率
RCON2 DATA 5EH;控制字
RCON1 DATA 5DH;暂存单元
RCON0 DATA 5CH;
PHCON1 DATA 44H;相位增量
PHCON0 DATA 43H;
PHDIS4 DATA 49H;相位显示单元
PHDIS3 DATA 48H;
PHDIS2 DATA 47H;
PHDIS1 DATA 46H;
PHDIS0 DATA 45H;
ZHLIANG0 DATA 60H
ZHLIANG1 DATA 61H
ZHLIANG2 DATA 62H
ZHLIANG3 DATA 63H
;******************************************************
; 中断及入口程序 ;
;******************************************************
ORG 0000H
LJMP START
ORG 0003H
RETI
ORG 000BH
LJMP INTT0
ORG 0013H
RETI
ORG 001BH
RETI
ORG 0023H
RETI
ORG 002BH
RETI
;******************************************************
; 主程序入口 ;
;******************************************************
START:
MOV R1,#20H
MOV R7,#60H
CLR A
CLEAR: MOV @R1,A
INC R1
DJNZ R7,CLEAR
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
CLR CS
MOV IT03,#06H
MOV 6FH,#0AH
LCALL SETUP ;LCD初始化
LCALL BEGINLCD ;开机界面
CLR W_CLK ;AD9850初始化
CLR FQ_UD ;
LCALL SETUP_AD9850 ;
MOV CON0,#96H ;默认频率值
MOV CON1,#4FH ;125MHZ,1000HZ,863CH
MOV CON2,#01H ;50MHZ,1000HZ,014F96H
MOV CON3,#00H ;
MOV TMOD,#01H ;计数器0 方式1
MOV TL0,#0B0H ;50ms
MOV TH0,#3CH ;定时
ADDPLAY: LCALL SEND9850 ;写入AD9850
LCALL CON_DIS ;控制字转频率字
LCALL DISPLCD ;频率显示
LCALL DELAY10ms
SETB LB
MAIN:
CLR LED1
JNB KW1,GNCD0
JNB KW3,CSDPADD0
JNB KW4,CSDPSUBB0
LJMP MAIN
GNCD0: LJMP GNCD
CSDPADD0: LCALL CSDPADD
LJMP MAIN
CSDPSUBB0: LCALL CSDPSUBB
LJMP MAIN
;*********************************************
; AD9850控制程序 ;
;*********************************************
;初始化DDS
SETUP_AD9850:CLR W_CLK
CLR FQ_UD
SETB W_CLK
CLR W_CLK
SETB FQ_UD
CLR FQ_UD
RET
;发送数据到AD9850
SEND9850: CLR FQ_UD
MOV A,CON0
LCALL SEND_8DATA
MOV A,CON1
LCALL SEND_8DATA
MOV A,CON2
LCALL SEND_8DATA
MOV A,CON3
LCALL SEND_8DATA
MOV A,#000B
LCALL SEND_8DATA
SETB FQ_UD
CLR FQ_UD
RET
;发送数据到AD9850(相移)
SEND9850PH: CLR FQ_UD
MOV A,CON0
LCALL SEND_8DATA
MOV A,CON1
LCALL SEND_8DATA
MOV A,CON2
LCALL SEND_8DATA
MOV A,CON3
LCALL SEND_8DATA
MOV A,PHASE
RLC A
RLC A
RLC A
ANL A,#0F8H
LCALL SEND_8DATA
SETB FQ_UD
CLR FQ_UD
RET
SEND_8DATA:
MOV C,ACC.0
MOV DATAS,C
SETB W_CLK
CLR W_CLK
MOV C,ACC.1
MOV DATAS,C
SETB W_CLK
CLR W_CLK
MOV C,ACC.2
MOV DATAS,C
SETB W_CLK
CLR W_CLK
MOV C,ACC.3
MOV DATAS,C
SETB W_CLK
CLR W_CLK
MOV C,ACC.4
MOV DATAS,C
SETB W_CLK
CLR W_CLK
MOV C,ACC.5
MOV DATAS,C
SETB W_CLK
CLR W_CLK
MOV C,ACC.6
MOV DATAS,C
SETB W_CLK
CLR W_CLK
MOV C,ACC.7
MOV DATAS,C
SETB W_CLK
CLR W_CLK
RET
;*********************************************
; 液晶显示程序 ;
;*********************************************
;开机界面
BEGINLCD: CLR LB
MOV A,#80H
LCALL WRITE_COM
MOV DPTR,#CHINESE1
LCALL WRITE_HZ7
MOV A,#90H
LCALL WRITE_COM
MOV DPTR,#CHINESE2
LCALL WRITE_HZ7
LCALL DELAY1s
LCALL DELAY1s
LCALL DELAY1s
MOV A,#80H
LCALL WRITE_COM
MOV DPTR,#CHINESE3
LCALL WRITE_HZ7
MOV A,#90H
LCALL WRITE_COM
MOV DPTR,#CHINESE4
LCALL WRITE_HZ7
LCALL DELAY1s
LCALL DELAY1s
LCALL DELAY1s
MOV A,#80H
LCALL WRITE_COM
MOV DPTR,#CHINESE4
LCALL WRITE_HZ7
MOV A,#90H
LCALL WRITE_COM
MOV DPTR,#CHINESE5
LCALL WRITE_HZ7
LCALL DELAY1s
LCALL DELAY1s
LCALL DELAY1s
SINF: MOV A,#80H
LCALL WRITE_COM
MOV DPTR,#CHINESE6
LCALL WRITE_HZ7
SETB LB
RET
;频率值显示程序
DISPLCD:
MOV A,DIS7
CJNE A,#00H,DIS7PD
MOV DIS7,#0AH
MOV A,DIS6
CJNE A,#00H,DIS6PD
MOV DIS6,#0AH
MOV A,DIS5
CJNE A,#00H,DIS5PD
MOV DIS5,#0AH
MOV A,DIS4
CJNE A,#00H,DIS4PD
MOV DIS4,#0AH
MOV A,DIS3
CJNE A,#00H,DIS3PD
MOV DIS3,#0AH
MOV A,DIS2
CJNE A,#00H,DIS2PD
MOV DIS2,#0AH
MOV A,DIS1
CJNE A,#00H,DIS1PD
MOV DIS1,#0AH
LJMP DIS0PD
DIS7PD: LJMP LCD3
DIS6PD: ;CJNE A,#0AH,DIS7PD
;LJMP LCD2
LJMP LCD3
DIS5PD: LJMP LCD2
DIS4PD: LJMP LCD2
DIS3PD: ;CJNE A,#0AH,LCD2
;LJMP LCD1
LJMP LCD2
DIS2PD: LJMP LCD1
DIS1PD: LJMP LCD1
DIS0PD: LJMP LCD1
LCD1:
MOV 70H,DIS7
MOV 71H,DIS6
MOV 72H,DIS5
MOV 73H,DIS4
MOV 74H,DIS3
MOV 75H,#0AH
MOV 76H,DIS2
MOV 77H,DIS1
MOV 78H,DIS0
MOV A,GNCDT
CJNE A,#06H,JGDWBXS1
LJMP JGDWXS1
JGDWBXS1: MOV A,#95H
LCALL WRITE_COM
MOV DPTR,#CHINESE7
LCALL WRITE_HZ2
LJMP DISPLAY
JGDWXS1: MOV A,#95H
LCALL WRITE_COM
MOV DPTR,#CHINESE10
LCALL WRITE_HZ2
LJMP DISPLAY
LCD2: MOV 70H,DIS7
MOV 71H,DIS6
MOV 72H,DIS5
MOV 73H,DIS4
MOV 74H,DIS3
MOV 75H,#0BH
MOV 76H,DIS2
MOV 77H,DIS1
MOV 78H,DIS0
MOV A,GNCDT
CJNE A,#06H,JGDWBXS2
LJMP JGDWXS2
JGDWBXS2:
MOV A,#95H
LCALL WRITE_COM
MOV DPTR,#CHINESE8
LCALL WRITE_HZ2
LJMP DISPLAY
JGDWXS2: MOV A,#95H
LCALL WRITE_COM
MOV DPTR,#CHINESE11
LCALL WRITE_HZ2
LJMP DISPLAY
LCD3:
MOV 70H,DIS7
MOV 71H,DIS6
MOV 72H,#0BH
MOV 73H,DIS5
MOV 74H,DIS4
MOV 75H,DIS3
MOV 76H,DIS2
MOV 77H,DIS1
MOV 78H,DIS0
MOV A,#95H
LCALL WRITE_COM
MOV DPTR,#CHINESE9
LCALL WRITE_HZ2
LJMP DISPLAY
DISPLAY: MOV A,#90H
LCALL WRITE_COM
MOV R1,#6FH
MOV DPTR,#TABLE
MOV R2,#0AH
MOV A,#00H
MOVCLOP: MOV A,@R1
MOVC A,@A+DPTR
LCALL WRITE_DAT
INC R1
DJNZ R2,MOVCLOP
LJMP RESETDIS
RESETDIS: MOV A,DIS7
CJNE A,#0AH,RESETDIS1
MOV DIS7,#00H
RESETDIS1: MOV A,DIS6
CJNE A,#0AH,RESETDIS2
MOV DIS6,#00H
RESETDIS2: MOV A,DIS5
CJNE A,#0AH,RESETDIS3
MOV DIS5,#00H
RESETDIS3: MOV A,DIS4
CJNE A,#0AH,RESETDIS4
MOV DIS4,#00H
RESETDIS4: MOV A,DIS3
CJNE A,#0AH,RESETDIS5
MOV DIS3,#00H
RESETDIS5: MOV A,DIS2
CJNE A,#0AH,RESETDIS6
MOV DIS2,#00H
RESETDIS6: MOV A,DIS1
CJNE A,#0AH,RESETDIS7
MOV DIS1,#00H
RESETDIS7: RET
;数字编码表
TABLE: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,20H,2EH,3AH,2CH;
;0 1 2 3 4 5 6 7 8 9 . : ,
;汉字编码表
CHINESE1: DW 0B1CFH,0D2B5H,0C9E8H,0BCC6H,0B0A0H,03230H,03036H,0B0A0H;毕业设计 2006
CHINESE2: DW 0C0EEH,0D6C7H,0C4B1H,02043H,03032H,0B5E7H,0C6F8H,0B0A0H;李智谋 C02电气
CHINESE3: DW 0BBF9H,0D3DAH,02044H,04453H,0BCBCH,0CAF5H,0B5C4H,0B0A0H;基于 DDS技术的
CHINESE4: DW 0CAFDH,0BFD8H,0D0C5H,0BAC5H,0B7A2H,0C9FAH,0C6F7H,0B0A0H;数控信号发生器
CHINESE5: DW 04144H,03938H,03530H,02031H,02D31H,0304DH,0485AH,0B0A0H;AD9850 1-10MHZ
CHINESE6: DW 0D5FDH,0CFD2H,0B2A8H,0B0A0H,0C6B5H,0C2CAH,0D6B5H,0B0A0H;正弦波 频率值
CHINESE7: DW 02020H,0485AH; HZ
CHINESE8: DW 0204BH,0485AH; KHZ
CHINESE9: DW 0204DH,0485AH; MHZ
CHINESE10: DW 06D73H,0B0A0H;ms
CHINESE11: DW 02073H,0B0A0H; s
CHINESE12: DW 0C4A3H,0CABDH,0D1A1H,0D4F1H;模式选择
CHINESE13: DW 0B7BDH,0CABDH,0D1A1H,0D4F1H;方式选择
CHINESE14: DW 0C9E8H,0D6C3H;设置
CHINESE15: DW 0C6B5H,0C2CAH;频率
CHINESE16: DW 0CFE0H,0CEBBH;相位
CHINESE17: DW 0B5E3H,0C6B5H;点频
CHINESE18: DW 0C9A8H,0C6B5H;扫频
CHINESE19: DW 0CCF8H,0C6B5H;跳频
CHINESE20: DW 0D4F6H,0C1BFH;增量
CHINESE21: DW 0B7BDH,0CABDH;方式
CHINESE22: DW 0D5FDH,0D4DAH;正在
CHINESE23: DW 0BDE1H,0CAF8H;结束
CHINESE24: DW 0B7B5H,0BBD8H;返回
CHINESE25: DW 0C7EBH,0CAE4H,0C8EBH,0B0A0H;请输入
CHINESE26: DW 0A1E3H,0203AH; 。 :
CHINESE27: DW 0B3F5H,0D6B5H;初值
CHINESE28: DW 0BCE4H,0B8F4H;间隔
CHINESE29: DW 0D6D5H,0D6B5H;终值
CHINESE30: DW 0CFE0H,0D2C6H;相移
CHINESE31: DW 0B0A0H,0B0A0H,0B0A0H;
CHINESE32: DW 03A20H;:
CHINESE34: DW 03138H,03020H;180
CHINESE35: DW 03930H,02020H;90
CHINESE36: DW 03435H,02020H;45
CHINESE37: DW 03232H,02E35H;22.5
CHINESE38: DW 02031H,0312EH,03235H; 11.25
CHINESE40: DW 02E2EH,02E2EH,02E2EH;......
;*********************************************
; 液晶控制程序 ;
;*********************************************
;液晶初始化
SETUP: MOV A,#01H
LCALL WRITE_COM
MOV A,#00110000B
LCALL WRITE_COM
MOV A,#00000010B
LCALL WRITE_COM
MOV A,#00000100B
LCALL WRITE_COM
MOV A,#00001100B
LCALL WRITE_COM
MOV A,#00000001B
LCALL WRITE_COM
MOV A,#10000000B
LCALL WRITE_COM
LCALL DELAY1s
RET
;串行命令写入程序
WRITE_COM: LCALL DELAY1ms
SETB CS
PUSH ACC
MOV R0,#8
MOV A,#11111000B
COMM1: CLR C
RLC A
MOV SID,C
CLR SCLK
SETB SCLK
DJNZ R0,COMM1
POP ACC
MOV R5,A
ANL A,#0F0H
MOV R0,#8
COMM2: CLR C
RLC A
MOV SID,C
CLR SCLK
SETB SCLK
DJNZ R0,COMM2
MOV A,R5
SWAP A
ANL A,#0F0H
MOV R0,#8
COMM3: CLR C
RLC A
MOV SID,C
CLR SCLK
SETB SCLK
DJNZ R0,COMM3
CLR CS
RET
;串行数据写入程序
WRITE_DAT: LCALL DELAY1ms
SETB CS
PUSH ACC
MOV R0,#8
MOV A,#11111010B
DATA1: CLR C
RLC A
MOV SID,C
CLR SCLK
SETB SCLK
DJNZ R0,DATA1
POP ACC
MOV R5,A
ANL A,#0F0H
MOV R0,#8
DATA2: CLR C
RLC A
MOV SID,C
CLR SCLK
SETB SCLK
DJNZ R0,DATA2
MOV A,R5
SWAP A
ANL A,#0F0H
MOV R0,#8
DATA3: CLR C
RLC A
MOV SID,C
CLR SCLK
SETB SCLK
DJNZ R0,DATA3
CLR CS
RET
;16*16汉字写入程序
;7个
WRITE_HZ7:
MOV R4,#7
DD7: CLR A
MOVC A,@A+DPTR
INC DPTR
LCALL WRITE_DAT
CLR A
MOVC A,@A+DPTR
INC DPTR
LCALL WRITE_DAT
DJNZ R4,DD7
RET
;4个
WRITE_HZ4:
MOV R4,#4
DD4: CLR A
MOVC A,@A+DPTR
INC DPTR
LCALL WRITE_DAT
CLR A
MOVC A,@A+DPTR
INC DPTR
LCALL WRITE_DAT
DJNZ R4,DD4
RET
;3个
WRITE_HZ3:
MOV R4,#3
DD3: CLR A
MOVC A,@A+DPTR
INC DPTR
LCALL WRITE_DAT
CLR A
MOVC A,@A+DPTR
INC DPTR
LCALL WRITE_DAT
DJNZ R4,DD3
RET
;2个
WRITE_HZ2:
MOV R4,#2
DD2: CLR A
MOVC A,@A+DPTR
INC DPTR
LCALL WRITE_DAT
CLR A
MOVC A,@A+DPTR
INC DPTR
LCALL WRITE_DAT
DJNZ R4,DD2
RET
;1个
WRITE_HZ1:
MOV R4,#1
DD1: CLR A
MOVC A,@A+DPTR
INC DPTR
LCALL WRITE_DAT
CLR A
MOVC A,@A+DPTR
INC DPTR
LCALL WRITE_DAT
DJNZ R4,DD1
RET
;**********************************************
; 延时程序 ;
;**********************************************
;1ms 1,002us
DELAY1ms: MOV R7,#5BH
D1ms: MOV R6,#04H
DJNZ R6,$
DJNZ R7,D1ms
RET
;10ms 10,019us
DELAY10ms: MOV R7,#0E9H
D10ms: MOV R6,#14H
DJNZ R6,$
DJNZ R7,D10ms
RET
;100ms 100,231us
DELAY100ms: MOV R5,#0AH
D100ms: LCALL DELAY10ms
DJNZ R5,D100ms
RET
;1s 1,002,101us
DELAY1s: MOV R5,#64H
D1s: LCALL DELAY10ms
DJNZ R5,D1s
RET
;10s 10,023,301us
DELAY10s: MOV R4,#64H
D10s: LCALL DELAY100ms
DJNZ R4,D10s
RET
;100s 100,210,301us
DELAY100s: MOV R4,#64H
D100s: LCALL DELAY1s
DJNZ R4,D100s
RET
ZHLIANGPD:
LCALL CON_DIS
MOV A,DIS7
CJNE A,#00H,DIS7PDADD
MOV A,DIS6
CJNE A,#02H,DIS6PDADD61
DIS6PDADD61: JC DIS6PDADD62
LJMP DIS6PDADD
DIS6PDADD62: MOV A,DIS5
CJNE A,#00H,DIS5PDADD
MOV A,DIS4
CJNE A,#00H,DIS4PDADD
CLR C
MOV A,DIS3
CJNE A,#02H,DIS3PDADD31
DIS3PDADD31: JC DIS3PDADD32
LJMP DIS3PDADD
DIS3PDADD32: MOV A,DIS2
CJNE A,#00H,DIS2PDADD
MOV A,DIS1
CJNE A,#00H,DIS1PDADD
LJMP DIS0PDADD
DIS7PDADD: LJMP LCD3ADD
DIS6PDADD: LJMP LCD3ADD
DIS5PDADD: LJMP LCD2ADD
DIS4PDADD: LJMP LCD2ADD
DIS3PDADD: LJMP LCD2ADD
DIS2PDADD: LJMP LCD1ADD
DIS1PDADD: LJMP LCD1ADD
DIS0PDADD: LJMP LCD1ADD
LCD3ADD: MOV ZHLIANG0,#7CH ;1,000,000
MOV ZHLIANG1,#0E4H ;
MOV ZHLIANG2,#1EH ;
MOV ZHLIANG3,#05H ;
RET
LCD2ADD: MOV ZHLIANG0,#96H ;1,000
MOV ZHLIANG1,#4FH ;
MOV ZHLIANG2,#01H ;
MOV ZHLIANG3,#00H ;
RET
LCD1ADD: MOV ZHLIANG0,#55H ;1
MOV ZHLIANG1,#00H ;
MOV ZHLIANG2,#00H ;
MOV ZHLIANG3,#00H ;
RET
ZHLIANGPD2:
LCALL CON_DIS
MOV A,DIS7
CJNE A,#00H,LXDIS7PDADD
MOV A,DIS6
CJNE A,#02H,LXDIS6PDADD61
LXDIS6PDADD61:
JC LXDIS6PDADD62
LJMP LXDIS6PDADD
LXDIS6PDADD62:
MOV A,DIS5
CJNE A,#00H,LXDIS5PDADD
MOV A,DIS4
CJNE A,#00H,LXDIS4PDADD
CLR C
MOV A,DIS3
CJNE A,#09H,LXDIS3PDADD31
LXDIS3PDADD31:
JC LXDIS3PDADD32
LJMP LXDIS3PDADD
LXDIS3PDADD32:
MOV A,DIS2
CJNE A,#00H,LXDIS2PDADD
MOV A,DIS1
CJNE A,#00H,LXDIS1PDADD
LJMP LXDIS0PDADD
LXDIS7PDADD: LJMP LXLCD3ADD
LXDIS6PDADD: LJMP LXLCD3ADD
LXDIS5PDADD: LJMP LXLCD2ADD
LXDIS4PDADD: LJMP LXLCD2ADD
LXDIS3PDADD: LJMP LXLCD2ADD
LXDIS2PDADD: LJMP LXLCD1ADD
LXDIS1PDADD: LJMP LXLCD1ADD
LXDIS0PDADD: LJMP LXLCD1ADD
LXLCD3ADD: MOV ZHLIANG0,#7CH ;1,000,000
MOV ZHLIANG1,#0E4H ;
MOV ZHLIANG2,#1EH ;
MOV ZHLIANG3,#05H ;
RET
LXLCD2ADD: MOV ZHLIANG0,#4BH ;9,000 #0E2H
MOV ZHLIANG1,#0CCH ; #1BH
MOV ZHLIANG2,#0BH ; #0DH
MOV ZHLIANG3,#00H ; #00H
RET
LXLCD1ADD: MOV ZHLIANG0,#5BH ;10
MOV ZHLIANG1,#03H ;
MOV ZHLIANG2,#00H ;
MOV ZHLIANG3,#00H ;
RET
;*********************************************
; 频率控制程序 ;
;*********************************************
CSDPADD: LCALL DELAY100ms
LCALL DELAY100ms
LCALL DELAY100ms
CLR LB
MOV A,CON3
CLR C
;CJNE A,#2FH,CSDPADD1 ;晶振125M 最大频率限制FDDSmax=23.4MHZ M=30000000H
CJNE A,#4FH,CSDPADD1 ;晶振50M 最大频率限制FDDSmax=15MHZ M=50000000H
CSDPADD1: JC CSDPADD2
MOV CON0,#0FFH
MOV CON1,#0FFH
MOV CON2,#0FFH
MOV CON3,#4FH
LCALL SEND9850 ;写入AD9850
LCALL CON_DIS ;控制字转频率字
LCALL DISPLCD
SETB LB
RET
CSDPADD2: JNB KW3,CSDPADDLX
;MOV A,#22H ;125MHZ 50MHZ,55H
LCALL ZHLIANGPD
MOV A,ZHLIANG0
CLR C
ADD A,CON0
MOV CON0,A
MOV A,ZHLIANG1
ADDC A,CON1
MOV CON1,A
MOV A,ZHLIANG2
ADDC A,CON2
MOV CON2,A
MOV A,ZHLIANG3
ADDC A,CON3
MOV CON3,A
LJMP ADDPLAY11
CSDPADDLX: MOV A,CON3
CLR C
CJNE A,#4FH,CSDPADD11
CSDPADD11: JC CSDPADD22
MOV CON0,#0FFH
MOV CON1,#0FFH
MOV CON2,#0FFH
MOV CON3,#4FH
LCALL SEND9850 ;写入AD9850
LCALL CON_DIS ;控制字转频率字
LCALL DISPLCD
SETB LB
RET
CSDPADD22:
LCALL ZHLIANGPD2
MOV A,ZHLIANG0
CLR C
ADD A,CON0
MOV CON0,A
MOV A,ZHLIANG1
ADDC A,CON1
MOV CON1,A
MOV A,ZHLIANG2
ADDC A,CON2
MOV CON2,A
MOV A,ZHLIANG3
ADDC A,CON3
MOV CON3,A
LCALL SEND9850 ;写入AD9850
LCALL CON_DIS ;控制字转频率字
LCALL DISPLCD
JNB KW3,CSDPADDLX
LCALL DELAY1s
SETB LB
MAIN1: RET
CSDPSUBB: LCALL DELAY100ms
LCALL DELAY100ms
LCALL DELAY100ms
CLR LB
MOV A,CON3
CJNE A,#00H,CSDPSUBB1
MOV A,CON2
CJNE A,#00H,CSDPSUBB1
MOV A,CON1
CJNE A,#00H,CSDPSUBB1
MOV A,CON0
CLR C
;CJNE A,#22H,CSDPSUBB2 ;50MHZ,55H
CJNE A,#55H,CSDPSUBB2
LJMP MAIN11 ;CSDPSUBB1
CSDPSUBB2: JC MAIN11
CSDPSUBB1: JNB KW4,CSDPSUBBLX
LCALL ZHLIANGPD
MOV A,CON0
CLR C
SUBB A,ZHLIANG0
MOV CON0,A
MOV A,CON1
SUBB A,ZHLIANG1
MOV CON1,A
MOV A,CON2
SUBB A,ZHLIANG2
MOV CON2,A
MOV A,CON3
SUBB A,ZHLIANG3
MOV CON3,A
LJMP ADDPLAY11
CSDPSUBBLX: MOV A,CON3
CJNE A,#00H,CSDPSUBB3
MOV A,CON2
CJNE A,#00H,CSDPSUBB3
MOV A,CON1
CJNE A,#00H,CSDPSUBB3
MOV A,CON1
CLR C
CJNE A,ZHLIANG1,CSDPSUBB44
LJMP CSDPSUBB33
CSDPSUBB44: JC MAIN11
LJMP CSDPSUBB3
CSDPSUBB33: MOV A,CON0
CLR C
CJNE A,ZHLIANG0,CSDPSUBB4
LJMP CSDPSUBB3
MAIN11: MOV CON0,#55H
MOV CON1,#00H
MOV CON2,#00H
MOV CON3,#00H
LCALL SEND9850 ;写入AD9850
LCALL CON_DIS ;控制字转频率字
LCALL DISPLCD
SETB LB
LJMP MAIN1
CSDPSUBB4: JC MAIN11
CSDPSUBB3:
LCALL ZHLIANGPD2
MOV A,CON0
CLR C
SUBB A,ZHLIANG0
MOV CON0,A
MOV A,CON1
SUBB A,ZHLIANG1
MOV CON1,A
MOV A,CON2
SUBB A,ZHLIANG2
MOV CON2,A
MOV A,CON3
SUBB A,ZHLIANG3
MOV CON3,A
LCALL SEND9850 ;写入AD9850
LCALL CON_DIS ;控制字转频率字
LCALL DISPLCD
JNB KW4,CSDPSUBBLX
LCALL DELAY1s
SETB LB
RET
ADDPLAY11: LCALL SEND9850
LCALL CON_DIS
LCALL DISPLCD
LCALL DELAY1s
SETB LB
RET
;功能菜单
GNCDRET: JNB KW2,GNCDRET
CLR LED1
CLR EA
CLR ET0
CLR TR0
LCALL SINF
LJMP ADDPLAY
GNCD: JNB KW1,GNCD
GNCD1: LCALL SETUP
SETB LED1
CLR LB
MOV A,#80H
LCALL WRITE_COM
MOV DPTR,#CHINESE12
LCALL WRITE_HZ4
MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE31
LCALL WRITE_HZ1
MOV A,#85H
LCALL WRITE_COM
MOV DPTR,#CHINESE14
LCALL WRITE_HZ2
SETB EA
SETB ET0
SETB TR0
MOV MSXZT,#01H
GNCD2: MOV GNCDT,#01H
JNB KW1,PFXZ
JNB KW3,MSRR1
JNB KW4,MSRL
JNB KW2,GNCDRET
LJMP GNCD2
MSRR1: JNB KW3,MSRR1
LJMP MSRR
MSRL: JNB KW4,MSRL
LJMP MSRR
MSRR: MOV A,MSXZT
CJNE A,#01H,MSRR11
MOV MSXZT,#02H
LJMP GNCD2
MSRR11: MOV MSXZT,#01H
LJMP GNCD2
PFXZ:
JNB KW1,PFXZ
MOV A,MSXZT
CJNE A,#01H,PZLXZ11
LJMP FFSXZ
PZLXZ11:
LJMP PZLXZ
FSXZRET: JNB KW2,FSXZRET
CLR EA
LCALL SETUP
LJMP GNCD1
FFSXZ:
SETB LED2
SETB LED3
CLR LB
CLR EA
LCALL SETUP
MOV GNCDT,#02H
MOV FSXZT,#01H
SETB EA
SETB TR0
SETB ET0
FFSXZ1: MOV GNCDT,#02H
JNB KW1,DSTPXZ
JNB KW3,FSRR
JNB KW4,FSRL
JNB KW2,FSXZRET
LJMP FFSXZ1
FSRR: JNB KW3,FSRR
MOV A,FSXZT
CJNE A,#01H,FSRR1
MOV FSXZT,#02H
LJMP FFSXZ1
FSRR1:
CJNE A,#02H,FSRR2
MOV FSXZT,#03H
LJMP FFSXZ1
FSRR2: MOV FSXZT,#01H
LJMP FFSXZ1
FSRL: JNB KW4,FSRL
MOV A,FSXZT
CJNE A,#01H,FSRL1
MOV FSXZT,#03H
LJMP FFSXZ1
FSRL1:
CJNE A,#02H,FSRL2
MOV FSXZT,#01H
LJMP FFSXZ1
FSRL2: MOV FSXZT,#02H
LJMP FFSXZ1
DSTPXZ: JNB KW1,DSTPXZ
CLR EA
LCALL SETUP
SETB EA
MOV A,FSXZT
CJNE A,#01H,DSTPXZ1
LJMP DPSZ
DSTPXZ1: CJNE A,#02H,DSTPXZ2
LJMP SPSZ
DSTPXZ2: LJMP TPSZ
DPSZ:
CLR EA
CLR TR0
CLR ET0
MOV A,#82H
LCALL WRITE_COM
MOV DPTR,#CHINESE15
LCALL WRITE_HZ2
MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE14
LCALL WRITE_HZ2
MOV A,#90H
LCALL WRITE_COM
MOV DPTR,#CHINESE17
LCALL WRITE_HZ2
MOV A,#92H
LCALL WRITE_COM
MOV DPTR,#CHINESE21
LCALL WRITE_HZ2
MOV A,#94H
LCALL WRITE_COM
MOV DPTR,#CHINESE40
LCALL WRITE_HZ3
LCALL DELAY1s
LCALL DELAY1s
LCALL SETUP
MOV A,#80H
LCALL WRITE_COM
MOV DPTR,#CHINESE22
LCALL WRITE_HZ2
MOV A,#82H
LCALL WRITE_COM
MOV DPTR,#CHINESE17
LCALL WRITE_HZ2
MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE40
LCALL WRITE_HZ3
LCALL DISPLCD
DPSZ1: CLR LED1
JNB KW1,DPOVER
JNB KW3,DPADD
JNB KW4,DPSUBB
LJMP DPSZ1
DPADD: LCALL CSDPADD
LJMP DPSZ1
DPSUBB: LCALL CSDPSUBB
LJMP DPSZ1
DPOVER: JNB KW1,DPOVER
LCALL SETUP
MOV A,#82H
LCALL WRITE_COM
MOV DPTR,#CHINESE17
LCALL WRITE_HZ2
MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE23
LCALL WRITE_HZ2
MOV A,#93H
LCALL WRITE_COM
MOV DPTR,#CHINESE24
LCALL WRITE_HZ2
LCALL DELAY1s
LCALL DELAY1s
LCALL DELAY1s
LCALL DELAY1s
SETB LED1
SETB EA
SETB TR0
SETB ET0
LJMP FFSXZ
SPSZRET: LCALL DELAY10ms
JNB KW2,SPSZRET
MOV CON3,RCON3
MOV CON2,RCON2
MOV CON1,RCON1
MOV CON0,RCON0
LJMP FFSXZ
SPSZ: MOV RCON3,CON3
MOV RCON2,CON2
MOV RCON1,CON1
MOV RCON0,CON0
CLR EA
CLR TR0
CLR ET0
MOV A,#80H ;初值
LCALL WRITE_COM
MOV DPTR,#CHINESE25
LCALL WRITE_HZ3
MOV A,#83H
LCALL WRITE_COM
MOV DPTR,#CHINESE18
LCALL WRITE_HZ2
MOV A,#85H
LCALL WRITE_COM
MOV DPTR,#CHINESE27
LCALL WRITE_HZ2
LCALL SZCSZ
SETB EA
SETB TR0
SETB ET0
CLR LED2
MOV GNCDT,#04H
LCALL SPSZ1
LJMP SZDIS9
SPSZ1: MOV PLSZT,#08H
JNB KW1,SZDIS6
JNB KW3,DIS7ADD
JNB KW4,DIS7SUBB
JNB KW2,SPSZRET
LJMP SPSZ1
DIS7ADD: LCALL DELAY10ms
JNB KW3,DIS7ADD
MOV A,DIS7
LCALL ADD1
MOV DIS7,A
LJMP SPSZ1
DIS7SUBB: LCALL DELAY10ms
JNB KW4,DIS7SUBB
MOV A,DIS7
LCALL SUBB1
MOV DIS7,A
LJMP SPSZ1
SZDIS6: LCALL DELAY10ms
JNB KW1,SZDIS6
SZDIS61: MOV PLSZT,#07H
JNB KW1,SZDIS5
JNB KW3,DIS6ADD
JNB KW4,DIS6SUBB
JNB KW2,SZDIS7
LJMP SZDIS61
SZDIS7: LCALL DELAY10ms
JNB KW2,SZDIS7
LJMP SPSZ1
DIS6ADD: LCALL DELAY10ms
JNB KW3,DIS6ADD
MOV A,DIS6
LCALL ADD1
MOV DIS6,A
LJMP SZDIS61
DIS6SUBB: LCALL DELAY10ms
JNB KW4,DIS6SUBB
MOV A,DIS6
LCALL SUBB1
MOV DIS6,A
LJMP SZDIS61
SZDIS5: LCALL DELAY10ms
JNB KW1,SZDIS5
SZDIS51: MOV PLSZT,#06H
JNB KW1,SZDIS4
JNB KW3,DIS5ADD
JNB KW4,DIS5SUBB
JNB KW2,SZDIS62
LJMP SZDIS51
SZDIS62: LCALL DELAY10ms
JNB KW2,SZDIS62
LJMP SZDIS61
DIS5ADD: LCALL DELAY10ms
JNB KW3,DIS5ADD
MOV A,DIS5
LCALL ADD1
MOV DIS5,A
LJMP SZDIS51
DIS5SUBB: LCALL DELAY10ms
JNB KW4,DIS5SUBB
MOV A,DIS5
LCALL SUBB1
MOV DIS5,A
LJMP SZDIS51
SZDIS4: LCALL DELAY10ms
JNB KW1,SZDIS4
SZDIS41: MOV PLSZT,#05H
JNB KW1,SZDIS3
JNB KW3,DIS4ADD
JNB KW4,DIS4SUBB
JNB KW2,SZDIS52
LJMP SZDIS41
SZDIS52: LCALL DELAY10ms
JNB KW2,SZDIS52
LJMP SZDIS51
DIS4ADD: LCALL DELAY10ms
JNB KW3,DIS4ADD
MOV A,DIS4
LCALL ADD1
MOV DIS4,A
LJMP SZDIS41
DIS4SUBB: LCALL DELAY10ms
JNB KW4,DIS4SUBB
MOV A,DIS4
LCALL SUBB1
MOV DIS4,A
LJMP SZDIS41
SZDIS3: LCALL DELAY10ms
JNB KW1,SZDIS3
SZDIS31: MOV PLSZT,#04H
JNB KW1,SZDIS2
JNB KW3,DIS3ADD
JNB KW4,DIS3SUBB
JNB KW2,SZDIS42
LJMP SZDIS31
SZDIS42: LCALL DELAY10ms
JNB KW2,SZDIS42
LJMP SZDIS41
DIS3ADD: LCALL DELAY10ms
JNB KW3,DIS3ADD
MOV A,DIS3
LCALL ADD1
MOV DIS3,A
LJMP SZDIS31
DIS3SUBB: LCALL DELAY10ms
JNB KW4,DIS3SUBB
MOV A,DIS3
LCALL SUBB1
MOV DIS3,A
LJMP SZDIS31
SZDIS2: LCALL DELAY10ms
JNB KW1,SZDIS2
SZDIS21: MOV PLSZT,#03H
JNB KW1,SZDIS1
JNB KW3,DIS2ADD
JNB KW4,DIS2SUBB
JNB KW2,SZDIS32
LJMP SZDIS21
SZDIS32: LCALL DELAY10ms
JNB KW2,SZDIS32
LJMP SZDIS31
DIS2ADD: LCALL DELAY10ms
JNB KW3,DIS2ADD
MOV A,DIS2
LCALL ADD1
MOV DIS2,A
LJMP SZDIS21
DIS2SUBB: LCALL DELAY10ms
JNB KW4,DIS2SUBB
MOV A,DIS2
LCALL SUBB1
MOV DIS2,A
LJMP SZDIS21
SZDIS1: LCALL DELAY10ms
JNB KW1,SZDIS1
SZDIS11: MOV PLSZT,#02H
JNB KW1,SZDIS0
JNB KW3,DIS1ADD
JNB KW4,DIS1SUBB
JNB KW2,SZDIS22
LJMP SZDIS11
SZDIS22: LCALL DELAY10ms
JNB KW2,SZDIS22
LJMP SZDIS21
DIS1ADD: LCALL DELAY10ms
JNB KW3,DIS1ADD
MOV A,DIS1
LCALL ADD1
MOV DIS1,A
LJMP SZDIS11
DIS1SUBB: LCALL DELAY10ms
JNB KW4,DIS1SUBB
MOV A,DIS1
LCALL SUBB1
MOV DIS1,A
LJMP SZDIS11
SZDIS0: LCALL DELAY10ms
JNB KW1,SZDIS0
SZDIS01: MOV PLSZT,#01H
JNB KW1,SZDIS99
JNB KW3,DIS0ADD
JNB KW4,DIS0SUBB
JNB KW2,SZDIS12
LJMP SZDIS01
SZDIS12: LCALL DELAY10ms
JNB KW2,SZDIS12
LJMP SZDIS11
DIS0ADD: LCALL DELAY10ms
JNB KW3,DIS0ADD
MOV A,DIS0
LCALL ADD1
MOV DIS0,A
LJMP SZDIS01
DIS0SUBB: LCALL DELAY10ms
JNB KW4,DIS0SUBB
MOV A,DIS0
LCALL SUBB1
MOV DIS0,A
LJMP SZDIS01
SZDIS99: LCALL DELAY10ms
JNB KW1,SZDIS99
RET
SZCSZ: MOV DIS7,#09H
MOV DIS6,#09H
MOV DIS5,#09H
MOV DIS4,#00H
MOV DIS3,#00H
MOV DIS2,#00H
MOV DIS1,#00H
MOV DIS0,#00H
RET
SZDIS9: CLR EA
CLR TR0
CLR ET0
LCALL DISBCD_CON
MOV FCON3,CON3
MOV FCON2,CON2
MOV FCON1,CON1
MOV FCON0,CON0
LCALL SETUP
MOV A,#80H ;增量
LCALL WRITE_COM
MOV DPTR,#CHINESE25
LCALL WRITE_HZ3
MOV A,#83H
LCALL WRITE_COM
MOV DPTR,#CHINESE18
LCALL WRITE_HZ2
MOV A,#85H
LCALL WRITE_COM
MOV DPTR,#CHINESE20
LCALL WRITE_HZ2
LCALL SZCSZ
SETB EA
SETB TR0
SETB ET0
LCALL SPSZ1
CLR EA
CLR TR0
CLR ET0
LCALL DISBCD_CON
MOV ZCON3,CON3
MOV ZCON2,CON2
MOV ZCON1,CON1
MOV ZCON0,CON0
LCALL SETUP
MOV A,#80H ;间隔
LCALL WRITE_COM
MOV DPTR,#CHINESE25
LCALL WRITE_HZ3
MOV A,#83H
LCALL WRITE_COM
MOV DPTR,#CHINESE18
LCALL WRITE_HZ2
MOV A,#85H
LCALL WRITE_COM
MOV DPTR,#CHINESE28
LCALL WRITE_HZ2
MOV GNCDT,#06H
LCALL SZCSZ
MOV DIS7,#00H
MOV DIS6,#00H
SETB EA
SETB TR0
SETB ET0
JGSZDIS5: MOV PLSZT,#06H
JNB KW1,JGSZDIS4
JNB KW3,JGDIS5ADD
JNB KW4,JGDIS5SUBB
JNB KW2,SPSZRET1
LJMP JGSZDIS5
SPSZRET1: LJMP SPSZRET
JGDIS5ADD: LCALL DELAY10ms
JNB KW3,JGDIS5ADD
MOV A,DIS5
LCALL ADD1
MOV DIS5,A
LJMP JGSZDIS5
JGDIS5SUBB: LCALL DELAY10ms
JNB KW4,JGDIS5SUBB
MOV A,DIS5
LCALL SUBB1
MOV DIS5,A
LJMP JGSZDIS5
JGSZDIS4: LCALL SZDIS4
CLR EA
CLR TR0
CLR ET0
MOV JDIS5,DIS5
MOV JDIS4,DIS4
MOV JDIS3,DIS3
MOV JDIS2,DIS2
MOV JDIS1,DIS1
MOV JDIS0,DIS0
LCALL SETUP
MOV A,#80H ;终值
LCALL WRITE_COM
MOV DPTR,#CHINESE25
LCALL WRITE_HZ3
MOV A,#83H
LCALL WRITE_COM
MOV DPTR,#CHINESE18
LCALL WRITE_HZ2
MOV A,#85H
LCALL WRITE_COM
MOV DPTR,#CHINESE29
LCALL WRITE_HZ2
MOV GNCDT,#04H
LCALL SZCSZ
SETB EA
SETB TR0
SETB ET0
LCALL SPSZ1
CLR EA
CLR TR0
CLR ET0
LCALL DISBCD_CON
MOV LCON3,CON3
MOV LCON2,CON2
MOV LCON1,CON1
MOV LCON0,CON0
LCALL SETUP
MOV A,#80H
LCALL WRITE_COM
MOV DPTR,#CHINESE22
LCALL WRITE_HZ2
MOV A,#82H
LCALL WRITE_COM
MOV DPTR,#CHINESE18
LCALL WRITE_HZ2
MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE40
LCALL WRITE_HZ3
SPJXZ: MOV CON3,FCON3
MOV CON2,FCON2
MOV CON1,FCON1
MOV CON0,FCON0
LCALL SEND9850
LCALL CON_DIS
LCALL DISPLCD
LCALL SPJGJS
LCALL SPZLJS
CLR C
MOV A,FCON3
CJNE A,LCON3,SPJXZ11
LJMP SPJXZ2
SPJXZ11: JC SPJXZ0
LJMP SPJXZ00
SPJXZ2: CLR C
MOV A,FCON2
CJNE A,LCON2,SPJXZ11
LJMP SPJXZ3
SPJXZ3: CLR C
MOV A,FCON1
CJNE A,LCON1,SPJXZ11
LJMP SPJXZ4
SPJXZ4: CLR C
MOV A,FCON0
CJNE A,LCON0,SPJXZ11
LJMP SPJXZ00
SPJXZ0: LJMP SPJXZ
SPJXZ00: MOV CON3,LCON3
MOV CON2,LCON2
MOV CON1,LCON1
MOV CON0,LCON0
LCALL SEND9850
LCALL CON_DIS
LCALL DISPLCD
MOV A,#80H
LCALL WRITE_COM
MOV DPTR,#CHINESE18
LCALL WRITE_HZ2
MOV A,#82H
LCALL WRITE_COM
MOV DPTR,#CHINESE23
LCALL WRITE_HZ2
MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE31
LCALL WRITE_HZ2
MOV A,#85H
LCALL WRITE_COM
MOV DPTR,#CHINESE24
LCALL WRITE_HZ2
MOV GNCDT,#07H
SETB EA
SETB TR0
SETB ET0
SPJSRET: JNB KW1,SPJXERT1
LJMP SPJSRET
SPJXERT1: JNB KW1,SPJXERT1
CLR EA
CLR TR0
CLR ET0
LJMP FFSXZ
SPJGJS: INC JDIS5
INC JDIS4
INC JDIS3
INC JDIS2
INC JDIS1
INC JDIS0
JG1: DJNZ JDIS5,JG11
JG2: DJNZ JDIS4,JG22
JG3: DJNZ JDIS3,JG33
JG4: DJNZ JDIS2,JG44
JG5: DJNZ JDIS1,JG55
JG6: DJNZ JDIS0,JG66
RET
JG11: LCALL DELAY100s
LJMP JG1
JG22: LCALL DELAY10s
LJMP JG2
JG33: LCALL DELAY1s
LJMP JG3
JG44: LCALL DELAY100ms
LJMP JG4
JG55: LCALL DELAY10ms
LJMP JG5
JG66: LCALL DELAY1ms
LJMP JG6
SPZLJS: CLR C
MOV A,FCON0
ADD A,ZCON0
MOV FCON0,A
MOV A,FCON1
ADDC A,ZCON1
MOV FCON1,A
MOV A,FCON2
ADDC A,ZCON2
MOV FCON2,A
MOV A,FCON3
ADDC A,ZCON3
MOV FCON3,A
RET
;加法程序
ADD1: ADD A,#01H
CJNE A,#0AH,ADD2
CLR A
ADD2: RET
;减法程序
SUBB1: SUBB A,#01H
CJNE A,#0FFH,SUBB2
MOV A,#09H
SUBB2: RET
TPSZ: CLR EA
CLR TR0
CLR ET0
MOV A,#80H
LCALL WRITE_COM
MOV DPTR,#CHINESE25
LCALL WRITE_HZ3
MOV A,#83H
LCALL WRITE_COM
MOV DPTR,#CHINESE19
LCALL WRITE_HZ2
MOV A,#85H
LCALL WRITE_COM
MOV DPTR,#CHINESE29
LCALL WRITE_HZ2
CLR LED3
MOV RCON3,CON3
MOV RCON2,CON2
MOV RCON1,CON1
MOV RCON0,CON0
LCALL SZCSZ
MOV GNCDT,#05H
SETB EA
SETB TR0
SETB ET0
LCALL SPSZ1
CLR EA
CLR TR0
CLR ET0
LCALL DISBCD_CON
LCALL SEND9850
LCALL CON_DIS
LCALL DISPLCD
MOV A,#80H
LCALL WRITE_COM
MOV DPTR,#CHINESE19
LCALL WRITE_HZ2
MOV A,#82H
LCALL WRITE_COM
MOV DPTR,#CHINESE23
LCALL WRITE_HZ2
MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE31
LCALL WRITE_HZ2
MOV A,#85H
LCALL WRITE_COM
MOV DPTR,#CHINESE24
LCALL WRITE_HZ2
MOV GNCDT,#08H
SETB EA
SETB TR0
SETB ET0
TPJSRET: JNB KW1,TPJSRET1
LJMP TPJSRET
TPJSRET1: JNB KW1,TPJSRET1
SETB LED3
CLR EA
CLR TR0
CLR ET0
LJMP FFSXZ
PZLXZ: SETB EA
SETB TR0
SETB ET0
CLR EA
LCALL SETUP
SETB EA
CLR LED3
MOV GNCDT,#03H
MOV XWZLT,#01H
PZLXZ1: JNB KW1,XWZLXZ
JNB KW3,ZLRR
JNB KW4,ZLRL
JNB KW2,PZLXZRET
LJMP PZLXZ1
PZLXZRET: JNB KW2,PZLXZRET
SETB LED3
CLR EA
CLR TR0
CLR ET0
LJMP GNCD1
ZLRR: JNB KW3,ZLRR
MOV A,XWZLT
CJNE A,#01H,ZLRR1
MOV XWZLT,#02H
LJMP PZLXZ1
ZLRR1: CJNE A,#02H,ZLRR2
MOV XWZLT,#03H
LJMP PZLXZ1
ZLRR2: CJNE A,#03H,ZLRR3
MOV XWZLT,#04H
LJMP PZLXZ1
ZLRR3: CJNE A,#04H,ZLRR4
MOV XWZLT,#05H
LJMP PZLXZ1
ZLRR4: MOV XWZLT,#01H
LJMP PZLXZ1
ZLRL: JNB KW4,ZLRL
MOV A,XWZLT
CJNE A,#01H,ZLRL1
MOV XWZLT,#05H
LJMP PZLXZ1
ZLRL1: CJNE A,#02H,ZLRL2
MOV XWZLT,#01H
LJMP PZLXZ1
ZLRL2: CJNE A,#03H,ZLRL3
MOV XWZLT,#02H
LJMP PZLXZ1
ZLRL3: CJNE A,#04H,ZLRL4
MOV XWZLT,#03H
LJMP PZLXZ1
ZLRL4: MOV XWZLT,#04H
LJMP PZLXZ1
XWZLXZ: JNB KW1,XWZLXZ
CLR EA
CLR TR0
CLR ET0
CLR A
MOV PHASE,A
LCALL SETUP
MOV A,#80H
LCALL WRITE_COM
MOV DPTR,#CHINESE30
LCALL WRITE_HZ2
MOV A,#82H
LCALL WRITE_COM
MOV DPTR,#CHINESE20
LCALL WRITE_HZ2
MOV A,#90H
LCALL WRITE_COM
MOV DPTR,#CHINESE16
LCALL WRITE_HZ2
MOV A,#96H
LCALL WRITE_COM
MOV DPTR,#CHINESE26
LCALL WRITE_HZ1
MOV A,#92H
LCALL WRITE_COM
MOV DPTR,#CHINESE32
LCALL WRITE_HZ1
MOV A,XWZLT
CJNE A,#01H,XWZLXZ2
LJMP ZL180SZ
XWZLXZ2: CJNE A,#02H,XWZLXZ3
LJMP ZL90SZ
XWZLXZ3: CJNE A,#03H,XWZLXZ4
LJMP ZL45SZ
XWZLXZ4: CJNE A,#04H,XWZLXZ5
LJMP ZL225SZ
XWZLXZ5: LJMP ZL1125SZ
ZL180SZ: MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE34
LCALL WRITE_HZ2
MOV PHCON1,#04H;1125
MOV PHCON0,#65H;
;MOV PHCON1,#46H;18000
;MOV PHCON0,#50H;
ZL180SZ1: JNB KW1,PHOVER
JNB KW3,PH180ADD
JNB KW4,PH180SUBB
LCALL SEND9850PH
LCALL PHCON_DIS
LCALL PHDISPLCD
LJMP ZL180SZ1
PHOVER: JNB KW1,PHOVER
CLR EA
LCALL SETUP
MOV A,#82H
LCALL WRITE_COM
MOV DPTR,#CHINESE30
LCALL WRITE_HZ2
MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE23
LCALL WRITE_HZ2
MOV A,#93H
LCALL WRITE_COM
MOV DPTR,#CHINESE24
LCALL WRITE_HZ2
LCALL DELAY1s
LCALL DELAY1s
LCALL DELAY1s
LJMP PZLXZ
PH180ADD: JNB KW3,PH180ADD
MOV B,#10H
LCALL ADDPH
LJMP ZL180SZ1
PH180SUBB: JNB KW4,PH180SUBB
MOV B,#10H
LCALL SUBBPH
LJMP ZL180SZ1
ADDPH: MOV A,PHASE
ADD A,B
MOV PHASE,A
CJNE A,#20H,ADDPH1
CLR A
MOV PHASE,A
ADDPH1: RET
SUBBPH: CLR C
MOV A,PHASE
SUBB A,B
MOV PHASE,A
JC SUBBPH2
RET
SUBBPH2: CJNE A,#0FFH,SUBBPH3
MOV PHASE,#1FH
RET
SUBBPH3: CJNE A,#0FEH,SUBBPH4
MOV PHASE,#1EH
RET
SUBBPH4: CJNE A,#0FCH,SUBBPH5
MOV PHASE,#1CH
RET
SUBBPH5: CJNE A,#0F8H,SUBBPH6
MOV PHASE,#18H
RET
SUBBPH6: MOV PHASE,#10H
RET
PHCON_DIS: MOV R3,PHCON1
MOV R2,PHCON0
MOV R1,#00H
MOV R0,PHASE
LCALL MUL2BY2
MOV R3,#27H;10,000
MOV R2,#10H;
LCALL DIV4BY2
MOV PHDIS4,R4
MOV A,R1
MOV R5,A
MOV A,R0
MOV R4,A
MOV R3,#03H;1,000
MOV R2,#0E8H;
LCALL DIV4BY2
MOV PHDIS3,R4
MOV A,R1
MOV R5,A
MOV A,R0
MOV R4,A
MOV R3,#00H;100
MOV R2,#64H;
LCALL DIV4BY2
MOV PHDIS2,R4
MOV A,R1
MOV R5,A
MOV A,R0
MOV R4,A
MOV R3,#00H;10
MOV R2,#0AH;
LCALL DIV4BY2
MOV PHDIS1,R4
MOV PHDIS0,R0
RET
PHDISPLCD:
MOV A,PHDIS4
CJNE A,#00H,PHDIS4PD
MOV PHDIS4,#0AH
MOV A,PHDIS3
CJNE A,#00H,PHDIS3PD
MOV PHDIS3,#0AH
MOV A,PHDIS2
CJNE A,#00H,PHDIS2PD
MOV PHDIS2,#0AH
MOV A,PHDIS1
CJNE A,#00H,PHDIS1PD
MOV PHDIS1,#0AH
LJMP PHDIS0PD
PHDIS4PD: LJMP PHLCD2
PHDIS3PD: LJMP PHLCD2
PHDIS2PD: LJMP PHLCD2
PHDIS1PD: LJMP PHLCD1
PHDIS0PD: LJMP PHLCD1
PHLCD2: MOV 70H,PHDIS4
MOV 71H,PHDIS3
MOV 72H,PHDIS2
MOV 73H,#0BH
MOV 74H,PHDIS1
MOV 75H,PHDIS0
LJMP PHDISPLAY
PHLCD1: MOV 70H,PHDIS4
MOV 71H,PHDIS3
MOV 72H,PHDIS2
MOV 73H,#0AH
MOV 74H,PHDIS1
MOV 75H,PHDIS0
LJMP PHDISPLAY
PHDISPLAY: MOV A,#93H
LCALL WRITE_COM
MOV R1,#70H
MOV DPTR,#TABLE
MOV R2,#06H
MOV A,#00H
PHMOVCLOP: MOV A,@R1
MOVC A,@A+DPTR
LCALL WRITE_DAT
INC R1
DJNZ R2,PHMOVCLOP
MOV A,PHDIS4
CJNE A,#0AH,RPHDIS1
MOV PHDIS4,#00H
RPHDIS1: MOV A,PHDIS3
CJNE A,#0AH,RPHDIS2
MOV PHDIS3,#00H
RPHDIS2: MOV A,PHDIS2
CJNE A,#0AH,RPHDIS3
MOV PHDIS2,#00H
RPHDIS3: MOV A,PHDIS1
CJNE A,#0AH,RPHDIS4
MOV PHDIS1,#00H
RPHDIS4: RET
ZL90SZ: MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE35
LCALL WRITE_HZ2
MOV PHCON1,#04H;1125
MOV PHCON0,#65H;
;MOV PHCON1,#23H;9000
;MOV PHCON0,#28H;
ZL90SZ1: JNB KW1,PHOVER1
JNB KW3,PH90ADD
JNB KW4,PH90SUBB
LCALL SEND9850PH
LCALL PHCON_DIS
LCALL PHDISPLCD
LJMP ZL90SZ1
PH90ADD: JNB KW3,PH90ADD
MOV B,#08H
LCALL ADDPH
LJMP ZL90SZ1
PH90SUBB: JNB KW4,PH90SUBB
MOV B,#08H
LCALL SUBBPH
LJMP ZL90SZ1
ZL45SZ: MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE36
LCALL WRITE_HZ2
MOV PHCON1,#04H;1125
MOV PHCON0,#65H;
;MOV PHCON1,#11H;4500
;MOV PHCON0,#94H;
ZL45SZ1: JNB KW1,PHOVER1
JNB KW3,PH45ADD
JNB KW4,PH45SUBB
LCALL SEND9850PH
LCALL PHCON_DIS
LCALL PHDISPLCD
LJMP ZL45SZ1
PH45ADD: JNB KW3,PH45ADD
MOV B,#04H
LCALL ADDPH
LJMP ZL45SZ1
PH45SUBB: JNB KW4,PH45SUBB
MOV B,#04H
LCALL SUBBPH
LJMP ZL45SZ1
PHOVER1: LJMP PHOVER
ZL225SZ: MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE37
LCALL WRITE_HZ2
MOV PHCON1,#04H;1125
MOV PHCON0,#65H;
;MOV PHCON1,#08H;2250
;MOV PHCON0,#0CAH;
ZL225SZ1: JNB KW1,PHOVER1
JNB KW3,PH225ADD
JNB KW4,PH225SUBB
LCALL SEND9850PH
LCALL PHCON_DIS
LCALL PHDISPLCD
LJMP ZL225SZ1
PH225ADD: JNB KW3,PH225ADD
MOV B,#02H
LCALL ADDPH
LJMP ZL225SZ1
PH225SUBB: JNB KW4,PH225SUBB
MOV B,#02H
LCALL SUBBPH
LJMP ZL225SZ1
ZL1125SZ: MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE38
LCALL WRITE_HZ3
MOV PHCON1,#04H;1125
MOV PHCON0,#65H;
ZL1125SZ1: JNB KW1,PHOVER1
JNB KW3,PH1125ADD
JNB KW4,PH1125SUBB
LCALL SEND9850PH
LCALL PHCON_DIS
LCALL PHDISPLCD
LJMP ZL1125SZ1
PH1125ADD: JNB KW3,PH1125ADD
MOV B,#01H
LCALL ADDPH
LJMP ZL1125SZ1
PH1125SUBB: JNB KW4,PH1125SUBB
MOV B,#01H
LCALL SUBBPH
LJMP ZL1125SZ1
;设置闪烁中断
INTT0: PUSH ACC
PUSH PSW
CLR EA
CLR TR0
CLR ET0
MOV TL0,#0B0H;50ms
MOV TH0,#3CH; 定时
DJNZ IT03,INTOUT
MOV IT03,#06H
LJMP SSWPD
INTOUT: SETB EA
SETB TR0
SETB ET0
POP PSW
POP ACC
RETI
SSWPD: MOV A,GNCDT
CJNE A,#01H,SSWPD1
LJMP SSMSPD
SSWPD1: CJNE A,#02H,SSWPD2
LJMP SSFSPD
SSWPD2: CJNE A,#03H,SSWPD3
LJMP SSXWPD
SSWPD3: CJNE A,#04H,SSWPD4
LJMP SSSPPD
SSWPD4: CJNE A,#05H,SSWPD5
LJMP SSTPPD
SSWPD5: CJNE A,#06H,SSWPD6
LJMP SSJGPD
SSWPD6: CJNE A,#07H,SSWPD7
LJMP SSFHPDS
SSWPD7: LJMP SSFHPDT
;跳频闪
SSTPPD: LJMP SSSPPD
SSFHPDT: LJMP SSFHPDS
;模式闪
SSMSPD: MOV A,MSXZT
CJNE A,#01H,SSMSPD1
LJMP SSMSF
SSMSPD1: LJMP SSMSPH
;方式闪
SSFSPD: LCALL SSFSD2
MOV A,FSXZT
CJNE A,#01H,SSFSPD1
LJMP SSFSD
SSFSPD1: CJNE A,#02H,SSFSPD2
LJMP SSFSS
SSFSPD2: LJMP SSFST
;增量闪
SSXWPD: LCALL SSXWD2
MOV A,XWZLT
CJNE A,#01H,SSXWPD1
LJMP SSXW180
SSXWPD1: CJNE A,#02H,SSXWPD2
LJMP SSXW90
SSXWPD2: CJNE A,#03H,SSXWPD3
LJMP SSXW45
SSXWPD3: CJNE A,#04H,SSXWPD4
LJMP SSXW225
SSXWPD4: LJMP SSXW1125
;扫频闪
SSSPPD: MOV A,PLSZT
CJNE A,#01H,SSSPPD1
LJMP SSSP0
SSSPPD1: CJNE A,#02H,SSSPPD2
LJMP SSSP1
SSSPPD2: CJNE A,#03H,SSSPPD3
LJMP SSSP2
SSSPPD3: CJNE A,#04H,SSSPPD4
LJMP SSSP3
SSSPPD4: CJNE A,#05H,SSSPPD5
LJMP SSSP4
SSSPPD5: CJNE A,#06H,SSSPPD6
LJMP SSSP5
SSSPPD6: CJNE A,#07H,SSSPPD7
LJMP SSSP6
SSSPPD7: LJMP SSSP7
;调间隔闪
SSJGPD: LJMP SSSPPD
;扫调频返回闪
SSFHPDS: CPL 00H
JB 00H,SSFHPDS1
MOV A,#85H
LCALL WRITE_COM
MOV DPTR,#CHINESE24
LCALL WRITE_HZ2
LJMP INTOUT
SSFHPDS1: MOV A,#85H
LCALL WRITE_COM
MOV DPTR,#CHINESE31
LCALL WRITE_HZ2
LJMP INTOUT
;模频闪
SSMSF: CPL 00H
JB 00H,SSMSF1
MOV A,#91H
LCALL WRITE_COM
MOV DPTR,#CHINESE15
LCALL WRITE_HZ2
MOV A,#95H
LCALL WRITE_COM
MOV DPTR,#CHINESE16
LCALL WRITE_HZ2
LJMP INTOUT
SSMSF1: MOV A,#91H
LCALL WRITE_COM
MOV DPTR,#CHINESE31
LCALL WRITE_HZ2
MOV A,#95H
LCALL WRITE_COM
MOV DPTR,#CHINESE16
LCALL WRITE_HZ2
LJMP INTOUT
;模相闪
SSMSPH: CPL 00H
JB 00H,SSMSPH1
MOV A,#91H
LCALL WRITE_COM
MOV DPTR,#CHINESE15
LCALL WRITE_HZ2
MOV A,#95H
LCALL WRITE_COM
MOV DPTR,#CHINESE16
LCALL WRITE_HZ2
LJMP INTOUT
SSMSPH1: MOV A,#91H
LCALL WRITE_COM
MOV DPTR,#CHINESE15
LCALL WRITE_HZ2
MOV A,#95H
LCALL WRITE_COM
MOV DPTR,#CHINESE31
LCALL WRITE_HZ2
LJMP INTOUT
;方点闪
SSFSD: CPL 00H
JB 00H,SSFSD1
LCALL SSFSD2
LJMP INTOUT
SSFSD2: MOV A,#80H
LCALL WRITE_COM
MOV DPTR,#CHINESE13
LCALL WRITE_HZ4
MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE32
LCALL WRITE_HZ1
MOV A,#85H
LCALL WRITE_COM
MOV DPTR,#CHINESE17
LCALL WRITE_HZ2
MOV A,#91H
LCALL WRITE_COM
MOV DPTR,#CHINESE18
LCALL WRITE_HZ2
MOV A,#94H
LCALL WRITE_COM
MOV DPTR,#CHINESE19
LCALL WRITE_HZ2
RET
SSFSD1: MOV A,#85H
LCALL WRITE_COM
MOV DPTR,#CHINESE31
LCALL WRITE_HZ2
LJMP INTOUT
SSFSS: CPL 00H
JB 00H,SSFSS1
LCALL SSFSD2
LJMP INTOUT
SSFSS1: MOV A,#91H
LCALL WRITE_COM
MOV DPTR,#CHINESE31
LCALL WRITE_HZ2
LJMP INTOUT
SSFST: CPL 00H
JB 00H,SSFST1
LCALL SSFSD2
LJMP INTOUT
SSFST1: MOV A,#94H
LCALL WRITE_COM
MOV DPTR,#CHINESE31
LCALL WRITE_HZ2
LJMP INTOUT
SSXWD2: MOV A,#80H
LCALL WRITE_COM
MOV DPTR,#CHINESE20
LCALL WRITE_HZ2
MOV A,#82H
LCALL WRITE_COM
MOV DPTR,#CHINESE26
LCALL WRITE_HZ2
MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE34
LCALL WRITE_HZ2
MOV A,#86H
LCALL WRITE_COM
MOV DPTR,#CHINESE35
LCALL WRITE_HZ1
MOV A,#90H
LCALL WRITE_COM
MOV DPTR,#CHINESE36
LCALL WRITE_HZ2
MOV A,#92H
LCALL WRITE_COM
MOV DPTR,#CHINESE37
LCALL WRITE_HZ2
MOV A,#94H
LCALL WRITE_COM
MOV DPTR,#CHINESE38
LCALL WRITE_HZ3
RET
SSXW180: CPL 00H
JB 00H,SSXW1801
LCALL SSXWD2
LJMP INTOUT
SSXW1801: MOV A,#84H
LCALL WRITE_COM
MOV DPTR,#CHINESE31
LCALL WRITE_HZ2
LJMP INTOUT
SSXW90: CPL 00H
JB 00H,SSXW901
LCALL SSXWD2
LJMP INTOUT
SSXW901: MOV A,#86H
LCALL WRITE_COM
MOV DPTR,#CHINESE31
LCALL WRITE_HZ2
LJMP INTOUT
SSXW45: CPL 00H
JB 00H,SSXW451
LCALL SSXWD2
LJMP INTOUT
SSXW451: MOV A,#90H
LCALL WRITE_COM
MOV DPTR,#CHINESE31
LCALL WRITE_HZ2
LJMP INTOUT
SSXW225: CPL 00H
JB 00H,SSXW2251
LCALL SSXWD2
LJMP INTOUT
SSXW2251: MOV A,#92H
LCALL WRITE_COM
MOV DPTR,#CHINESE31
LCALL WRITE_HZ2
LJMP INTOUT
SSXW1125: CPL 00H
JB 00H,SSXW11251
LCALL SSXWD2
LJMP INTOUT
SSXW11251: MOV A,#94H
LCALL WRITE_COM
MOV DPTR,#CHINESE31
LCALL WRITE_HZ3
LJMP INTOUT
;设置频率闪
SSSP7: CPL 00H
JB 00H,SSSP71
LCALL DISPLCD
LJMP INTOUT
SSSP71: MOV SSDIS,DIS7
MOV DIS7,#0AH
LCALL DISPLCD
MOV DIS7,SSDIS
LJMP INTOUT
SSSP6: CPL 00H
JB 00H,SSSP61
LCALL DISPLCD
LJMP INTOUT
SSSP61: MOV SSDIS,DIS6
MOV DIS6,#0AH
LCALL DISPLCD
MOV DIS6,SSDIS
LJMP INTOUT
SSSP5: CPL 00H
JB 00H,SSSP51
LCALL DISPLCD
LJMP INTOUT
SSSP51: MOV SSDIS,DIS5
MOV DIS5,#0AH
LCALL DISPLCD
MOV DIS5,SSDIS
LJMP INTOUT
SSSP4: CPL 00H
JB 00H,SSSP41
LCALL DISPLCD
LJMP INTOUT
SSSP41: MOV SSDIS,DIS4
MOV DIS4,#0AH
LCALL DISPLCD
MOV DIS4,SSDIS
LJMP INTOUT
SSSP3: CPL 00H
JB 00H,SSSP31
LCALL DISPLCD
LJMP INTOUT
SSSP31: MOV SSDIS,DIS3
MOV DIS3,#0AH
LCALL DISPLCD
MOV DIS3,SSDIS
LJMP INTOUT
SSSP2: CPL 00H
JB 00H,SSSP21
LCALL DISPLCD
LJMP INTOUT
SSSP21: MOV SSDIS,DIS2
MOV DIS2,#0AH
LCALL DISPLCD
MOV DIS2,SSDIS
LJMP INTOUT
SSSP1: CPL 00H
JB 00H,SSSP11
LCALL DISPLCD
LJMP INTOUT
SSSP11: MOV SSDIS,DIS1
MOV DIS1,#0AH
LCALL DISPLCD
MOV DIS1,SSDIS
LJMP INTOUT
SSSP0: CPL 00H
JB 00H,SSSP01
LCALL DISPLCD
LJMP INTOUT
SSSP01: MOV SSDIS,DIS0
MOV DIS0,#0AH
LCALL DISPLCD
MOV DIS0,SSDIS
LJMP INTOUT
;**********************************************
; 频率值转换为控制字 ;
;**********************************************
DISBCD_CON:
DISD_BCD: MOV L7,#00H
MOV L6,#00H
MOV L5,#00H
MOV L4,DIS7
MOV L3,#00H ;10,000,000
MOV L2,#98H ;10,000,000
MOV L1,#96H ;10,000,000
MOV L0,#80H ;10,000,000
LCALL MUL4BY4
MOV CON0,R0
MOV CON1,R1
MOV CON2,R2
MOV CON3,R3
MOV L7,#00H
MOV L6,#00H
MOV L5,#00H
MOV L4,DIS6
MOV L3,#00H ;1,000,000
MOV L2,#0FH ;1,000,000
MOV L1,#42H ;1,000,000
MOV L0,#40H ;1,000,000
LCALL MUL4BY4
LCALL DISBCD_CONADD
MOV L7,#00H
MOV L6,#00H
MOV L5,#00H
MOV L4,DIS5
MOV L3,#00H ;100,000
MOV L2,#01H ;100,000
MOV L1,#86H ;100,000
MOV L0,#0A0H;100,000
LCALL MUL4BY4
LCALL DISBCD_CONADD
MOV L7,#00H
MOV L6,#00H
MOV L5,#00H
MOV L4,DIS4
MOV L3,#00H ;10,000
MOV L2,#00H ;10,000
MOV L1,#27H ;10,000
MOV L0,#10H ;10,000
LCALL MUL4BY4
LCALL DISBCD_CONADD
MOV L7,#00H
MOV L6,#00H
MOV L5,#00H
MOV L4,DIS3
MOV L3,#00H ;1,000
MOV L2,#00H ;1,000
MOV L1,#03H ;1,000
MOV L0,#0E8H;1,000
LCALL MUL4BY4
LCALL DISBCD_CONADD
MOV L7,#00H
MOV L6,#00H
MOV L5,#00H
MOV L4,DIS2
MOV L3,#00H ;100
MOV L2,#00H ;100
MOV L1,#00H ;100
MOV L0,#64H ;100
LCALL MUL4BY4
LCALL DISBCD_CONADD
MOV L7,#00H
MOV L6,#00H
MOV L5,#00H
MOV L4,DIS1
MOV L3,#00H ;10
MOV L2,#00H ;10
MOV L1,#00H ;10
MOV L0,#0AH ;10
LCALL MUL4BY4
LCALL DISBCD_CONADD
MOV L7,#00H
MOV L6,#00H
MOV L5,#00H
MOV L4,DIS0
MOV L3,#00H ;1
MOV L2,#00H ;1
MOV L1,#00H ;1
MOV L0,#01H ;1
LCALL MUL4BY4
LCALL DISBCD_CONADD
DIS_CON:
MOV L7,CON3
MOV L6,CON2
MOV L5,CON1
MOV L4,CON0
;MOV L3,#00H ;10,000
;MOV L2,#00H ;10,000
;MOV L1,#27H ;10,000
;MOV L0,#10H ;10,000
MOV L3,#00H ;100,000
MOV L2,#01H ;100,000
MOV L1,#86H ;100,000
MOV L0,#0A0H ;100,000
LCALL MUL4BY4
;MOV L7,#00H ;291 AD9850晶振 125MHZ
;MOV L6,#00H ;291 AD9850晶振 125MHZ
;MOV L5,#01H ;291 AD9850晶振 125MHZ
;MOV L4,#23H ;291 AD9850晶振 125MHZ
MOV L7,#00H ;1164 AD9850晶振 50MHZ
MOV L6,#00H ;1164 AD9850晶振 50MHZ
MOV L5,#04H ;1164 AD9850晶振 50MHZ
MOV L4,#8CH ;1164 AD9850晶振 50MHZ
LCALL DIV8BY4
MOV CON3,R3
MOV CON2,R2
MOV CON1,R1
MOV CON0,R0
RET
DISBCD_CONADD:
MOV A,CON0
ADD A,R0
MOV CON0,A
MOV A,CON1
ADDC A,R1
MOV CON1,A
MOV A,CON2
ADDC A,R2
MOV CON2,A
MOV A,CON3
ADDC A,R3
MOV CON3,A
RET
;****************************************************
; 控制字转换为频率值 ;
;****************************************************
CON_DIS:
MOV L7,CON3
MOV L6,CON2
MOV L5,CON1
MOV L4,CON0
;MOV L3,#00H ;291 AD9850晶振 125MHZ
;MOV L2,#00H ;291 AD9850晶振 125MHZ
;MOV L1,#01H ;291 AD9850晶振 125MHZ
;MOV L0,#23H ;291 AD9850晶振 125MHZ
MOV L3,#00H ;1164 AD9850晶振 50MHZ
MOV L2,#00H ;1164 AD9850晶振 50MHZ
MOV L1,#04H ;1164 AD9850晶振 50MHZ
MOV L0,#8CH ;1164 AD9850晶振 50MHZ
LCALL MUL4BY4
;MOV L7,#00H ;10,000
;MOV L6,#00H ;10,000
;MOV L5,#27H ;10,000
;MOV L4,#10H ;10,000
MOV L7,#00H ;100,000
MOV L6,#01H ;100,000
MOV L5,#86H ;100,000
MOV L4,#0A0H ;100,000
LCALL DIV8BY4
LCALL JWPD
MOV R7,#00H
MOV R6,#00H
MOV R5,#00H
MOV R4,#00H
MOV L7,#00H ;10,000,000
MOV L6,#98H ;10,000,000
MOV L5,#96H ;10,000,000
MOV L4,#80H ;10,000,000
LCALL DIV8BY4
MOV DIS7,R0
MOV R7,#00H
MOV R6,#00H
MOV R5,#00H
MOV R4,#00H
MOV R3,L3
MOV R2,L2
MOV R1,L1
MOV R0,L0
MOV L7,#00H ;1,000,000
MOV L6,#0FH ;1,000,000
MOV L5,#42H ;1,000,000
MOV L4,#40H ;1,000,000
LCALL DIV8BY4
MOV DIS6,R0
MOV R7,#00H
MOV R6,#00H
MOV R5,#00H
MOV R4,#00H
MOV R3,L3
MOV R2,L2
MOV R1,L1
MOV R0,L0
MOV L7,#00H ;100,000
MOV L6,#01H ;100,000
MOV L5,#86H ;100,000
MOV L4,#0A0H;100,000
LCALL DIV8BY4
MOV DIS5,R0
MOV R7,#00H
MOV R6,#00H
MOV R5,#00H
MOV R4,#00H
MOV R3,L3
MOV R2,L2
MOV R1,L1
MOV R0,L0
MOV L7,#00H ;10,000
MOV L6,#00H ;10,000
MOV L5,#27H ;10,000
MOV L4,#10H ;10,000
LCALL DIV8BY4
MOV DIS4,R0
MOV R7,#00H
MOV R6,#00H
MOV R5,#00H
MOV R4,#00H
MOV R3,L3
MOV R2,L2
MOV R1,L1
MOV R0,L0
MOV L7,#00H ;1,000
MOV L6,#00H ;1,000
MOV L5,#03H ;1,000
MOV L4,#0E8H;1,000
LCALL DIV8BY4
MOV DIS3,R0
MOV R7,#00H
MOV R6,#00H
MOV R5,#00H
MOV R4,#00H
MOV R3,L3
MOV R2,L2
MOV R1,L1
MOV R0,L0
MOV L7,#00H ;100
MOV L6,#00H ;100
MOV L5,#00H ;100
MOV L4,#64H ;100
LCALL DIV8BY4
MOV DIS2,R0
MOV R7,#00H
MOV R6,#00H
MOV R5,#00H
MOV R4,#00H
MOV R3,L3
MOV R2,L2
MOV R1,L1
MOV R0,L0
MOV L7,#00H ;10
MOV L6,#00H ;10
MOV L5,#00H ;10
MOV L4,#0AH ;10
LCALL DIV8BY4
MOV DIS1,R0
MOV R7,#00H
MOV R6,#00H
MOV R5,#00H
MOV R4,#00H
MOV R3,L3
MOV R2,L2
MOV R1,L1
MOV R0,L0
MOV L7,#00H ;1
MOV L6,#00H ;1
MOV L5,#00H ;1
MOV L4,#01H ;1
LCALL DIV8BY4
MOV DIS0,R0
RET
JWPD: MOV DIS3,R3
MOV DIS2,R2
MOV DIS1,R1
MOV DIS0,R0
MOV R7,#00H
MOV R6,#00H
MOV R5,#00H
MOV R4,#00H
MOV R3,L3
MOV R2,L2
MOV R1,L1
MOV R0,L0
MOV L7,#00H ;1,000
MOV L6,#00H ;1,000
MOV L5,#03H ;1,000
MOV L4,#0E8H;1,000
LCALL DIV8BY4
MOV A,R0
CLR C
CJNE A,#05H,JWPD1
JWPD1: JC BJW
MOV A,DIS0
ADD A,#01H
MOV DIS0,A
MOV A,DIS1
ADDC A,#00H
MOV DIS1,A
MOV A,DIS2
ADDC A,#00H
MOV DIS2,A
MOV A,DIS3
ADDC A,#00H
MOV DIS3,A
BJW: MOV R3,DIS3
MOV R2,DIS2
MOV R1,DIS1
MOV R0,DIS0
RET
;****************************************************
; 两字节无符号数乘法程序 ;
;****************************************************
;R3R2*R1R0=R7R6R5R4
MUL2BY2: CLR A
MOV R7,A
MOV R6,A
MOV R5,A
MOV R4,A
MOV 2FH,#10H
MULLOOP1: CLR C
MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
MOV A, R0
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
JNC MULLOOP2
MOV A,R4
ADD A,R2
MOV R4,A
MOV A,R5
ADDC A,R3
MOV R5,A
MOV A,R6
ADDC A,#00H
MOV R6,A
MOV A,R7
ADDC A,#00H
MOV R7,A
MULLOOP2: DJNZ 2FH,MULLOOP1
RET
;****************************************************
; 四字节无符号数乘法程序 ;
;****************************************************
;L7L6L5L4*L3L2L1L0=
;R7R6R5R4R3R2R1R0
MUL4BY4: CLR A
MOV R7, A
MOV R6, A
MOV R5, A
MOV R4, A
MOV R3, A
MOV R2, A
MOV R1, A
MOV R0, A
MOV 2FH, #20H
MUL44LOOP1: CLR C
MOV A, R0
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
MOV A, R2
RLC A
MOV R2, A
MOV A, R3
RLC A
MOV R3, A
MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
MOV A, L0
RLC A
MOV L0, A
MOV A, L1
RLC A
MOV L1, A
MOV A, L2
RLC A
MOV L2, A
MOV A, L3
RLC A
MOV L3, A
JNC MUL44LOOP2
MOV A, R0
ADD A, L4
MOV R0, A
MOV A, R1
ADDC A, L5
MOV R1, A
MOV A, R2
ADDC A, L6
MOV R2, A
MOV A, R3
ADDC A, L7
MOV R3, A
MOV A, R4
ADDC A, #00H
MOV R4, A
MOV A, R5
ADDC A, #00H
MOV R5, A
MOV A, R6
ADDC A, #00H
MOV R6, A
MOV A, R7
ADDC A, #00H
MOV R7, A
MUL44LOOP2: DJNZ 2FH, MUL44LOOP1
RET
;****************************************************
;* 四字节/两字节无符号数除法程序 *
;****************************************************
;R7R6R5R4/R3R2=R7R6R5R4(商)...R1R0(余数)
;
DIV4BY2: MOV 2FH, #20H
MOV R0, #00H
MOV R1, #00H
DIVLOOP1: MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
MOV A, R0
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
CLR C
MOV A, R0
SUBB A, R2
MOV B, A
MOV A, R1
SUBB A, R3
JC DIVLOOP2
MOV R0, B
MOV R1, A
DIVLOOP2: CPL C
DJNZ 2FH, DIVLOOP1
MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
RET
;****************************************************
; 八字节/四字节无符号数除法程序 ;
;****************************************************
;R7R6R5R4R3R2R1R0/L7L6L5L4=R7R6R5R4R3R2R1R0(商)
;L3L2L1L0(余数)
DIV8BY4: MOV 2FH, #40H
MOV L0, #00H
MOV L1, #00H
MOV L2, #00H
MOV L3, #00H
DIV84LOOP1:
MOV A, R0
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
MOV A, R2
RLC A
MOV R2, A
MOV A, R3
RLC A
MOV R3, A
MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
MOV A, L0
RLC A
MOV L0, A
MOV A, L1
RLC A
MOV L1, A
MOV A, L2
RLC A
MOV L2, A
MOV A, L3
RLC A
MOV L3, A
CLR C
MOV A, L0
SUBB A, L4
MOV 29H, A
MOV A, L1
SUBB A, L5
MOV 2AH, A
MOV A, L2
SUBB A, L6
MOV 2BH, A
MOV A, L3
SUBB A, L7
MOV 2CH, A
JC DIV84LOOP2
MOV L0, 29H
MOV L1, 2AH
MOV L2, 2BH
MOV L3, 2CH
DIV84LOOP2: CPL C
DJNZ 2FH, DIV84LOOP1
MOV A, R0
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
MOV A, R2
RLC A
MOV R2, A
MOV A, R3
RLC A
MOV R3, A
MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
RET
END
上一篇:计数测试数码管显示程序
下一篇:数控调频台汇编程序
史海拾趣
|
好不容易盼到这里啦! 这里我们一起来分享一下二维图形的绘制和修饰 对数坐标图,极坐标图 饼状图,梯形图,概率分布图,向量图等等的二维图形 如果你觉得不过瘾, 我们接着来三维图形 甚至是GUI的界面都可以的啦! 期待大家的帮助拉!… 查看全部问答> |
|
发一个外包项目贴!请有实力有精力的工程师速与我联系!!斑竹请鼠标下留帖!先谢谢啦 2440手持机外包项目: 1、背光驱动 2、电源管理 3、自定义键盘驱动 4、LP3913驱动 5、EEPROM驱动 6、NANDFLASH分区及海量存储 注意:目前BSP为WINCE42下的 要求: 有实力做出以上6个驱动(具体详见需求) 时间价钱面议 地点限北京 QQ: ...… 查看全部问答> |
|
我是新手,最近在编一个程序需要用到捕获单元,但有一点想不清楚,就是我需要在第一次捕获时屏蔽中断,第二次捕获后响应中断,从而读出这两个的差值,但程序应该怎么编写呢。感谢指点!… 查看全部问答> |
|
大虾们好! 俺们菜鸟,下面的例化引用好像有问题,请救救俺们吧 reg clkb,rdb,wrb;reg [11:0]datab;wire[11:0]qb;assign qb = ( channelout == 0 ) ? q0 : (( channelout == 1 ) ? q1 : (( channelout == 2 ) ? q2 :(( channelout == 3 ...… 查看全部问答> |
|
谁遇到过SIM300,接受TCP数据后,串口读取数据时,发现数据丢失情况 谁遇到过SIM300,接受TCP数据后,串口读取数据时,发现数据丢失情况~~~急啊~~~高手解答一下啊~~急~!!!… 查看全部问答> |
|
我是用的二阶滤波,分了1024份,输出端430的adc检测不到,但万用表有数字,于是加了一级射随器。纹波在10mv左右。不知道各位有什么更好的方案没?同时想请教下这个纹波和最终电源输出的纹波有怎样的影响。我在网上找的资料顺便给大家分享下。… 查看全部问答> |




