正弦波信号发生器.docx

上传人:b****9 文档编号:23413062 上传时间:2023-05-16 格式:DOCX 页数:16 大小:17.38KB
下载 相关 举报
正弦波信号发生器.docx_第1页
第1页 / 共16页
正弦波信号发生器.docx_第2页
第2页 / 共16页
正弦波信号发生器.docx_第3页
第3页 / 共16页
正弦波信号发生器.docx_第4页
第4页 / 共16页
正弦波信号发生器.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

正弦波信号发生器.docx

《正弦波信号发生器.docx》由会员分享,可在线阅读,更多相关《正弦波信号发生器.docx(16页珍藏版)》请在冰豆网上搜索。

正弦波信号发生器.docx

正弦波信号发生器

OUTBITequ08002h;位控制口

OUTSEGequ08004h;段控制口

INequ08001h;键盘读入口

LEDBufequ60h;显示缓冲

ljmpStart

LEDMAP:

;八段管显示码

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h

db7fh,6fh,77h,7ch,39h,5eh,79h,71h

Delay:

;延时子程序

movr7,#0

DelayLoop:

djnzr7,DelayLoop

djnzr6,delayLoop

ret

DisplayLED:

movr0,#LEDBuf

movr1,#6;共6个八段管

movr2,#00100000b;从左边开始显示

Loop:

movdptr,#OUTBIT

mova,#0

movx@dptr,a;关所有八段管

mova,@r0

movdptr,#OUTSEG

movx@dptr,a

movdptr,#OUTBIT

mova,r2

movx@dptr,a;显示一位八段管

movr6,#1

callDelay

mova,r2;显示下一位

rra

movr2,a

incr0

djnzr1,Loop

ret

TestKey:

movdptr,#OUTBIT

mova,#0

movx@dptr,a;输出线置为0

movdptr,#IN

movxa,@dptr;读入键状态

cpla

anla,#0fh;高四位不用

ret

KeyTable:

;键码定义

db16h,15h,14h,0ffh

db13h,12h,11h,10h

db0dh,0ch,0bh,0ah

db0eh,03h,06h,09h

db0fh,02h,05h,08h

db00h,01h,04h,07h

GetKey:

movdptr,#OUTBIT

movP2,dph

movr0,#Low(IN)

movr1,#00100000b

movr2,#6

KLoop:

mova,r1;找出键所在列

cpla

movx@dptr,a

cpla

rra

movr1,a;下一列

movxa,@r0

cpla

anla,#0fh

jnzGoon1;该列有键入

djnzr2,KLoop

movr2,#0ffh;没有键按下,返回0ffh

sjmpExit

Goon1:

movr1,a;键值=列X4+行

mova,r2

deca

rla

rla

movr2,a;r2=(r2-1)*4

mova,r1;r1中为读入的行值

movr1,#4

LoopC:

rrca;移位找出所在行

jcExit

incr2;r2=r2+行值

djnzr1,LoopC

Exit:

mova,r2;取出键码

movdptr,#KeyTable

movca,@a+dptr

movr2,a

WaitRelease:

movdptr,#OUTBIT;等键释放

clra

movx@dptr,a

movr6,#10

callDelay

callTestKey

jnzWaitRelease

mova,r2

ret

chuzhi:

MOVA,20H;将四个数转换成一四位数

MOVR0,#0E8H;第一个数乘以1000

MOVR1,#03H

MOVB,R0

MULAB

MOV61H,B

MOV60H,A;低8位

MOVA,20H

MOVB,R1

MULAB

ADDA,61H

MOV61H,A;高8位

CLRC

MOVA,21H

MOVR0,#64H;第2个数乘以100

MOVB,R0

MULAB

ADDA,60H

MOV62H,A;低8位

MOVA,61H

ADDCA,B

MOV63H,A;高8位

CLRC

MOVA,22H

MOVR0,#0AH;第3个数乘以10

MULAB

ADDA,62H

MOV64H,A;低8位

MOVA,63H

ADDCa,B

MOV65H,A;高8位

CLRC

MOVA,23H

ADDA,64H

MOV66H,A;频率值的低八位

MOVA,65H

ADDCA,#0h

