📄 lesson10.asm
字号:
PORT EQU 7FFFH
CSEG AT 4000H
LJMP START
CSEG AT 4100H
START: MOV R1,#02H ;置计数初值于R1
ACALL PRG1 ;显示锯齿波
MOV R1,#01H ;置计数初值于R1
ACALL PRG2 ;显示三角波
MOV R1,#01H ;置计数初值于R1
ACALL PRG3 ;显示正弦波
LJMP START ;转START循环显示
PRG1: MOV DPTR,#PORT+1 ;DAC寄存器端口地址送DPTR
MOV A,#00H ;初值送ACC
LOOP: MOV B,#0FFH
LOOP1: MOV DPTR,#PORT ;DAC输入寄存器端口地址
MOVX @DPTR,A ;送出数据
INC DPTR ;加一,为DAC寄存器端口地址
MOVX @DPTR,A ;启动转换
INC A ;数据加一
CJNE A,#0FFH,LOOP1
MOV A,#00H
DJNZ B,LOOP1
DJNZ R1,LOOP ;计数值减到40H了吗?没有则继续
RET ;产生锯齿波
PRG2: MOV DPTR,#PORT+1
MOV A,#00H
LP0: MOV B,#0FFH
LP1: MOV DPTR,#PORT ;LP1循环产生三角波前半周期
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
INC A
CJNE A,#0FFH,LP1 ;数据为FFH吗?不等则转LP1
MOV R2,#0FEH
LP2: MOV DPTR,#PORT ;LP2循环产生三角波后半周期
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
DJNZ R2,LP2
DJNZ B,LP1
DJNZ R1,LP0 ;计数值到80H则退出执行下一步
RET
PRG3: MOV B,#00H
LP3: MOV DPTR,#DATA0
MOV R4,#0FFH ;FFH为DATA0表中的数据个数
LP4: MOVX A,@DPTR ;从表中取数据
MOV R3,DPH
MOV R5,DPL
MOV DPTR,#PORT
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
MOV DPH,R3
MOV DPL,R5
INC DPTR ;地址下移
DJNZ R4,LP4
DJNZ B,LP3
DJNZ R1,PRG3
RET
DATA0: DB 80H,83H,86H,89H,8DH,90H,93H,96H
DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH
DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H
DB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H
DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H
DB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H
DB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH
DB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH
DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H
DB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH
DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH
DB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H
DB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H
DB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H
DB 96H,93H,90H,8DH,89H,86H,83H,80H
DB 80H,7CH,79H,76H,72H,6FH,6CH,69H
DB 66H,63H,60H,5DH,5AH,57H,55H,51H
DB 4EH,4CH,48H,45H,43H,40H,3DH,3AH
DB 38H,35H,33H,30H,2EH,2BH,29H,27H
DB 25H,22H,20H,1EH,1CH,1AH,18H,16H
DB 15H,13H,11H,10H,0EH,0DH,0BH,0AH
DB 09H,8H,7H,6H,5H,4H,3H,2H
DB 02H,1H,0H,0H,0H,0H,0H,0H
DB 00H,0H,0H,0H,0H,0H,1H,2H
DB 02H,3H,4H,5H,6H,7H,8H,9H
DB 0AH,0BH,0DH,0EH,10H,11H,13H,15H
DB 16H,18H,1AH,1CH,1EH,20H,22H,25H
DB 27H,29H,2BH,2EH,30H,33H,35H,38H
DB 3AH,3DH,40H,43H,45H,48H,4CH,4EH
DB 51H,51H,55H,57H,5AH,5DH,60H,63H
DB 69H,6CH,6FH,72H,76H,79H,7CH,80H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -