⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a17.asm

📁 单片机实验程序-13种-17.4M-pdf.zip
💻 ASM
字号:
;	“验证式”	实验十七  D/A转换


;文件名:MCS51\A17.ASM

;利用0832DA转换功能产生正弦波


        OUTBIT   equ 0e101h  ; 位控制口
        CLK164   equ 0e102h  ; 段控制口(接164时钟位)
        DAT164   equ 0e102h  ; 段控制口(接164数据位)
        IN       equ 0e103h  ; 键盘读入口
        LEDBuf   equ   40h   ; 显示缓冲

        org 0000h
	mov sp,#60h
	mov dptr,#0e100h    ;8155初始化
	mov a,#03h
	movx @dptr,a
        mov 40h,#00h        ;显示缓冲区置值
	mov 41h,#08h
	mov 42h,#03h
	mov 43h,#02h
loop1:	mov r5,#00h
loop2:	mov dptr,#0B000h     ;0832DA 从小到大转换
	mov a,r5
	movx @dptr,a
	mov 45h,a           ;拆字后送显示缓冲区
	mov r0,#45h
	acall ptds
        mov r6,#15h
dir10:	acall display       ;调用显示子程序
        djnz r6,dir10
    ;    lcall delay1
	inc r5
	cjne r5,#00h,loop2
loop3:	mov dptr,#0B000h     ;0832DA从大到小转换
	dec r5
	mov a,r5
	movx @dptr,a
	mov r0,#45h
	acall ptds
        mov r6,#15h
dir11:  acall display
        djnz r6,dir11
;	acall delay1
	cjne r5,#00h,loop3
	sjmp loop1
Delay:
        mov   r7, #00         ; 延时子程序

DelayLoop:
        djnz  r7, DelayLoop
        djnz  r6, DelayLoop
        ret

DISPLAY:setb 0d3h
        mov   r0, #LEDBuf
        mov   r1, #6          ; 共6个八段管
        mov   r2, #00100000b  ; 从左边开始显示
Loop:
        mov   dptr, #OUTBIT
        mov   a, #00h
        movx  @dptr, a        ; 关所有八段管

        mov   a, @r0
        mov dptr,#LEDmap
        movc a,@a+dptr
        mov   B, #8           ; 送164
DLP:
        rlc   a
        mov   r3, a
        mov   acc.0, c
        anl  a,#0fdh
        mov   dptr, #DAT164
        movx  @dptr, a
        mov   dptr, #CLK164
        orl a,#03h
        movx  @dptr, a
        anl a,#0fDh
        movx  @dptr, a
        mov   a, r3
        djnz  B, DLP
        mov   dptr, #OUTBIT
        mov   a, r2
        movx  @dptr, a        ; 显示一位八段管
        mov   r6, #02
        call  Delay
        mov   a, r2           ; 显示下一位
        rr    a
        mov   r2, a
        inc   r0
        djnz  r1, Loop
        mov   dptr, #OUTBIT
        mov   a, #0
        movx  @dptr, a        ; 关所有八段管
        clr   0d3h
        ret
LEDMAP:                       ; 八段管显示码
       db    3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
       db    7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h
ptds:	mov r1,a
	acall ptds1
	mov a,r1
	swap a
ptds1:	anl a,#0fh
	mov @r0,a
	dec r0
	ret
Delay1: mov r7,#03h
        sjmp  DelayLoop

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -