📄 genert.txt
字号:
实验五 任意波形发生器
一、实验任务
利用开发系统编制程序,产生三角波、锯齿波、正弦波
二、程序编制要求
分别产生三种波形,并能通过按键调节输出频率
三、改变频率的方法
改变数据送入0832的延时,即通过延时子程序的参数改变实现。延时参数的改变即通过键功能选择,用查表法将表格中的延时参数送入延时子程序。
四、程序设计提示
1、功能键应设四个:{
2、功能键的选择:
采用转换设计法时,应选用键值连续的按键
五、频率调节子程序
RUN: MOV DPTR,#DLTAB ;DLTAB为延时参数表
MOV A,30H
CJNE A,#05,ADDF1 ;30H为查表偏移量起始值
MOV 30H,#0
LJMP ADDF2
ADDF1: INC 30H
ADDF2: MOVC A,@A+DPTR ;查段码表
MOV 31H,A ;31H保存延时参数
MOV A,40H
LJMP KEY5
DLTAB: DB 02H,10H,20H,40H,60H
实验五 信号发生器
ORG 0000H
AJMP MAIN
MAIN: MOV 30H,#00H
MOV 31H,#01H
KEY: MOV DPTR,#8001H ;74245清0
MOV A,#00H
MOV DPTR,#8002H ;74374清0
MOV A,#00H
MOVX @DPTR,A
MOV R3,#00H
MOV R4,#00H
KEY0: ACALL KEXAM
JZ KEY0
ACALL KEXAM
JZ KEY0
KEY1: MOV DPTR,#8002H ;列地址
MOV A,R2
MOVX @DPTR,A
KEY10: MOV DPTR, #8001H ;行地址
MOVX A,@DPTR
CPL A
ANL A,#0FH
JNZ KEY2
KEY11: MOV A,R3
ADD A,#04H
MOV R3,A
MOV A,R2
RR A
MOV R2,A
JB ACC.1,KEY1
AJMP MAIN
KEY2: CPL A
KEY3: INC R4
RRC A
JC KEY3
KEY4: ACALL DL10mS
ACALL KEXAM
JNZ KEY4
MOV A,R4
ADD A,R3
CJNE A,#04H,NEXT ;40H保存波形参数
AJMP KEY5
NEXT: MOV 40H,A
KEY5: CJNE A,#01H,KEY6
AJMP JUCBO
KEY6: CJNE A,#02H,KEY7
AJMP SJBO
KEY7: CJNE A,#03H,KEY8
AJMP ZXBO
KEY8: CJNE A,#04H,KEY0
AJMP RUN
JUCBO: MOV DPTR,#9000H ;指向0832
MOV R1,#00H ;产生正向锯齿波
LOOP: MOV A,R1
MOVX @DPTR,A
INC R1
LCALL DELY
CJNE R1,#0FFH,LOOP
LCALL KEXAM
JZ JUCBO
JMP KEY
SJBO: MOV DPTR,#9000H ;指向0832
DA1: MOV R0,#00H ;产生三角波
DA2: MOV A,R0
MOVX @DPTR,A
INC R0
LCALL DELY
CJNE R0,#0FFH,DA2 ;输出电压最大值
DA3: DEC R0
MOV A,R0
MOVX @DPTR,A
LCALL DELY
CJNE R0,#00H,DA3 ;输出电压最小值
LCALL KEXAM
JZ SJBO
LJMP KEY
ZXBO: MOV R6,#00H ;查表偏移量
SIN: MOV A,R6
MOV DPTR,#TAB ;送输出量表首址
MOVC A,@A+DPTR
MOV DPTR,#9000H ;指向0832
MOVX @DPTR,A ;输出数据
INC R6
LCALL DELY
CJNE R6,#00H,SIN
LCALL KEXAM
JZ ZXBO
LJMP KEY
RUN: MOV DPTR,#DLTAB
MOV A,30H
CJNE A,#05,ADDF1
MOV 30H,#0
LJMP ADDF2
ADDF1: INC 30H
ADDF2: MOVC A,@A+DPTR
MOV 31H,A ;31H保存延时参数
MOV A,40H
LJMP KEY5
DLTAB: DB 02H,10H,20H,40H,60H
DELY: MOV R7,31H
DLY: DJNZ R7,DLY
RET
TAB: DB 80H,83H,86H,89H,8DH,90H,93H,96H,99H,9CH,9FH,0A2H
DB 0A5H,0A8H,0ABH,0AEH,0B1H,0B4H,0B7H,0BAH,0BCH,0BFH
DB 0C2H,0C5H,0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H
DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H,0EAH,0ECH
DB 0EEH,0EFH,0F1H,0F2H,0F4H,0F5H,0F6H,0F7H,0F8H,0F9H
DB 0FAH,0FBH,0FCH,0FDH,0FDH,0FEH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH
DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H,0F5H,0F4H
DB 0F2H,0F1H,0EFH,0EEH,0ECH,0EAH,0E9H,0E7H,0E5H,0E3H
DB 0E1H,0DEH,0DDH,0DAH,0D8H,0D6H,0D4H,0D1H,0CFH,0CCH
DB 0CAH,0C7H,0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H
DB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H,96H,93H
DB 90H,8DH,89H,86H,83H,80H,80H,7CH,79H,76H,72H,6FH
DB 6CH,69H,66H,63H,60H,5DH,5AH,57H,55H,51H 4EH,4CH
DB 48H,45H,43H,40H,3DH,3AH,38H,35H,33H,30H,2EH,2BH
DB 29H,27H,25H,22H,20H,1EH,1CH,1AH,18H,16H,15H,13H
DB 11H,10H,0EH,0DH,0BH,0AH,09H,08H,07H,06H,05H,04H
DB 03H,02H,02H,01H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,01H,02H,02H,03H,04H,05H,06H,07H
DB 08H,09H,0AH,0BH,0DH,01H,10H,11H,13H,15H,16H,18H
DB 1AH,1CH,1EH,20H,22H,25H,27H,29H,2BH,2EH,30H,33H
DB 35H,38H,3AH,3DH,40H,43H,45H,48H,4CH,4EH,51H,55H
DB 57H,5AH,5DH,60H,63H,66H,69H,6CH,6FH,72H,76H,79H
DB 7CH,80H ,0C0H,0F9H,0A4H,0B0H,99H
KEXAM: MOV DPTR,#8002H ; 列地址
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#8001H ; 列地址
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET
DL10mS: MOV R5,#08H ;按键延时子程序
DL: MOV R6,#0FFH
DL0: DJNZ R6,DL0
DJNZ R5,DL
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -