📄 da.asm
字号:
;************************************************************************************
; File: adcdac3.asm
;功能:使用DAC输出控制实现正弦波发生器,DAC数据采用查表方法得到。
; 将J1 2-3跳线短接,使DAC电路变为双极性输出,输出点为JP7的DAOUT2。
;***********************************************************************************
DAC0832 EQU 6000H
ORG 8000H
AJMP START
ORG 8100H
START: MOV SP,#60H
MOV R0,#0 ;定义指向正弦波DAC数据的指针,因为有361个数据,所以用了R0
MOV R1,#0 ;和R1两个寄存器。
LOOP: MOV A,R0
MOV DPTR,# SINE_DATA
CJNE R1,#1,LOW_TAB
INC DPH ;判断指针的高位字节R1是否为1,若是,则DPH加1
LOW_TAB:MOVC A,@A+DPTR ;取出正弦波DAC数据
MOV DPTR,#DAC0832
MOVX @DPTR,A ;启动DA转换
INC R0 ;指针低8位加1处理
CJNE R1,#1,INC_LOW
CJNE R0,#105,INC_OK
MOV R0,#0 ;若已经取完数据并输出,则重新设置指针
MOV R1,#0
SJMP INC_OK
INC_LOW:CJNE R0,#0,INC_OK ;判断是否要进位
MOV R1,#1
INC_OK: ACALL DELAY ;延时子程序中不能修改R0、DPTR
AJMP LOOP
;**********************************************
;通过设置延时时间的长短来改变锯齿波的周期
;*********************************************
DELAY: MOV R7,#10
DJNZ R7,$
RET
;***********************************
;正弦波数据表,8位DAC的数据
;***********************************
SINE_DATA: DB 128, 130, 132, 135, 137, 139, 141, 144, 146, 148
DB 150, 152, 155, 157, 159, 161, 163, 165, 168, 170
DB 172, 174, 176, 178, 180, 182, 184, 186, 188, 190
DB 192, 194, 196, 198, 200, 201, 203, 205, 207, 209
DB 210, 212, 214, 215, 217, 219, 220, 222, 223, 225
DB 226, 227, 229, 230, 232, 233, 234, 235, 237, 238
DB 239, 240, 241, 242, 243, 244, 245, 246, 247, 247
DB 248, 249, 250, 250, 251, 252, 252, 253, 253, 254
DB 254, 254, 255, 255, 255, 255, 255, 255, 255, 255
DB 255, 255, 255, 255, 255, 255, 255, 255, 255, 254
DB 254, 254, 253, 253, 252, 252, 251, 250, 250, 249
DB 248, 247, 247, 246, 245, 244, 243, 242, 241, 240
DB 239, 238, 237, 235, 234, 233, 232, 230, 229, 227
DB 226, 225, 223, 222, 220, 219, 217, 215, 214, 212
DB 210, 209, 207, 205, 203, 201, 200, 198, 196, 194
DB 192, 190, 188, 186, 184, 182, 180, 178, 176, 174
DB 172, 170, 168, 165, 163, 161, 159, 157, 155, 152
DB 150, 148, 146, 144, 141, 139, 137, 135, 132, 130
DB 128, 126, 124, 121, 119, 117, 115, 112, 110, 108
DB 106, 104, 101, 99, 97, 95, 93, 91, 88, 86
DB 84, 82, 80, 78, 76, 74, 72, 70, 68, 66
DB 64, 62, 60, 58, 56, 55, 53, 51, 49, 47
DB 46, 44, 42, 41, 39, 37, 36, 34, 33, 31
DB 30, 29, 27, 26, 24, 23, 22, 21, 19, 18
DB 17, 16, 15, 14, 13, 12, 11, 10, 9, 9
DB 8, 7, 6, 6, 5, 4, 4, 3, 3, 2
DB 2, 2, 1, 1, 1, 0, 0, 0, 0, 0
DB 0, 0, 0, 0, 0, 0, 1, 1, 1, 2
DB 2, 2, 3, 3, 4, 4, 5, 6, 6, 7
DB 8, 9, 9, 10, 11, 12, 13, 14, 15, 16
DB 17, 18, 19, 21, 22, 23, 24, 26, 27, 29
DB 30, 31, 33, 34, 36, 37, 39, 41, 42, 44
DB 46, 47, 49, 51, 53, 55, 56, 58, 60, 62
DB 64, 66, 68, 70, 72, 74, 76, 78, 80, 82
DB 84, 86, 88, 91, 93, 95, 97, 99, 101, 104
DB 106, 108, 110, 112, 115, 117, 119, 121, 124, 126
DB 128
;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -