DAC를 사용할때 반드시 레지스터 REF0CN 에서 VREF에관한 설정을 하여야 합니다.
;-----------------------------------------------------------------------------
; SAMPLE Electronics co. http://www.SAMPLE.co.kr (02)707-3882
;
; DAC Test
;-----------------------------------------------------------------------------
; DAC 채널 0 과 1 에 톱니파형을 출력하는 예제프로그램 입니다.
; 내부 15 MHz 오실레이터 사용시
; DAC0 5 mSec, DAC1에 52 mSec 의 주기로 톱니 파형이 출력됩니다.
; DAC 프로그램 작성시 유의할점은 REF0CN 을 설정하여야 합니다.
; 그리고 DACxL 과 DACxH 의 순서로 데이터를 써넣어야 합니다.
;
; DAC0, DAC1 의 출력 파형
;
; /| /| /|
; / | / | / |
; / | / | / |
; / | / | / |
; / | / | / |
; / | / | / |
; / |/ |/ |
;
;
;-----------------------------------------------------------------------------
; EQUATES
;-----------------------------------------------------------------------------
$MOD8F000
;-----------------------------------------------------------------------------
; VARIABLES
;-----------------------------------------------------------------------------
; Indirect address space variables
;
ISEG at 80h ;
;
org 0e8h ; temporary forced STACK location
;
STACK_TOP: DS 1 ; beginning of hardware stack
;
;-----------------------------------------------------------------------------
; MACRO DEFINITIONS
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
; RESET AND INTERRUPT VECTOR TABLE
;-----------------------------------------------------------------------------
CSEG ;
org 00h ;
ljmp Main ;
;-----------------------------------------------------------------------------
; MAIN PROGRAM CODE
;-----------------------------------------------------------------------------
org 0B3h ;
Main: ;
mov WDTCN, #0deh ; disable watchdog timer
mov WDTCN, #0adh ;
;
; mov OSCICN, #00000100b ; Int OSC 1.9MHz
; mov OSCICN, #00000101b ; Int OSC 3.8MHz
; mov OSCICN, #00000110b ; Int OSC 7.5MHz
mov OSCICN, #00000111b ; Int OSC 15 MHz
;
mov SP, #STACK_TOP ; init stack pointer to end of allocated RAM
mov XBR2, #40h ; Enable crossbar and weak pull-ups
;-----------------------------------------------------------------------------
; Reference Control Register Set
;-----------------------------------------------------------------------------
;
mov REF0CN, #00000011b ; Internal Band-Gap On, Reference Buffer On
;-----------------------------------------------------------------------------
; DAC Initialize
;-----------------------------------------------------------------------------
mov DAC0CN, #10000000b ; The most significant nybble of DAC0
; Data Word is in DAC0H[3:0], while
; the least significant byte is in DAC0L
mov DAC1CN, #10000100b ; The most significant byte of the DAC1
; Data Word is in DAC1H, while the least
; significant nybble is in DAC1L[7:4].
;-----------------------------------------------------------------------------
dactest:
mov a, r0 ; Generate 16 Bit Saw tooth pulse
add a, #01h
mov r0, a
mov a, r1
addc a, #00h
mov r1, a
mov DAC0L, r0 ; Lower Byte
mov DAC0H, r1 ; High Byte
;
mov DAC1L, r0 ; Lower Byte
mov DAC1H, r1 ; High Byte
;
sjmp dactest
;-----------------------------------------------------------------------------
; End of file.
END
회원에게만 댓글 작성 권한이 있습니다.