?? da轉換.txt
字號:
; “驗證式” 實驗五 D/A轉換
;利用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 r0,#45h
mov 45h,a ;拆字后送顯示緩沖區
acall ptds
mov r6,#15h
dir10: acall display ;調用顯示子程序
djnz r6,dir10
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
cjne r5,#00h,loop3
sjmp loop1
Delay:
mov r7, #00
mov r3,#00 ; 延時子程序
DelayLoop:
djnz r3, 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, #01
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
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -