데이터를 처리하는 예제 프로그램 입니다.
;-----------------------------------------------------------------------------
; SAMPLE Electronics co. http://www.SAMPLE.co.kr
;
; ADC Two channel Test
;-----------------------------------------------------------------------------
; ADC Timming : Internal OSC 15 MHz Mode
;
;
; P1.0 ---++----------------++----------------++-----------------
; || || ||
; || || ||
; || || ||
; ++ ++ ++
; <--- 12.1 uSec --->
;
;
;-----------------------------------------------------------------------------
; 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
;-----------------------------------------------------------------------------
; ADC0_Init
;-----------------------------------------------------------------------------
; This routine initializes the ADC for left-justified mode
;
ADC0_Init: ;
clr ADCEN ; disable ADC
mov AMX0CF, #00h ; independent single-ended mode
mov REF0CN, #07h ; enable temp sensor, bias
; generator, and output buffer
mov ADC0CF, #01100000b ; ADC conversion clock = SYSCLK/8 for 18.432MHz
; GAIN = 1x
mov ADC0CN, #11000001b ; 6: Tracking starts with the write of 1 to
; ADBUSY and lasts for 3 SAR clocks
; 3-2: ADC conversion started upon every
; write of 1 to ADBUSY
setb ADCEN ; Enable ADC
;-----------------------------------------------------------------------------
; ADC test
;-----------------------------------------------------------------------------
adc_ch0: ; Chanel 0
mov AMX0SL, #00h ; Select AIN0 ADC input
;
;
clr ADCINT ; Clear pending conversion complete indicator
setb ADBUSY ; Initiate ADC conversion
jnb ADCINT, $ ; Wait for conversion complete
;
mov A, ADC0L ; Display Ain0 to P3:P1
orl A, #0FH ;
mov P1, A ;
mov P3, ADC0H ;
clr p1.0 ; Pluse Out
setb p1.0 ;
;-----------------------------------------------------------------------------
sjmp adc_ch1 ; Next chanel
;-----------------------------------------------------------------------------
adc_ch1: ; Chanel 1
mov AMX0SL, #01h ; Select AIN1 ADC input
;
clr ADCINT ; Clear pending conversion complete indicator
setb ADBUSY ; Initiate ADC conversion
jnb ADCINT, $ ; Wait for conversion complete
;
mov A, ADC0L ; Display Ain1 to P2:P0
orl A, #0FH ;
mov P0, A ;
mov P2, ADC0H ;
clr p1.0 ; Pulse Out
setb p1.0 ;
;-----------------------------------------------------------------------------
sjmp adc_ch0 ; Next chanel
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
; End of file.
END
회원에게만 댓글 작성 권한이 있습니다.