MOV67H,A;频率值的高八位

MOVR7,66H

MOVR6,67H

MOVR3,#0H

MOVR2,#0H

MOVR4,#27H

MOVR5,#10H

 

DIVD:

CLRC;比较被除数和除数

MOVA,R3

SUBBA,R7

MOVA,R2

SUBBA,R6

JCDVD1

SETBOV;溢出

RET

DVD1:

MOVB,#10H;计算双字节商

DVD2:

CLRC;部分商和余数同时左移一位

MOVA,R5

RLCA

MOVR5,A

MOVA,R4

RLCA

MOVR4,A

MOVA,R3

RLCA

MOVR3,A

XCHA,R2

RLCA

XCHA,R2

MOVF0,C;保存溢出位

CLRC

SUBBA,R7;计算(R2R3-R6R7)

MOVR1,A

MOVA,R2

SUBBA,R6

ANLC,/F0;结果判断

JCDVD3

MOVR2,A;够减,存放新的余数

MOVA,R1

MOVR3,A

INCR5;商的低位置一

DVD3:

DJNZB,DVD2;计算完16位商(R4,R5)

MOVA,R4;将商移到R2R3中

MOVR2,A

MOVA,R5

MOVR3,A

CLROV;设立成功标志

MOV67H,R2

MOV66H,R3

MOVR0,#00H;求定时器初值

MOVR1,#00H

MOVR3,#01H

CLRC

MOVA,R0

SUBBA,66H

MOV50H,A;初值的低八位

MOVA,R1

SUBBA,67H

MOV51H,A;初值的高八位

ret

L1:

calldisplayled;显示F

calltestkey

jzL1

callgetkey

mov30h,a;在30H中存放电压幅值

anla,#1fh;显示键码

movdptr,#LEDMap

movca,@a+dptr

movLEDBuf+5,a

L2:

calldisplayled

calltestkey

jzL2

callgetkey

cjnea,#16h,L2

mova,#0ch

anla,#1fh

movdptr,#LEDMap

movca,@a+dptr

movLEDBuf+4,a

L31:

calldisplayled;显示C

calltestkey

jzL31

callgetkey

mov23h,a

anla,#1fh

movdptr,#ledmap

movca,@a+dptr

movledbuf+3,a

L32:

calldisplayled

calltestkey

jzL32

callgetkey

cjnea,#16h,LN2

ljmpL4

LN2:

movr1,23h

mov22h,r1

mov23h,a

anla,#1fh

movdptr,#ledmap

movca,@a+dptr

movledbuf+2,ledbuf+3

movledbuf+3,a

L33:

calldisplayled

calltestkey

jzL33

callgetkey

cjnea,#16h,LN3

ljmpL4

LN3:

movr1,22h

mov21h,r1

movr1,23h

mov22h,r1

mov23h,a

anla,#1fh

movdptr,#ledmap

movca,@a+dptr

movr0,ledbuf+2

movledbuf+1,r0

movr0,ledbuf+3

movledbuf+2,r0

movledbuf+3,a

L34:

calldisplayled

calltestkey

jzL34

callgetkey

cjnea,#16h,LN4

ljmpL4

LN4:

movr1,21h

mov20h,r1

movr1,22h

mov21h,r1

movr1,23h

mov22h,r1

mov23h,a

anla,#1fh

movdptr,#ledmap

movca,@a+dptr

movr0,ledbuf+1

movledbuf+0,r0

movr0,ledbuf+2

movledbuf+1,r0

movr0,ledbuf+3

movledbuf+2,r0

movledbuf+3,a

L4:

calldisplayled

calltestkey

jzL4

callgetkey

cjnea,#16h,L4

mova,#0Ah;显示A

anla,#1fh

movdptr,#ledmap

movca,@a+dptr

movledbuf+4,a

ret

Start:

movLEDBuf+0,#3fh;显示8.8.8.8.

movLEDBuf+1,#3fh

movLEDBuf+2,#3fh

movLEDBuf+3,#3fh

movLEDBuf+4,#3fh

movLEDBuf+5,#3fh

MLoop:

lcallDisplayLED;显示

lcallTestKey;有键入?

jzMLoop;无键入,继续显示

lcallGetKey;读入键码

cjnea,#13h,mloop

mova,#0fh

anla,#1fh;显示键码

movdptr,#LEDMap

movca,@a+dptr

movLEDBuf+4,a

callL1

start1:

movr1,#64h

mova,#00h

lcallCHUZHI

movr4,30h

cjner4,#1,LOOP2

movdptr,#SIN1

ljmpLOOP6

LOOP2:

cjner4,#2,LOOP3

movdptr,#SIN2

ljmpLOOP6

LOOP3:

cjner4,#3,LOOP4

movdptr,#SIN3

ljmpLOOP6

LOOP4:

cjner4,#1,LOOP5

movdptr,#SIN4

ljmpLOOP6

LOOP5:

movdptr,#SIN5

LOOP6:

mov40h,a

movca,@a+dptr

movr2,dph

movr3,dpl

movdptr,#0a000h;置D\A转换地址

movx@dptr,a

callDINGSHI;调用定时

movdph,r2

movdpl,r3

mova,40h

inca

djnzr1,LOOP6

mova,#01h

lcalltestkey

jzLOOP6

ljmpstart

DINGSHI:

clrtf0

movtmod,#01h;定时器

movth0,51h

movtl0,50h

setbtr0

nov:

jbctf0,ovr

sjmpnov

ovr:

ret

SIN1:

DB26,28,29,31,32,34,36,37,39,40,41,43,44,45,46

DB47,48,49,50,50,51,51,52,53,53,53,52,52,52,51

DB51,50,50,49,48,47,46,45,44,43,41,40,39,37,36

DB34,32,31,29,28,26,24,23,21,20,18,16,15,13,12

DB11,9,8,7,6,5,4,3,2,2,2,1,1,1,0

DB0,0,0,1,1,2,2,2,3,4,5,6,7,8,9

DB11,12,13,15,16,18,20,21,23,24,26

SIN2:

DB51,54,57,61,64,67,70,73,76,78,81,84,86

DB88,90,92,94,96,97,98,100,100,101,102,102,102

DB102,102,101,100,100,98,97,96,94,92,90,88,86

DB84,81,78,76,73,70,67,64,61,57,54,51,48

DB45,41,38,35,32,29,26,24,21,18,16,14,12

DB10,8,6,5,4,2,2,1,0,0,0,0,0

DB1,2,2,4,5,6,8,10,12,14,16,18,21

DB24,26,29,32,35,38,41,45,48,51

SIN3:

DB76,81,86,90,95,99,104,108,113,117,121,124,128,131,135

DB137,140,143,145,147,148,150,151,151,152,152,152,151,151,150

DB148,147,145,143,140,137,135,131,128,124,121,117,113,108,104

DB99,95,90,86,81,76,71,66,62,57,53,48,44,39,35

DB31,28,24,21,17,15,12,9,7,5,4,2,1,1,0

DB0,0,1,1,2,4,5,7,9,12,15,17,21,24,28

DB31,35,39,44,48,53,57,62,66,71,76

SIN4:

DB102,108,115,121,127,134,140,145,151,157,162,167,172,176,181

DB185,188,191,194,197,199,201,202,203,204,204,204,203,202,201

DB199,197,194,191,188,185,181,176,172,167,162,157,151,145,140

DB134,127,121,115,108,102,96,89,83,77,70,64,59,53,47

DB42,37,32,28,23,19,16,13,10,7,5,3,2,1,0

DB0,0,1,2,3,5,7,10,13,16,19,23,28,32,37

DB42,47,53,59,64,70,77,83,89,96,102

SIN5:

DB127,135,143,151,159,166,174,181,188,195,202,208,214,220,225

DB230,234,238,242,245,248,250,252,253,254,254,254,253,252,250

DB248,245,242,238,234,230,225,220,214,208,202,195,188,181,174

DB166,159,151,143,135,127,119,111,103,95,88,80,73,66,59

DB52,46,40,34,29,24,20,16,12,9,6,4,2,1,0

DB0,0,1,2,4,6,9,12,16,20,24,29,34,40,46

DB52,59,66,73,80,88,95,103,111,119,127

end

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

当前位置:首页 > 自然科学 > 物理

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

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